Roman Yakovenko <roman.yakove...@gmail.com> writes:
> On Tue, Dec 15, 2009 at 12:35 AM, Nikolaus Rath <nikol...@rath.org> wrote:
>> Roman Yakovenko <roman.yakove...@gmail.com> writes:
>>>> Certainly all the exported symbols should already be available from
>>>> parsing the header file... Is it possible to omit the symbols file
>>>> and generate code based only on the headers?
>>>
>>> I don't think so( it didn't worked in my use case ) but you can try.
>>> Start to comment out code in ctypes_builder.py and post the result :-)
>>
>> I looked into the xml file created by gccxml and (at least in the case
>> of C code) it seems to contain all the information that's needed.
>>
>> I modified parsers.py to return an empty dict if no symbols_file is
>> provided:
>>
>> def merge_information( global_ns, fname, runs_under_unittest=False ):
>>    """high level function - select the appropriate binary file parser and 
>> integrates
>>    the information from the file to the declarations tree. """
>>    if fname is None:
>>        return dict()
>>
>>
>> this seems to work partially. I can still export all the struct's, but I
>> no longer get any function exports. I can mark them as to be exported
>> without any error, but they don't show up in the generated code.
>>
>> Any idea?
>
> Yes. Py++ thinks that those functions are "private" and doesn't export
> them. You should dig father ( creators_factory/ctypes_creator.py ).

Ah, I think I'm beginning to understand the complexity. I have modified
the code so that it assumes that every defined function is also
exported:

def merge_information( global_ns, fname, runs_under_unittest=False ):
    """high level function - select the appropriate binary file parser and 
integrates
    the information from the file to the declarations tree. """
    
    # If there is no shared library available for parsing, we just assume
    # that all functions have been exported.
    if fname is None:
        return dict([ [f.name, f] for f in global_ns.calldefs() ])

but this actually includes lots of irrelevant stuff coming from other
included headers. You are right, parsing the actual shared library is
probably a good thing(tm).

I will concentrate on finding a good way to determine the path of a
shared library instead. At least under linux, it seems to be a good way
to parse the 'ldconfig -p' output...

Best,


   -Nikolaus

-- 
 »Time flies like an arrow, fruit flies like a Banana.«

  PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6  02CF A9AD B7F8 AE4E 425C

_______________________________________________
Cplusplus-sig mailing list
Cplusplus-sig@python.org
http://mail.python.org/mailman/listinfo/cplusplus-sig

Reply via email to