mapi: Allow prefix to be macro.
authorChia-I Wu <olv@lunarg.com>
Mon, 6 Dec 2010 14:21:51 +0000 (22:21 +0800)
committerChia-I Wu <olv@lunarg.com>
Thu, 20 Jan 2011 09:15:49 +0000 (17:15 +0800)
Treat prefix as macro when it is all uppercase.  Generate PREFIX(name)
instead of PREFIXname when it is a macro.

src/mapi/mapi/mapi_abi.py

index 1db6cf39119455cf8ccca4fd952736253a3e0d5b..397e7decdc71233165089ead8a0ac9f4ee8e31d0 100644 (file)
@@ -368,8 +368,11 @@ class ABIPrinter(object):
 
     def _c_function(self, ent, prefix, mangle=False, stringify=False):
         """Return the function name of an entry."""
-        formats = { True: '"%s%s"', False: '%s%s' }
-        fmt = formats[stringify]
+        formats = {
+                True: { True: '%s_STR(%s)', False: '%s(%s)' },
+                False: { True: '"%s%s"', False: '%s%s' },
+        }
+        fmt = formats[prefix.isupper()][stringify]
         name = ent.name
         if mangle and ent.hidden:
             name = '_dispatch_stub_' + str(ent.slot)
@@ -379,7 +382,8 @@ class ABIPrinter(object):
         """Return the function name used for calling."""
         if ent.handcode:
             # _c_function does not handle this case
-            fmt = '%s%s'
+            formats = { True: '%s(%s)', False: '%s%s' }
+            fmt = formats[prefix.isupper()]
             name = fmt % (prefix, ent.handcode)
         elif self.need_entry_point(ent):
             name = self._c_function(ent, prefix, True)