Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/TechMagister/bindgencr
Generator of binding for the crystal language, based on castxml output.
https://github.com/TechMagister/bindgencr
Last synced: 30 days ago
JSON representation
Generator of binding for the crystal language, based on castxml output.
- Host: GitHub
- URL: https://github.com/TechMagister/bindgencr
- Owner: TechMagister
- License: mit
- Archived: true
- Created: 2016-06-26T19:29:34.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-08-03T17:25:58.000Z (over 7 years ago)
- Last Synced: 2024-08-03T17:14:26.807Z (4 months ago)
- Language: Crystal
- Size: 1.11 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-crystal - bindgencr - Generator of bindings based on castxml output (Project Generators)
README
# bindgencr
Little program to generate crystal binding file for C libraries.
see also [crystal-lang/crystal_lib](https://github.com/crystal-lang/crystal_lib)
## Installation
- Install CastXML : https://github.com/CastXML/CastXML
- Clone this repository and enter the project folder
- `$ crystal build --release src/bindgencr.cr`## Usage
Not yet complete, but can still generate the binding for sqlite3 and json-c ( perhaps some others )
```castxml --castxml-gccxml [HEADER] -o [OUTPUT XML FILE]```
```
bindgencr filename.xml [-n LibName] [-l linkedlib ] [--no-prefix=prefix_]Usage:
bindgencr [argument] [flags]Example:
bindgencr json.xml -l json-c -n LibJsonCFlags:
-h, --help Show this help
-n, --name=NAME The module name ( lib [name] )
-l, --link=LINK The library to link with (@[Link([link]) directive
--no-prefix Remove the functions prefix
```It will print the result to stdout for now
See spec and samples folder to see what can be done for now.
## Development
TODO:
- [x] Generate basic structure
- [x] Generate simple types, pointers and struct
- [x] Render functions declarations in context
- [x] Add function pointer
- [x] Add arrays
- [x] Add CvQualifiedType
- [x] Add Union
- [x] Add Enumeration
- [x] Add pointer of callback
- [ ] More and more### Samples
Samples are generated and used using those lines :
#### Sqlite3
```
castxml --castxml-gccxml /usr/include/sqlite3.h -o samples/sqlite3/libsqlite3.xml
crystal run src/bindgencr.cr -- samples/sqlite3/libsqlite3.xml -l sqlite3 -n LibSqlite3 > samples/sqlite3/lib_sqlite3.cr
crystal run samples/sqlite3/main.cr
```#### Json-c
```
castxml --castxml-gccxml /usr/include/json-c/json.h -o samples/jsonc/json.xml
crystal run src/bindgencr.cr -- samples/jsonc/json.xml -l json-c -n LibJsonC > samples/jsonc/lib_jsonc.cr
crystal run samples/jsonc/main.cr
```## Contributing
1. Fork it ( https://github.com/TechMagister/bindgencr/fork )
2. Create your feature branch (git checkout -b my-new-feature)
3. Commit your changes (git commit -am 'Add some feature')
4. Push to the branch (git push origin my-new-feature)
5. Create a new Pull Request## Contributors
- TechMagister(https://github.com/TechMagister) Arnaud Fernandés - creator, maintainer
- [tzekid](https://github.com/tzekid) Mircea Ilie Ploscaru - maintainer