summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFrederic Peters <fpeters@entrouvert.com>2008-04-29 12:01:02 +0000
committerFrederic Peters <fpeters@entrouvert.com>2008-04-29 12:01:02 +0000
commitce4e1312d774f690793a42aad4837d6b0e2a62d4 (patch)
tree7779d35b7d0ae395e4cd78d2993bbc36c4615ec3
parent5b1a266350c541aa9bdd3d29e029de2821eb9138 (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.py40
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()