From 4a519a25f395784cfbf0a0d7eaddc2e52d6ff70a Mon Sep 17 00:00:00 2001 From: Alexander Mordvintsev Date: Mon, 18 Aug 2014 16:15:30 +0400 Subject: [PATCH] nested classes support --- modules/python/src2/cv2.cpp | 2 -- modules/python/src2/gen2.py | 27 ++++++++++++++------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index f5df883..fe37c8c 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -83,8 +83,6 @@ catch (const cv::Exception &e) \ } using namespace cv; -using cv::flann::IndexParams; -using cv::flann::SearchParams; typedef std::vector vector_uchar; typedef std::vector vector_char; diff --git a/modules/python/src2/gen2.py b/modules/python/src2/gen2.py index 5926cec..cdf4431 100755 --- a/modules/python/src2/gen2.py +++ b/modules/python/src2/gen2.py @@ -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] -- 2.7.4