Read C++ enum in python
AggieDan04
danb_83 at yahoo.com
Wed Aug 19 02:17:55 EDT 2009
On Aug 18, 6:03 pm, Ludo
<olivier.anospamrnospamnnospamanospamenosp... at affaires.net> wrote:
> Hello,
>
> I work in a very large project where we have C++ packages and pieces of
> python code.
>
> I've been googleing for days but what I find seems really too
> complicated for what I want to do.
>
> My business is, in python, to read enum definitions provided by the
> header file of an c++ package.
> Of course I could open the .h file, read the enum and transcode it by
> hand into a .py file but the package is regularly updated and thus is
> the enum.
>
> My question is then simple : do we have :
> - either a simple way in python to read the .h file, retrieve the c++
> enum and provide an access to it in my python script
Try something like this:
file_data = open(filename).read()
# Remove comments and preprocessor directives
file_data = ' '.join(line.split('//')[0].split('#')[0] for line in
file_data.splitlines())
file_data = ' '.join(re.split(r'\/\*.*\*\/', file_data))
# Look for enums: In the first { } block after the keyword "enum"
enums = [text.split('{')[1].split('}')[0] for text in re.split(r'\benum
\b', file_data)[1:]]
for enum in enums:
last_value = -1
for enum_name in enum.split(','):
if '=' in enum_name:
enum_name, enum_value = enum_name.split('=')
enum_value = int(enum_value, 0)
else:
enum_value = last_value + 1
last_value = enum_value
enum_name = enum_name.strip()
print '%s = %d' % (enum_name, enum_value)
print
More information about the Python-list
mailing list