diff options
Diffstat (limited to 'event_rpcgen.py')
-rwxr-xr-x | event_rpcgen.py | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/event_rpcgen.py b/event_rpcgen.py index dead34c2..c5375656 100755 --- a/event_rpcgen.py +++ b/event_rpcgen.py @@ -32,6 +32,12 @@ structdef = re.compile(r'^struct +[a-zA-Z_][a-zA-Z0-9_]* *{$') headerdirect = [] cppdirect = [] +QUIETLY = 0 + +def declare(s): + if not QUIETLY: + print s + def TranslateList(mylist, mydict): return map(lambda x: x % mydict, mylist) @@ -48,7 +54,7 @@ class Struct: self._name = name self._entries = [] self._tags = {} - print >>sys.stderr, ' Created struct: %s' % name + declare(' Created struct: %s' % name) def AddEntry(self, entry): if self._tags.has_key(entry.Tag()): @@ -58,7 +64,7 @@ class Struct: self._tags[entry.Tag()], line_count)) self._entries.append(entry) self._tags[entry.Tag()] = entry.Name() - print >>sys.stderr, ' Added entry: %s' % entry.Name() + declare(' Added entry: %s' % entry.Name()) def Name(self): return self._name @@ -148,7 +154,7 @@ int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t, ' */\n') % self._name print >>file, \ - 'static struct %(name)s_access_ __%(name)s_base = {' % \ + 'static struct %(name)s_access_ %(name)s_base__ = {' % \ { 'name' : self._name } for entry in self._entries: self.PrintIndented(file, ' ', entry.CodeBase()) @@ -170,7 +176,7 @@ int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t, ' event_warn("%%s: malloc", __func__);\n' ' return (NULL);\n' ' }\n' - ' tmp->base = &__%(name)s_base;\n') % { 'name' : self._name } + ' tmp->base = &%(name)s_base__;\n') % { 'name' : self._name } for entry in self._entries: self.PrintIndented(file, ' ', entry.CodeInitialize('tmp')) @@ -332,11 +338,11 @@ int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t, 'evtag_marshal_%(name)s(struct evbuffer *evbuf, ev_uint32_t tag, ' 'const struct %(name)s *msg)\n' '{\n' - ' struct evbuffer *_buf = evbuffer_new();\n' - ' assert(_buf != NULL);\n' - ' %(name)s_marshal(_buf, msg);\n' - ' evtag_marshal_buffer(evbuf, tag, _buf);\n ' - ' evbuffer_free(_buf);\n' + ' struct evbuffer *buf_ = evbuffer_new();\n' + ' assert(buf_ != NULL);\n' + ' %(name)s_marshal(buf_, msg);\n' + ' evtag_marshal_buffer(evbuf, tag, buf_);\n ' + ' evbuffer_free(buf_);\n' '}\n' ) % { 'name' : self._name } class Entry: @@ -1532,7 +1538,7 @@ class CCodeGenerator: # Use the complete provided path to the input file, with all # non-identifier characters replaced with underscores, to # reduce the chance of a collision between guard macros. - return '_' + nonident.sub('_', name).upper() + '_' + return 'EVENT_RPCOUT_' + nonident.sub('_', name).upper() + '_' def HeaderPreamble(self, name): guard = self.GuardName(name) @@ -1579,8 +1585,8 @@ class CCodeGenerator: '#include <event2/event.h>\n' '#include <event2/buffer.h>\n' '#include <event2/tag.h>\n\n' - '#ifdef _EVENT___func__\n' - '#define __func__ _EVENT___func__\n' + '#ifdef EVENT____func__\n' + '#define __func__ EVENT____func__\n' '#endif\n\n' ) @@ -1638,6 +1644,11 @@ class CommandLine: self.impl_file = None self.factory = CCodeGenerator() + if len(argv) >= 2 and argv[1] == '--quiet': + global QUIETLY + QUIETLY = 1 + del argv[1] + if len(argv) < 2 or len(argv) > 4: raise Usage(argv[0]) @@ -1668,13 +1679,13 @@ class CommandLine: impl_file = self.impl_file factory = self.factory - print >>sys.stderr, 'Reading \"%s\"' % filename + declare('Reading \"%s\"' % filename) fp = open(filename, 'r') entities = Parse(factory, fp) fp.close() - print >>sys.stderr, '... creating "%s"' % header_file + declare('... creating "%s"' % header_file) header_fp = open(header_file, 'w') print >>header_fp, factory.HeaderPreamble(filename) @@ -1690,7 +1701,7 @@ class CommandLine: print >>header_fp, factory.HeaderPostamble(filename) header_fp.close() - print >>sys.stderr, '... creating "%s"' % impl_file + declare('... creating "%s"' % impl_file) impl_fp = open(impl_file, 'w') print >>impl_fp, factory.BodyPreamble(filename, header_file) for entry in entities: |