Commit 4a519a25 authored by Alexander Mordvintsev's avatar Alexander Mordvintsev

nested classes support

parent 5ad7f991
......@@ -83,8 +83,6 @@ catch (const cv::Exception &e) \
}
using namespace cv;
using cv::flann::IndexParams;
using cv::flann::SearchParams;
typedef std::vector<uchar> vector_uchar;
typedef std::vector<char> vector_char;
......
......@@ -774,18 +774,17 @@ class PythonWrapperGenerator(object):
chunks = decl[0].split('.')
name = chunks[-1]
cname = '::'.join(chunks)
namespace = '.'.join(chunks[:-1])
classname = normalize_class_name(namespace)
if classname in self.classes:
bareclassname = chunks[-2]
namespace = '.'.join(chunks[:-2])
if normalize_class_name(namespace) in self.classes:
print('Note: skipping "%s" (nested classes are currently not supported)'%decl[0])
return
else:
classname = ''
bareclassname = ''
namespace = chunks[:-1]
classes = []
while normalize_class_name('.'.join(namespace)) in self.classes:
classes.insert(0, namespace.pop())
classname = ''
bareclassname = ''
if classes:
classname = normalize_class_name('.'.join(namespace+classes))
bareclassname = classes[-1]
namespace = '.'.join(namespace)
isconstructor = name == bareclassname
isclassmethod = False
for m in decl[2]:
......@@ -794,8 +793,10 @@ class PythonWrapperGenerator(object):
elif m.startswith("="):
name = m[1:]
if isclassmethod:
name = bareclassname+"_"+name
name = "_".join(classes+[name])
classname = ''
elif isconstructor:
name = "_".join(classes[:-1]+[name])
if classname and not isconstructor:
cname = chunks[-1]
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment