• Stars
    star
    202
  • Rank 193,691 (Top 4 %)
  • Language
    Dart
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Cross-language bindings generator for C++, Java, Swift, and Dart

Gluecodium Build Status Release

Gluecodium generates C++, Java, Swift, and Dart code. The main purpose is generating C++ interfaces and corresponding Java/Swift/Dart bindings for Android/iOS/Flutter respectively, but other platforms like macOS and Linux work as well. Once implemented in C++ the code can be used directly from Java/Swift/Dart, eliminating the need for writing conversions and bindings manually. To simplify use of platform specific functions, Gluecodium is also able to generate interfaces/protocols allowing use of Java/Swift/Dart implementations from C++.

Gluecodium logo

A few similar systems exist (e.g. Djinni and Swig). However, these systems are unable to generate bindings for modern languages like Swift or Dart.

Getting started

The easiest way to run Gluecodium is by using the Launcher tool. For a list of features and how to get started writing IDL, see User guide.

Building and testing

Outside of IntelliJ you can invoke the following Gradle tasks to build the entire project:

./gradlew build

Command line parameters

For information on Gluecodium command line parameters run it with "-help":

./generate -help

Options listed in the "-help" can also be passed in a file, using "-options " command line parameter. Options file follows ".properties" file format.

  • For command-line options with two names (short and long) the short name is used as a key in the file.
  • Boolean flags need to be specified with "true" value (e.g. "cache=true"). Specifying "false" for a Boolean flag is also possible but does nothing.

Caching of output files

Activation of caching feature in Gluecodium tool is done by passing the command line option, like:

./generate -cache -input <input folder> -output <output folder>

Running Gluecodium tool with this option will generate a directory called .cache inside <output folder> (regardless of -cache option, caching gets automatically deactivated in case no valid output directory is given). Inside this folder Gluecodium creates the cache index files (cpp, android and swift) which contain hash values of all output files written in current run by the corresponding generator. By utilizing the hash values, Gluecodium is able to prevent files from being overwritten with exact same content on subsequent runs.

Additionally, files written in former Gluecodium tool runs which are not generated in current run will be removed from built folder together with their cache entries.

They are two situations where all cache contents get automatically deleted:

  • If an error occurs while generating files (because then, consistency between hash values and file system cannot be guaranteed).
  • If Gluecodium gets started with disabled caching, but on a folder containing cache index files (Gluecodium might alter file contents of existing files or remove files etc. which could lead to inconsistent cache).

License

Copyright (C) 2016-2020 HERE Europe B.V.

See the LICENSE file in the root of this project for license details.

More Repositories

1

harp.gl

3D web map rendering engine written in TypeScript using three.js
TypeScript
1,284
star
2

pptk

The Point Processing Toolkit (pptk) is a Python package for visualizing and processing 2-d/3-d point clouds.
C++
613
star
3

tin-terrain

A command-line tool for converting heightmaps in GeoTIFF format into tiled optimized meshes.
C++
581
star
4

oksse

An extension library for OkHttp to create a Server-Sent Event (SSE) client.
Java
230
star
5

here-covid-19-tracker

Using HERE Technologies APIs, fork and build your own COVID-19 Tracker. For a live version, see the website.
JavaScript
212
star
6

maps-api-for-javascript-examples

Self-contained examples for Maps API for JavaScript v3.
JavaScript
196
star
7

quantized-mesh-viewer

Render custom quantized mesh tiles in Cesium.js and debug individual tiles using THREE.js renderer.
JavaScript
183
star
8

flatdata

Write-once, read-many, minimal overhead binary structured file format.
Python
179
star
9

here-sdk-examples

Android, iOS and Flutter example apps for the HERE SDK 4.x (Lite Edition, Explore Edition, Navigate Edition)
169
star
10

here-android-sdk-examples

Java-based projects using the HERE SDK for Android.
Java
145
star
11

postman-collections

Postman collections for HERE REST APIs.
133
star
12

flexible-polyline

Flexible Polyline encoding: a lossy compressed representation of a list of coordinate pairs or triples
Rust
91
star
13

devrel-workshops

Workshop in-a-box for developer events such as conferences, meetups, and hackathons.
JavaScript
69
star
14

xyz-hub

XYZ Hub is a RESTful web service for the access and management of geospatial data.
Java
65
star
15

here-icons

HERE icons are visual cues of objects, points, actions, and tools found across HERE products.
63
star
16

xyz-maps

XYZ Maps is an open-source map editor written in TypeScript.
TypeScript
60
star
17

here-ios-sdk-examples

Objective-C and Swift projects using the HERE SDK for iOS.
Objective-C
60
star
18

gradle-jenkins-jobdsl-plugin

A plugin for Gradle to manage Jenkins Job DSL projects.
Groovy
53
star
19

here-data-sdk-cpp

The HERE Data SDK for C++ is a modern, lightweight and modular SDK for the HERE platform
C++
51
star
20

msdkui-android

The HERE Mobile SDK UI Kit for Android provides ready-to-use UI components for the HERE Mobile SDK for Android.
Java
51
star
21

movetk

MoveTK is a library for computational movement analysis written in C++.
C++
47
star
22

xyz-documentation

This repository contains the Open Documentation for HERE XYZ.
45
star
23

here-sdk-ref-app-flutter

