diff options
author | James Henstridge <james@daa.com.au> | 2001-10-06 10:35:39 +0000 |
---|---|---|
committer | James Henstridge <jamesh@src.gnome.org> | 2001-10-06 10:35:39 +0000 |
commit | 083a0afb3c7a62ad05ba189239f58522cf9f7633 (patch) | |
tree | 59810a399518e2bd9362843c7f3536b6ef7c9ae5 | |
parent | 235393696e6f58c8fe2b5a0e3c0d6ba43f374455 (diff) | |
download | pygtk-083a0afb3c7a62ad05ba189239f58522cf9f7633.tar.gz |
pass the filename to overrides.
2001-10-06 James Henstridge <james@daa.com.au>
* codegen/codegen.py (main): pass the filename to overrides.
* codegen/override.py (Overrides.__init__): rewrite the code that
reads in the overrides file, so it only splits on lines with only
'%%' in them. Also keep track of line numbers, so we know where
each section starts.
(Overrides.__parse_override): save the start line for 'override'
sections and 'override-attr' sections.
(Overrides.getstartline): new function to retrieve the start line
for a .overrides section.
(Overrides.__init__): take the filename rather than file handle as
argument.
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | codegen/codegen.py | 4 | ||||
-rw-r--r-- | codegen/override.py | 40 |
3 files changed, 50 insertions, 9 deletions
@@ -1,3 +1,18 @@ +2001-10-06 James Henstridge <james@daa.com.au> + + * codegen/codegen.py (main): pass the filename to overrides. + + * codegen/override.py (Overrides.__init__): rewrite the code that + reads in the overrides file, so it only splits on lines with only + '%%' in them. Also keep track of line numbers, so we know where + each section starts. + (Overrides.__parse_override): save the start line for 'override' + sections and 'override-attr' sections. + (Overrides.getstartline): new function to retrieve the start line + for a .overrides section. + (Overrides.__init__): take the filename rather than file handle as + argument. + 2001-10-05 Matt Wilson <msw@redhat.com> * gtk/gtk.override (_wrap_gtk_list__get_selection): implemented diff --git a/codegen/codegen.py b/codegen/codegen.py index 4ff2dfc6..1c9929ae 100644 --- a/codegen/codegen.py +++ b/codegen/codegen.py @@ -808,13 +808,13 @@ def register_types(parser): argtypes.matcher.register_enum(enum.c_name, enum.typecode) if __name__ == '__main__': - o = override.Overrides(None) + o = override.Overrides() prefix = 'pygtk' opts, args = getopt.getopt(sys.argv[1:], "o:p:r:", ["override=", "prefix=", "register="]) for opt, arg in opts: if opt in ('-o', '--override'): - o = override.Overrides(open(arg)) + o = override.Overrides(arg) elif opt in ('-p', '--prefix'): prefix = arg elif opt in ('-r', '--register'): diff --git a/codegen/override.py b/codegen/override.py index bfd581ac..cd6957de 100644 --- a/codegen/override.py +++ b/codegen/override.py @@ -7,21 +7,43 @@ import sys, string, fnmatch class Overrides: - def __init__(self, fp=sys.stdin): + def __init__(self, filename=None): self.ignores = {} self.glob_ignores = [] self.overrides = {} self.kwargs = {} + self.startlines = {} self.override_attrs = {} self.headers = '' self.init = '' - if fp == None: return + if filename: self.__handle_file(filename) + + def __handle_file(self, filename): + fp = open(filename, 'r') # read all the components of the file ... - bufs = map(string.strip, string.split(fp.read(), '%%')) - if bufs == ['']: return - for buf in bufs: - self.__parse_override(buf) - def __parse_override(self, buffer): + bufs = [] + startline = 1 + lines = [] + line = fp.readline() + linenum = 1 + while line: + if line == '%%\n' or line == '%%': + if lines: + bufs.append((string.join(lines, ''), startline)) + startline = linenum + 1 + lines = [] + else: + lines.append(line) + line = fp.readline() + linenum = linenum + 1 + if lines: + bufs.append((string.join(lines, ''), startline)) + if not bufs: return + + for buf, startline in bufs: + self.__parse_override(buf, startline) + + def __parse_override(self, buffer, startline): pos = string.find(buffer, '\n') if pos >= 0: line = buffer[:pos] @@ -41,9 +63,11 @@ class Overrides: if 'kwargs' in words[1:]: self.kwargs[func] = 1 self.overrides[func] = rest + self.startlines[func] = startline + 1 elif words[0] == 'override-attr': attr = words[1] self.override_attrs[attr] = rest + self.startlines[attr] = startline + 1 elif words[0] == 'headers': self.headers = self.headers + '\n' + rest elif words[0] == 'init': @@ -60,6 +84,8 @@ class Overrides: return self.overrides.has_key(name) def override(self, name): return self.overrides[name] + def getstartline(self, name): + return self.startlines[name] def wants_kwargs(self, name): return self.kwargs.has_key(name) def attr_is_overriden(self, attr): |