Refactor mangle
This commit is contained in:
parent
6b88ffbaed
commit
6afab6268c
2 changed files with 16 additions and 3 deletions
|
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
from utils import *
|
from utils import *
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
@ -41,9 +42,21 @@ def parse_arguments(println, var, *args):
|
||||||
|
|
||||||
return unwrapped
|
return unwrapped
|
||||||
|
|
||||||
|
_re_mangle_pattern = re.compile(r'[ _<>\*&]')
|
||||||
|
|
||||||
def mangle(name):
|
def mangle(name):
|
||||||
name = name.replace('_', '__').replace(' ', '_')
|
def repl(m):
|
||||||
return name.replace('::', '_').rstrip('*&')
|
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):
|
def pycapsule_new(println, ptr, name, clsname, dtor=NULL):
|
||||||
# build capsule
|
# build capsule
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ def _capsule_destructor(weak):
|
||||||
cap = weak.capsule
|
cap = weak.capsule
|
||||||
addr = _capsule.getPointer(cap)
|
addr = _capsule.getPointer(cap)
|
||||||
cls = _capsule.getClassName(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)
|
weak.dtor(cap)
|
||||||
del _owners[addr]
|
del _owners[addr]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue