@six33/h3-reactnative
Version:
React Native version of the H3 library, a hexagon-based geographic grid system
113 lines (105 loc) • 5.19 kB
JavaScript
;
/*
* Copyright 2018-2019 Uber Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Define the C bindings for the h3 library
// Add some aliases to make the function definitions more intelligible
const NUMBER = 'number';
const BOOLEAN = NUMBER;
const H3_LOWER = NUMBER;
const H3_UPPER = NUMBER;
const RESOLUTION = NUMBER;
const POINTER = NUMBER;
// Define the bindings to functions in the C lib. Functions are defined as
// [name, return type, [arg types]]. You must run `npm run build-emscripten`
// before new functions added here will be available.
var BINDINGS = [
// The size functions are inserted via build/sizes.h
['sizeOfH3Index', NUMBER],
['sizeOfGeoCoord', NUMBER],
['sizeOfGeoBoundary', NUMBER],
['sizeOfGeoPolygon', NUMBER],
['sizeOfGeofence', NUMBER],
['sizeOfLinkedGeoPolygon', NUMBER],
['sizeOfCoordIJ', NUMBER],
// The remaining functions are defined in the core lib in h3Api.h
['h3IsValid', BOOLEAN, [H3_LOWER, H3_UPPER]],
['geoToH3', H3_LOWER, [NUMBER, NUMBER, RESOLUTION]],
['h3ToGeo', null, [H3_LOWER, H3_UPPER, POINTER]],
['h3ToGeoBoundary', null, [H3_LOWER, H3_UPPER, POINTER]],
['maxKringSize', NUMBER, [NUMBER]],
['kRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]],
['kRingDistances', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER, POINTER]],
['hexRing', null, [H3_LOWER, H3_UPPER, NUMBER, POINTER]],
['maxPolyfillSize', NUMBER, [POINTER, RESOLUTION]],
['polyfill', null, [POINTER, RESOLUTION, POINTER]],
['h3SetToLinkedGeo', null, [POINTER, NUMBER, POINTER]],
['destroyLinkedPolygon', null, [POINTER]],
['compact', NUMBER, [POINTER, POINTER, NUMBER]],
['uncompact', NUMBER, [POINTER, NUMBER, POINTER, NUMBER, RESOLUTION]],
['maxUncompactSize', NUMBER, [POINTER, NUMBER, RESOLUTION]],
['h3IsPentagon', BOOLEAN, [H3_LOWER, H3_UPPER]],
['h3IsResClassIII', BOOLEAN, [H3_LOWER, H3_UPPER]],
['h3GetBaseCell', NUMBER, [H3_LOWER, H3_UPPER]],
['maxFaceCount', NUMBER, [H3_LOWER, H3_UPPER]],
['h3GetFaces', null, [H3_LOWER, H3_UPPER, POINTER]],
['h3ToParent', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]],
['h3ToChildren', null, [H3_LOWER, H3_UPPER, RESOLUTION, POINTER]],
['h3ToCenterChild', H3_LOWER, [H3_LOWER, H3_UPPER, RESOLUTION]],
['maxH3ToChildrenSize', NUMBER, [H3_LOWER, H3_UPPER, RESOLUTION]],
['h3IndexesAreNeighbors', BOOLEAN, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],
['getH3UnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],
['getOriginH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]],
['getDestinationH3IndexFromUnidirectionalEdge', H3_LOWER, [H3_LOWER, H3_UPPER]],
['h3UnidirectionalEdgeIsValid', BOOLEAN, [H3_LOWER, H3_UPPER]],
['getH3IndexesFromUnidirectionalEdge', null, [H3_LOWER, H3_UPPER, POINTER]],
['getH3UnidirectionalEdgesFromHexagon', null, [H3_LOWER, H3_UPPER, POINTER]],
['getH3UnidirectionalEdgeBoundary', null, [H3_LOWER, H3_UPPER, POINTER]],
['h3Distance', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],
['h3Line', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]],
['h3LineSize', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER]],
['experimentalH3ToLocalIj', NUMBER, [H3_LOWER, H3_UPPER, H3_LOWER, H3_UPPER, POINTER]],
['experimentalLocalIjToH3', NUMBER, [H3_LOWER, H3_UPPER, POINTER, POINTER]],
['hexAreaM2', NUMBER, [RESOLUTION]],
['hexAreaKm2', NUMBER, [RESOLUTION]],
['edgeLengthM', NUMBER, [RESOLUTION]],
['edgeLengthKm', NUMBER, [RESOLUTION]],
['numHexagons', NUMBER, [RESOLUTION]],
['getRes0Indexes', null, [POINTER]],
['res0IndexCount', NUMBER],
['getPentagonIndexes', null, [NUMBER, POINTER]],
['pentagonIndexCount', NUMBER]
];
/*
* Copyright 2018-2019 Uber Technologies, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const bindingNames = BINDINGS
// The _ prefix here is required for references in the built code
.map(def => `_${def[0]}`)
// Add core C functions required by the lib
.concat(['_malloc', '_calloc']);
console.log(JSON.stringify(bindingNames));