[CastXML] how to print the exact same declaration as in the header ?

Michka Popoff michkapopoff at gmail.com
Tue Jul 26 18:10:11 EDT 2016


> On 25 Jul 2016, at 17:58, Matt <mattator at gmail.com> wrote:
> 
>> I am not sure there is any test for what you want to achieve. Maybe we
>> should
>> first write a minimal c++/c code example, demonstrating the problem.
>> There is a test called “unittests/plain_c_tester.py”, which is probably the
>> only C-things  pygccxml supports.
> I don't see anything specific to C in this script ?!

The plain_c.c file that is parsed contains C code. I did not read the test
in detail though, maybe it does not do what I think. I’ll need to investigate further.

> I would like to see how does pygccxml invoke castxml and then how
> castxml invokes libclang etc... I've tried configuring the XML
> generator with cflags="-nostdinc -I/usr/include" and would like to
> make sure those flags are passed on.

You will see the exact command line by setting:
utils.loggers.set_level(logging.DEBUG)

> 
> Also I don't know if it's linked but I want my script to find where
> the function "sigaction" is declared (I want the /usr/include/signal.h
> declaration). I search with:
> `criteria = declarations.calldef_matcher(name=row["name"])`
> but right now pygccxml/castxml returns the structure in
> /usr/include/x86_64-linux-gnu/bits/sigaction.h (which shouldn't be
> resolved as calldef IMO). Is it correct ?

I saw that you opened a separate issue for that one, we will continue that specific
discussion there: https://github.com/gccxml/pygccxml/issues/62 <https://github.com/gccxml/pygccxml/issues/62>

Could you please open an issue for your initial problem too ?
I will not be able to tackle all the problems at once,
so it is better to keep that documented in the bug tracker.

Thanks

Michka


> 
> Thanks for your help :)
> 
> 
>> Cheers
>> 
>> Michka
>> 
>> 
>> 
>> 2016-07-22 16:21 GMT+02:00 Michka Popoff <michkapopoff at gmail.com>:
>> 
>> Hi
>> 
>> thanks for the nice comments.
>> 
>> Using print on declarations in pygccxml is a nice way to debug you code,
>> but often you may not want to rely on the __str__ implementation in you real
>> code.
>> 
>> The output of the __str__ method may vary depending on you compiler /
>> platform / code,
>> and I can not guarantee that this will work in a reliable way in all the
>> situations.
>> This is something I may add to the documentation; __str__ is for debugging
>> purposes only.
>> 
>> It is probably better to build the string you want by using the .name,
>> .return_type,
>> .arguments ... attributes. This is often more flexible, and also more
>> performant,
>> as you select only the things that you are interested in.
>> 
>> Cheers
>> 
>> Michka
>> 
>> 
>> On 22 Jul 2016, at 16:10, Matt <mattator at gmail.com> wrote:
>> 
>> I found the code in declarations/free_calldef.py and hacked it
>> locally, I might copy/paste the code in my script later then.
>> 
>> Sorry for the noise
>> 
>> 2016-07-22 15:36 GMT+02:00 Matt <mattator at gmail.com>:
>> 
>> Hi,
>> 
>> I've just started with pygccxml/castxml and I must admit it's quite
>> impressive: doc/examples and worked straightout of the box.
>> 
>> I want to use pygccxml to generate wrapper functions around glibc
>> functions. I can't use LD_PRELOAD or --wrap techniques so I have to
>> copy/paste the declarations of these functions which is a pain.
>> I am trying to automate this copy/paste via pygccxml.
>> 
>> So far, I have:
>> ==
>> func1a = global_namespace.free_function(name="printf")
>> print(func1a)
>> ==
>> which output:
>> extern int printf(__restrict__ char const * __format, ...) [free function]
>> is very near to what I want:
>> extern int printf(__restrict__ char const * __format, ...)
>> 
>> I have done dir(func1a) to see which members I could use and grepped
>> for __str__ to see the magic but miserably fail to find the location.
>> How could I output the same declaration as in the header please ?
>> 
>> 
>> Cheers
>> 
>> Nb: In the list of  programs using pygccxml you could add www.nsnam.org
>> 
>> _______________________________________________
>> CastXML mailing list
>> CastXML at public.kitware.com
>> http://public.kitware.com/mailman/listinfo/castxml
>> 
>> 
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/castxml/attachments/20160727/96af7986/attachment.html>


More information about the CastXML mailing list