summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2010-12-06 22:21:51 +0800
committerChia-I Wu <[email protected]>2011-01-20 17:15:49 +0800
commit7828f554abf59e05a4b4152dabd599fae79d0be8 (patch)
tree26cc652158ea3317432c5024f61d1c462478fc7f
parentf71a9acf59a2cd6396fb57afe57d7808df0bb82b (diff)
mapi: Allow prefix to be macro.
Treat prefix as macro when it is all uppercase. Generate PREFIX(name) instead of PREFIXname when it is a macro.
-rw-r--r--src/mapi/mapi/mapi_abi.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/mapi/mapi/mapi_abi.py b/src/mapi/mapi/mapi_abi.py
index 1db6cf39119..397e7decdc7 100644
--- a/src/mapi/mapi/mapi_abi.py
+++ b/src/mapi/mapi/mapi_abi.py
@@ -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)