This project is the HERE SDK reference application for Flutter
Dart
44
star
24

xyz-showcase

Showcase of web maps made with HERE XYZ
HTML
43
star
25

quantized-mesh-decoder

JavaScript decoder for the Quantized Mesh format
JavaScript
40
star
26

here-cli

A command-line interface to work with HERE XYZ Hub and other HERE APIs
JavaScript
38
star
27

msdkui-ios

The HERE Mobile SDK UI Kit for iOS provides ready-to-use UI components for the HERE Mobile SDK for iOS.
Swift
38
star
28

here-map-widget-for-jupyter

Use HERE Maps API for JavaScript in your Jupyter Notebook.
JavaScript
36
star
29

here-data-sdk-typescript

The HERE Data SDK for TypeScript is a modern, lightweight and modular SDK for the HERE platform
TypeScript
32
star
30

harp-terrain-datasource

Render and style 3D terrain
JavaScript
31
star
31

xyz-spaces-python

Manage your XYZ Hub or HERE Data Hub spaces from Python.
Python
30
star
32

here-aws-sar

HERE Maps API for Serverless Application Repository
JavaScript
30
star
33

here-aaa-java-sdk

HERE Authentication, Authorization, and Accounting Java Client library.
Java
27
star
34

xyz-qgis-plugin

Plugin for QGIS to connect to the HERE Platform IML
Python
27
star
35

here-location-services-python

A Python client for HERE Location Services.
Python
27
star
36

bike-navigation

A companion device to use the HERE app on Android for bike navigation. Note: Not actively developed anymore!
C
26
star
37

here-workspace-examples-java-scala

HERE Workspace Examples for Java and Scala Developers
Java
26
star
38

here-sbt-bom

SBT BOM is the plugin for SBT for dealing with Maven BOM in SBT projects
Scala
19
star
39

jsfiddle-github

JSFiddle implementation for interactive JavaScript examples.
JavaScript
18
star
40

harp-leaflet

Leaflet plugin for harp.gl
TypeScript
17
star
41

here-tracking-js

JS library for accessing the HERE Tracking API
JavaScript
15
star
42

harp-map-editor

Simple map editor for harp.gl map styles
TypeScript
13
star
43

here-tracking-c

HERE Tracking Library for C
C
12
star
44

developer-blog

Examples and projects featured on the HERE developer blog.
JavaScript
11
star
45

here-vector-tile-examples

Examples of the HERE Vector Tile API with various 3rd party web map renderers
JavaScript
9
star
46

here-interactive-map-layer-examples

Use case examples for interactive map layers including geometry simplification, data sampling, clustering, and spatial/property search.
JavaScript
9
star
47

devrel-livestreams

Source code and resources related to the Developer Relations livestreams
HTML
8
star
48

here-artifact-maven-wagon

The HERE platform Maven Wagon plugin provides Java and Scala developers with access to platform artifacts via Maven
Java
7
star
49

here-azure-serverless

Azure Functions for HERE Location Services
JavaScript
6
star
50

harp-fontcatalog-generator

Generator to create fontcatalogs to be used by harp.gl
JavaScript
6
star
51

here-data-sdk-examples-python

Examples for HERE Data SDK for Python
Jupyter Notebook
6
star
52

com.here.validate.svrl.overrides

Shows how to add, remove or extend the ruleset of the base DITA Validator (com.here.validate.svrl).
XSLT
5
star
53

com.here.validate.svrl

A structure, style and content checker for DITA documents in the form of a DITA OT plug-in.
XSLT
5
star
54

saturate-nodes-plugin

A Jenkins plugin which allows to saturate nodes as much as possible
Java
5
star
55

heremaps.github.io

Landing page for all HERE OSS projects on GitHub
CSS
5
star
56

naksha

Naksha Hub is a RESTful web service for the access and management of geospatial data.
Java
5
star
57

deployment-api

A front-end for DC/OS service creation
Java
4
star
58

map-linkbuilder-app

A reference web application showcasing "deeplinking" to https://wego.here.com/.
JavaScript
3
star
59

here-polyline-converter

encode/decode/convert HERE legacy polyline strings
Python
3
star
60

com.here.validate.svrl.text-rules

Simple rule-based spelling and grammar validation DITA OT plug-in for text elements within DITA documents.
XSLT
3
star
61

homebrew-olp-cli

Use the Command Line Interface (CLI) to access HERE platform services from a command line or with scripts.
Ruby
3
star
62

harp-font-resources

Font catalog to use with the harp.gl renderer
TypeScript
3
star
63

buildrotator-plugin

A Jenkins plugin to perform rotation of build history with low memory pressure.
Java
3
star
64

dita-ot-plugins

This repository serves to organize a set of DITA OT plug-ins developed internally at HERE.
2
star
65

here-artifact-sbt-resolver

The HERE platform SBT Resolver plugin provides Java and Scala developers with access to platform artifacts via SBT
Scala
2
star
66

mobility-on-demand-use-cases-nodejs

HERE mobility on-demand demos written as NodeJS applications.
JavaScript
2
star
67

mobility-on-demand-use-cases-ios

HERE mobility on-demand demo written as an iOS application.
Objective-C
2
star
68

devrel-samples

JavaScript
1
star
69

fluentd-plugin

A Jenkins plugin which allows to publish json data directly to Fluentd.
Java
1
star