PDIC 
PDIC: (IDL) Transpiler Source-to-source compiler C/C++ to YAML Portable Data Interface Description
Project related to PDI
From C/C++ to Yaml Description
| Simple binary | Python library |
|---|---|
| static binary | Python 3 |
./pdic file.c |
import pdic; result:str = pdic.files_to_pdi() |
Instalation
Binary
cmake -S . -DBINARY:BOOL=ON -B build && cmake --build build -- -j `nproc`
Google Test
cmake -S . -DTEST:BOOL=ON -B build && cmake --build build -- -j `nproc`
cd build && ctest
Python
python setup.py build -G "Unix Makefiles"
python3 setup.py bdist_wheel -G "Unix Makefiles" -j `nproc`
python setup.py build_ext -G "Unix Makefiles" --inplace -j `nproc`
pytest
Usage
#pragma pdi on
typedef struct Var8
{
#pragma pdi type : int64
int my_int;
char char_tab[20];
char my_char;
} var;
#pragma pdi size:[42]
int **array_of_pointer_of_array[21];
var my_var;
#pragma pdi off
Will be see and describe as follow
structs:
Var8:
type: record
name: Var8
alias: [var]
fieldsize: 3
buffersize: 28
packed: false
members:
char_tab: { type: array, subtype: char, size: 20 }
my_char:
offset: 24
type: char
my_int:
type: int64
data:
array_of_pointer_of_array: { type: array, subtype: { type: pointer, subtype: { type: array, subtype: int, size: 42 } }, size: 21 }
my_var:
type: record
name: Var8
alias: [var]
fieldsize: 3
buffersize: 28
packed: false
members:
char_tab: { type: array, subtype: char, size: 20 }
my_char:
offset: 24
type: char
my_int:
type: int64
Python Usage
import os
import pathlib
import yaml
import pdic
here = pathlib.Path(__file__).parent.resolve()
# pip show -f pdic
if __name__ == "__main__":
pdi_yml_description: str = pdic.files_to_pdi([os.path.join(here, "level_1.c"),
os.path.join(here, "level_2.c")])
print(pdi_yml_description)
print(yaml.dump(yaml.load(pdi_yml_description)))
Index
- Abstract
- Usage
- Developpement
- Code
- Documentation
- Test
- Deploy
- Links
- Autre Documentation
- Biblio
- Code example
- Extra
- Clang LLVM
- Mind Map
- Graph
- UML
- Contact / Credits
Credits
Barre Kevin neudinger (Software Scientist)
CEA pdi team
Metadata
Release files for pdic 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pdic-0.0.2-cp39-cp39-manylinux2010_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.12+ x86-64 | Details |
| pdic-0.0.2-cp39-cp39-manylinux1_x86_64.whl | CPython 3.9 | CPython 3.9 | Linux glibc 2.5+ x86-64 | Details |
Total release size: 17.8 MB
Release files / pdic-0.0.2-cp39-cp39-manylinux2010_x86_64.whl
| Download URL | pdic-0.0.2-cp39-cp39-manylinux2010_x86_64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.9 Linux glibc 2.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
b98d3d2e601a0dc3895208639baaa1df32a8047a95852ce61a6234c58bb74750
|
|
BLAKE2b-256 checksum How to use checksums |
b1200f8bceff92e0c928a779e7029e5ece4d4e127c7a280570534a5245305020
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6
|
Release files / pdic-0.0.2-cp39-cp39-manylinux1_x86_64.whl
| Download URL | pdic-0.0.2-cp39-cp39-manylinux1_x86_64.whl |
|---|---|
| Size | 8.9 MB |
| Tags | CPython 3.9 Linux glibc 2.5+ x86-64 |
|
SHA-256 checksum How to use checksums |
c7559c1ba4234ea3eec79c3efc049764621007248077d54e89ef44af422c46f4
|
|
BLAKE2b-256 checksum How to use checksums |
bffdd1a16739ddfdba7469caba1b1baa5ab5880b3b3cae544212042995db7b25
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.1 CPython/3.9.6
|
Security for pdic 0.0.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.