base class name resolution

fixed find_obj.py
This commit is contained in:
Alexander Mordvintsev
2014-08-21 14:51:03 +04:00
parent 40d0f853d6
commit 74c77d826f
3 changed files with 24 additions and 8 deletions

View File

@@ -267,7 +267,7 @@ class ClassInfo(object):
#return sys.exit(-1)
if self.bases and self.bases[0].startswith("cv::"):
self.bases[0] = self.bases[0][4:]
if self.bases and self.bases[0] == "cv::Algorithm":
if self.bases and self.bases[0] == "Algorithm":
self.isalgorithm = True
for m in decl[2]:
if m.startswith("="):
@@ -752,8 +752,19 @@ class PythonWrapperGenerator(object):
% (classinfo.name, classinfo.cname))
sys.exit(-1)
self.classes[classinfo.name] = classinfo
if classinfo.bases and not classinfo.isalgorithm:
classinfo.isalgorithm = self.classes[classinfo.bases[0].replace("::", "_")].isalgorithm
if classinfo.bases:
chunks = classinfo.bases[0].split('::')
base = '_'.join(chunks)
while base not in self.classes and len(chunks)>1:
del chunks[-2]
base = '_'.join(chunks)
if base not in self.classes:
print("Generator error: unable to resolve base %s for %s"
% (classinfo.bases[0], classinfo.name))
sys.exit(-1)
classinfo.bases[0] = "::".join(chunks)
classinfo.isalgorithm |= self.classes[base].isalgorithm
def split_decl_name(self, name):
chunks = name.split('.')