summaryrefslogtreecommitdiff
path: root/event_rpcgen.py
diff options
context:
space:
mode:
Diffstat (limited to 'event_rpcgen.py')
-rwxr-xr-xevent_rpcgen.py41
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: