{"id":13548691,"url":"https://github.com/heremaps/gluecodium","last_synced_at":"2025-04-12T19:48:52.151Z","repository":{"id":36957224,"uuid":"139735719","full_name":"heremaps/gluecodium","owner":"heremaps","description":"Cross-language bindings generator for C++, Java, Swift, and Dart","archived":false,"fork":false,"pushed_at":"2025-04-09T12:35:17.000Z","size":29439,"stargazers_count":221,"open_issues_count":39,"forks_count":27,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-12T19:48:35.050Z","etag":null,"topics":["android","code-generator","cpp","dart","glue-code","ios","java","swift"],"latest_commit_sha":null,"homepage":"","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/heremaps.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":".github/CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":".github/SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-07-04T14:55:33.000Z","updated_at":"2025-03-31T11:24:54.000Z","dependencies_parsed_at":"2023-01-17T08:15:55.667Z","dependency_job_id":"17449d54-1660-45e9-9145-56675781cacf","html_url":"https://github.com/heremaps/gluecodium","commit_stats":null,"previous_names":[],"tags_count":334,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heremaps%2Fgluecodium","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heremaps%2Fgluecodium/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heremaps%2Fgluecodium/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/heremaps%2Fgluecodium/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/heremaps","download_url":"https://codeload.github.com/heremaps/gluecodium/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625501,"owners_count":21135513,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","code-generator","cpp","dart","glue-code","ios","java","swift"],"created_at":"2024-08-01T12:01:13.288Z","updated_at":"2025-04-12T19:48:52.091Z","avatar_url":"https://github.com/heremaps.png","language":"Dart","readme":"# Gluecodium [![Unit tests](https://github.com/heremaps/gluecodium/actions/workflows/unit-tests.yml/badge.svg)](https://github.com/heremaps/gluecodium/actions/workflows/unit-tests.yml)[![Functional tests](https://github.com/heremaps/gluecodium/actions/workflows/functional-tests.yml/badge.svg)](https://github.com/heremaps/gluecodium/actions/workflows/functional-tests.yml) [![Release](https://jitpack.io/v/heremaps/gluecodium.svg)](https://jitpack.io/#heremaps/gluecodium)\n\nGluecodium **generates C++, Java**, **Swift**, and **Dart** code. The main purpose is generating C++ interfaces and\ncorresponding Java/Swift/Dart bindings for **Android**/**iOS**/**Flutter** respectively, but other platforms like **macOS**\nand **Linux** work as well. Once implemented in C++ the code can be used directly from Java/Swift/Dart,\neliminating the need for writing conversions and bindings manually.\nTo simplify use of platform specific functions, Gluecodium is also able to generate interfaces/protocols\nallowing use of Java/Swift/Dart implementations from C++.\n\n![Gluecodium logo](docs/logo.svg)\n\nA few similar systems exist (e.g. Djinni and Swig). However, these systems are unable to generate\nbindings for modern languages like Swift or Dart.\n\n## Getting started\n\nThe easiest way to run Gluecodium is by using the [Launcher tool](tools/README.md).\nFor a list of features and how to get started writing IDL, see [User guide](./docs/guide.md).\n\n## Building and testing\nOutside of IntelliJ you can invoke the following Gradle tasks to build\nthe entire project:\n\n```bash\n./gradlew build\n```\n\n## Command line parameters\nFor information on Gluecodium command line parameters run it with \"-help\":\n\n```bash\n./generate -help\n```\n\nOptions listed in the \"-help\" can also be passed in a file, using \"-options \u003cfile-name\u003e\" command\nline parameter. Options file follows [\".properties\" file format](https://en.wikipedia.org/wiki/.properties).\n* For command-line options with two names (short and long) the short name is used as a key in the\nfile.\n* Boolean flags need to be specified with \"true\" value (e.g. \"cache=true\"). Specifying \"false\" for a\nBoolean flag is also possible but does nothing.\n\n## Caching of output files\nActivation of caching feature in Gluecodium tool is done by passing the command line option, like:\n\n```bash\n./generate -cache -input \u003cinput folder\u003e -output \u003coutput folder\u003e\n```\n\nRunning Gluecodium tool with this option will generate a directory called `.cache` inside `\u003coutput folder\u003e`\n(regardless of `-cache` option, caching gets automatically deactivated in case no valid output\ndirectory is given). Inside this folder Gluecodium creates the cache index files (`cpp`, `android` and\n`swift`) which contain hash values of all output files written in current run by the corresponding\ngenerator. By utilizing the hash values, Gluecodium is able to prevent files from being overwritten\nwith exact same content on subsequent runs.\n\nAdditionally, files written in former Gluecodium tool runs which are not generated in current run will be\nremoved from built folder together with their cache entries.\n\nThey are two situations where all cache contents get automatically deleted:\n\n* If an error occurs while generating files (because then, consistency between hash values and file\nsystem cannot be guaranteed).\n* If Gluecodium gets started with disabled caching, but on a folder containing cache index files\n(Gluecodium might alter file contents of existing files or remove files etc. which could lead to\ninconsistent cache).\n\n## License\n\nCopyright (C) 2016-2025 HERE Europe B.V.\n\nSee the [LICENSE](./LICENSE) file in the root of this project for license details.\n","funding_links":[],"categories":["Dart"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheremaps%2Fgluecodium","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheremaps%2Fgluecodium","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheremaps%2Fgluecodium/lists"}