diff options
| author | Frederic Peters <fpeters@entrouvert.com> | 2008-04-29 12:01:02 +0000 |
|---|---|---|
| committer | Frederic Peters <fpeters@entrouvert.com> | 2008-04-29 12:01:02 +0000 |
| commit | ce4e1312d774f690793a42aad4837d6b0e2a62d4 (patch) | |
| tree | 7779d35b7d0ae395e4cd78d2993bbc36c4615ec3 | |
| parent | 5b1a266350c541aa9bdd3d29e029de2821eb9138 (diff) | |
[project @ fpeters@0d.be-20071004204927-6j2np9wflrp15tt4]
get struct members
Original author: Frederic Peters <fpeters@0d.be>
Date: 2007-10-04 22:49:27.981000+02:00
| -rw-r--r-- | bindings/t.py | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/bindings/t.py b/bindings/t.py index 6a3bea17..9f2f2054 100644 --- a/bindings/t.py +++ b/bindings/t.py @@ -10,15 +10,18 @@ struct_names = {} class Struct: def __init__(self, name): self.name = name + self.parent = None + self.members = [] def __repr__(self): - return '<Struct name:%s>' % self.name + return '<Struct name:%s, childof:%s>' % (self.name, self.parent) def parse(header_file): in_comment = False in_enum = False in_struct = None + in_struct_private = False content = file(header_file).read().replace('\\\n', ' ') for line in content.splitlines(): @@ -71,6 +74,7 @@ def parse(header_file): if not struct_name in struct_names: continue in_struct = Struct(struct_name) + in_struct_private = False continue if in_struct: @@ -79,6 +83,30 @@ def parse(header_file): in_struct = None continue + if '/*< public >*/' in line: + in_struct_private = False + continue + + if '/*< private >*/' in line: + in_struct_private = True + continue + + if in_struct_private: + continue + + member_match = re.match('\s+(\w+)\s+(\*?\w+)', line) + if member_match: + member_type = member_match.group(1) + member_name = member_match.group(2) + if member_name == 'parent': + in_struct.parent = member_type + else: + in_struct.members.append((member_type, member_name)) + continue + + continue + + for base, dirnames, filenames in os.walk('../lasso/'): if base.endswith('/.svn'): @@ -95,6 +123,12 @@ for base, dirnames, filenames in os.walk('../lasso/'): parse(os.path.join(base, filename)) -import pprint -pprint.pprint(structs) +def display_structs(): + for struct in structs: + print struct + for m in struct.members: + print ' ', m +import pprint +pprint.pprint(constants) +display_structs() |
