summaryrefslogtreecommitdiffhomepage
path: root/Readme.mdown
blob: 06d29bfc291c2fa9b507829fd4bec2e6c8b3cb8d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
![FelBind](https://github.com/realtradam/FelBind/blob/master/logos/felbind-logo-text.png?raw=true)

[![MIT License](https://img.shields.io/github/license/realtradam/felbind?style=flat)](https://github.com/realtradam/FelBind/blob/master/LICENSE)
[![Ko-Fi](https://img.shields.io/static/v1?message=Buy%20me%20a%20coffee&logo=kofi&labelColor=ff5e5b&color=434B57&logoColor=white&label=%20)](https://ko-fi.com/tradam)


A binding assistant and generator for C/C++ to mruby(Under heavy WIP)

	---

### How I plan for it to work:

1. Run the scanner which will generate a glue.json file. This json file will contain all functions(and their params) as well as all structs(and their params)
	2. Create a configuration file where you can reference specific functions and how you want their bindings to be generated differently
	- for example, under what module or class a function should belong
	- if a certain param should use self instead of passing in something
	- ignore some functions if you dont need them
	- insert bindings you made yourself
	3. Run the generator with the configuration file - this generates the resulting binding code

#### Todo:

	- [X] parse C files for function and struct declarations
	- [X] plan for DSL for configuration file
	- [ ] create generator's default output
	- [X] phase 1 - bind returnless, paramless functions
	- [X] phase 2 - bind standard type return functions(e.g string or int), but still paramless
	- bool
	- int
	- float
	- double
	- string
	- [X] phase 3 - bind standard type return or params
- [X] phase 4 - bind struct construction(returning struct objects)
	- [X] returning structs
	- [X] accessors for values inside structs
	- [X] bind struct initializer
	- [ ] phase 5 - bind remaining struct related things
	- [ ] struct as params of functions
	- [ ] fix structs inside of structs
	- [ ] for initilization
	- [ ] for accessors
	- [ ] clean up code
	- [ ] have generator use config DSL file to customize bindings
	- [ ] do it all again for C++