From 42ecfc5538b3da27f3ec4c0d5cd3c214547f8a6b Mon Sep 17 00:00:00 2001 From: Alexander Mordvintsev Date: Wed, 23 Jul 2014 14:54:04 +0400 Subject: [PATCH] fixed parsing enums with tailing comma gen2.py reports headers it processes cmake file restructured --- modules/python/CMakeLists.txt | 56 +++++++++++++++---------------- modules/python/src2/gen2.py | 1 + modules/python/src2/hdr_parser.py | 2 ++ 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/modules/python/CMakeLists.txt b/modules/python/CMakeLists.txt index 3da937fccc..cccf0c3915 100644 --- a/modules/python/CMakeLists.txt +++ b/modules/python/CMakeLists.txt @@ -12,23 +12,18 @@ endif() set(the_description "The python bindings") -set(candidate_deps_raw) +set(candidate_deps) foreach(mp ${OPENCV_MODULES_PATH} ${OPENCV_EXTRA_MODULES_PATH}) file(GLOB names "${mp}/*") - list(APPEND candidate_deps_raw ${names}) -endforeach(mp) - -set(candidate_deps) -foreach(m IN LISTS candidate_deps_raw) - if(IS_DIRECTORY ${m}) - get_filename_component(m ${m} NAME) - if (NOT ${m} MATCHES "^cud(a|ev)") - if (NOT ${m} MATCHES "optim") # unless we handle namespaces - list(APPEND candidate_deps "opencv_${m}") + foreach(m IN LISTS names) + if(IS_DIRECTORY ${m}) + get_filename_component(m ${m} NAME) + if (NOT ${m} MATCHES "^cud(a|ev)") + list(APPEND candidate_deps "opencv_${m}") + endif() endif() - endif() - endif() -endforeach(m) + endforeach(m) +endforeach(mp) ocv_add_module(python BINDINGS OPTIONAL ${candidate_deps}) @@ -39,23 +34,26 @@ ocv_module_include_directories( ) -set(opencv_hdrs_raw) -foreach(m IN LISTS OPENCV_MODULE_opencv_python_DEPS) - list(APPEND opencv_hdrs_raw "${OPENCV_MODULE_${m}_HEADERS}") -endforeach(m) +set(opencv_hdrs_blacklist + ".h$" + "opencv2/core/cuda" + "opencv2/objdetect/detection_based_tracker.hpp" + "opencv2/optim.hpp") -# remove problematic headers set(opencv_hdrs) -foreach(hdr IN LISTS opencv_hdrs_raw) - if(NOT ${hdr} MATCHES ".h$") - if(NOT ${hdr} MATCHES "opencv2/core/cuda") - if(NOT ${hdr} MATCHES "opencv2/objdetect/detection_based_tracker.hpp") - list(APPEND opencv_hdrs ${hdr}) - endif() - endif() - endif() -endforeach(hdr) - +foreach(m IN LISTS OPENCV_MODULE_opencv_python_DEPS) + foreach(hdr IN LISTS OPENCV_MODULE_${m}_HEADERS) + set(good TRUE) + foreach(s IN LISTS opencv_hdrs_blacklist) + if (${hdr} MATCHES ${s}) + set(good FALSE) + endif() + endforeach(s) + if(${good}) + list(APPEND opencv_hdrs ${hdr}) + endif() + endforeach(hdr) +endforeach(m) set(cv2_generated_hdrs "${CMAKE_CURRENT_BINARY_DIR}/pyopencv_generated_include.h" diff --git a/modules/python/src2/gen2.py b/modules/python/src2/gen2.py index 5666355bb6..9488107715 100755 --- a/modules/python/src2/gen2.py +++ b/modules/python/src2/gen2.py @@ -831,6 +831,7 @@ class PythonWrapperGenerator(object): # step 1: scan the headers and build more descriptive maps of classes, consts, functions for hdr in srcfiles: + print(hdr) decls = parser.parse(hdr) if len(decls) == 0: continue diff --git a/modules/python/src2/hdr_parser.py b/modules/python/src2/hdr_parser.py index 92f1b7347c..eb9100928f 100755 --- a/modules/python/src2/hdr_parser.py +++ b/modules/python/src2/hdr_parser.py @@ -206,6 +206,8 @@ class CppHeaderParser(object): def parse_enum(self, decl_str): l = decl_str ll = l.split(",") + if ll[-1].strip() == "": + ll = ll[:-1] prev_val = "" prev_val_delta = -1 decl = []