p≡p Abstract C Interface Description Generator. Featuring a pyBind11 backend using yml2.
 
 
Go to file
heck 5aea5d8074 gen_pybind11: methods add py_arg, add docstrings. 2021-02-14 22:15:42 +01:00
examples correct gen-config 2021-02-10 21:57:06 +01:00
pEpACIDgen gen_pybind11: methods add py_arg, add docstrings. 2021-02-14 22:15:42 +01:00
tests update for CS (no APSs) 2021-02-05 17:08:05 +01:00
.editorconfig .editorconfig more filetype specifics 2020-10-20 13:12:31 +02:00
.gitignore gitignore 2021-02-10 21:55:12 +01:00
AUTHORS.txt pEpACIDgen - INITIAL COMMIT 2021-01-12 15:38:57 +01:00
LICENSE.txt adding LICENSE.txt - this adapter is under the GNU Affero General Public License 2016-08-07 15:59:13 +02:00
MANIFEST.in pEpACIDgen - INITIAL COMMIT 2021-01-12 15:38:57 +01:00
Makefile name the venvs, so you know which one you are in. 2021-01-27 16:49:13 +01:00
README yeaaah! 2021-01-24 01:26:04 +01:00
pyproject.toml pEpACIDgen - INITIAL COMMIT 2021-01-12 15:38:57 +01:00
setup.cfg pEpACIDgen - INITIAL COMMIT 2021-01-12 15:38:57 +01:00
setup.py pEpACIDgen - INITIAL COMMIT 2021-01-12 15:38:57 +01:00

README

██▓███  ▓█████  ██▓███   ▄▄▄       ▄████▄   ██▓▓█████▄   ▄████ ▓█████  ███▄    █
▓██░  ██▒▓█   ▀ ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██▒▒██▀ ██▌ ██▒ ▀█▒▓█   ▀  ██ ▀█   █
▓██░ ██▓▒▒███   ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▒░██   █▌▒██░▄▄▄░▒███   ▓██  ▀█ ██▒
▒██▄█▓▒ ▒▒▓█  ▄ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░██░░▓█▄   ▌░▓█  ██▓▒▓█  ▄ ▓██▒  ▐▌██▒
▒██▒ ░  ░░▒████▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░██░░▒████▓ ░▒▓███▀▒░▒████▒▒██░   ▓██░
▒▓▒░ ░  ░░░ ▒░ ░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░░▓   ▒▒▓  ▒  ░▒   ▒ ░░ ▒░ ░░ ▒░   ▒ ▒
░▒ ░      ░ ░  ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░ ░ ▒  ▒   ░   ░  ░ ░  ░░ ░░   ░ ▒░
░░          ░   ░░         ░   ▒   ░         ▒ ░ ░ ░  ░ ░ ░   ░    ░      ░   ░ ░
░  ░               ░  ░░ ░       ░     ░          ░    ░  ░         ░
░             ░                                

pEpACIDgen
==========
       
pEpACIDgen stands for "pEp Abstract C Interface Description Generator"

pEpACIDgen generates an Abstract C Interface Defintion file (json or yml2) given the inputs:
* headerfile
* list of function names needed
* list of var names needed

The generator searches each function/var in the headerfile (recursively) and collects all the
types needed (var type, return type, parm types).   
As structs can contain further types, these dependent types need to be collected
recursively.   
Finally, all the collected types will be resolved to their final underlying type.
If a type is primitive, nothing needs to be done, cause its already defined.
But types of typekind struct or enum need to be defined.
Their definition will be searched for in the headerfile and included in the interface definition
The ACID file (yml2) contains all the information needed to represent:
* functions
* vars
* structs
* enums

well enough so they can be expressed in pyBind11.   
use "pyBind11-CID" to generate the pyBind11 code out of the ACID file.