GithubHelp home page GithubHelp logo

preprocessor defines about castxml HOT 5 CLOSED

castxml avatar castxml commented on July 3, 2024
preprocessor defines

from castxml.

Comments (5)

vl409 avatar vl409 commented on July 3, 2024 1

I'd like to also request this feature.
Why do we need it?
For example, I'm trying to create openSSL library binding to some scripting language using FFI.
CastXML is really helpful in getting all types informations and functions declaration.
The problem is that big part of openSSL interface is defined by macros.
The simplest example is defines, tons of them:

# define EVP_PKEY_OP_PARAMGEN            (1<<1)                                 
# define EVP_PKEY_OP_KEYGEN              (1<<2)
....
# define EVP_PKEY_OP_TYPE_SIG    \                                              
        (EVP_PKEY_OP_SIGN | EVP_PKEY_OP_VERIFY | EVP_PKEY_OP_VERIFYRECOVER \    
                | EVP_PKEY_OP_SIGNCTX | EVP_PKEY_OP_VERIFYCTX)  

Many function names are auto-generated.

So, you read documentation that tells you to call function foo(), but it is not in list,
generated from XML. Or you have to pass some constant to known function...
You have to inspect headers and blame library authors
who use macros. But the reality is such that it is too common to use preprocessor.

I understand that there is not much we can do about it, but some attempt to extract
at least constants would be nice.

from castxml.

bradking avatar bradking commented on July 3, 2024

One may run castxml -E -dD src.cpp or castxml -E -dM src.cpp to see preprocessor definitions, but they don't go in the xml output.

Currently the only option for generating xml output is --castxml-gccxml that is intended to produce output close to that of our predecessor, gccxml. The gccxml output does not include anything about preprocessor definitions. If we were to start adding information that gccxml did not provide then we would need to introduce a new output option to request such an alternative format. That is beyond our goals at this stage of the project, but discussion for future directions is still worthwhile.

The generated xml is declarative and unordered. Preprocessor definitions change while processing a translation unit. At what point should they be considered? What kind of definitions are of interest?

from castxml.

 avatar commented on July 3, 2024

Right. Well, the goal is to automate the generation of bindings, and some headers are riddled with preprocessor directives.

from castxml.

bradking avatar bradking commented on July 3, 2024

Please provide a concrete example of what you have in mind.

from castxml.

rprzybyla-invn avatar rprzybyla-invn commented on July 3, 2024

I'm also using CastXML (through the library pycstruct) to read a header file that defines a C struct for a shared memory interface to hardware. The C struct has several bitfields to save space in the struct, but in order to access those fields one must manually copy the #define statements to the python environment that I am using, or find some other solution.

from castxml.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.