Refactor mangle

This commit is contained in:
Siu Kwan Lam 2013-01-22 21:24:14 -06:00
commit 6afab6268c
2 changed files with 16 additions and 3 deletions

View file

@ -1,4 +1,5 @@
import logging
import re
from utils import *
logger = logging.getLogger(__name__)
@ -41,9 +42,21 @@ def parse_arguments(println, var, *args):
return unwrapped
_re_mangle_pattern = re.compile(r'[ _<>\*&]')
def mangle(name):
name = name.replace('_', '__').replace(' ', '_')
return name.replace('::', '_').rstrip('*&')
def repl(m):
s = m.group(0)
if s in '<>*&':
return ''
elif s in ' ':
return '_'
elif s in '_':
return '__'
else:
assert False
name = _re_mangle_pattern.sub(repl, name)
return name.replace('::', '_')
def pycapsule_new(println, ptr, name, clsname, dtor=NULL):
# build capsule

View file

@ -36,7 +36,7 @@ def _capsule_destructor(weak):
cap = weak.capsule
addr = _capsule.getPointer(cap)
cls = _capsule.getClassName(cap)
logger.debug("destroy pointer %s to %s", addr, cls)
logger.debug("destroy pointer 0x%08X to %s", addr, cls)
weak.dtor(cap)
del _owners[addr]