mirror of
https://github.com/opencv/opencv.git
synced 2025-06-07 17:44:04 +08:00
Merge pull request #9736 from Cartucho/const_and_class_to_json
* Adding constants to json file * adding sub-module to constants name * adding namespace to functions * adding namespace to classes * remove namespace from methods * static methods * python signatures generation * python: more fixes for signatures generation Python names existence can be checked via command: python -c "import cv2 as cv; print(repr(<py_name>))"
This commit is contained in:
parent
d7a1d2230f
commit
7267e94be7
@ -3,6 +3,7 @@
|
||||
from __future__ import print_function
|
||||
import hdr_parser, sys, re, os
|
||||
from string import Template
|
||||
from pprint import pprint
|
||||
|
||||
if sys.version_info[0] >= 3:
|
||||
from io import StringIO
|
||||
@ -806,12 +807,26 @@ class FuncInfo(object):
|
||||
code += "\n return %s;\n}\n\n" % def_ret
|
||||
|
||||
cname = self.cname
|
||||
classinfo = None
|
||||
#dump = False
|
||||
#if dump: pprint(vars(self))
|
||||
#if dump: pprint(vars(self.variants[0]))
|
||||
if self.classname:
|
||||
classinfo = all_classes[self.classname]
|
||||
cname = classinfo.cname + '::' + cname
|
||||
#if dump: pprint(vars(classinfo))
|
||||
if self.isconstructor:
|
||||
py_name = 'cv.' + classinfo.wname
|
||||
elif self.isclassmethod:
|
||||
py_name = '.'.join([self.namespace, classinfo.sname + '_' + self.variants[0].wname])
|
||||
else:
|
||||
cname = classinfo.cname + '::' + cname
|
||||
py_name = 'cv.' + classinfo.wname + '.' + self.variants[0].wname
|
||||
else:
|
||||
py_name = '.'.join([self.namespace, self.variants[0].wname])
|
||||
#if dump: print(cname + " => " + py_name)
|
||||
py_signatures = codegen.py_signatures.setdefault(cname, [])
|
||||
for v in self.variants:
|
||||
s = dict(name=v.name, arg=v.py_arg_str, ret=v.py_return_str)
|
||||
s = dict(name=py_name, arg=v.py_arg_str, ret=v.py_return_str)
|
||||
for old in py_signatures:
|
||||
if s == old:
|
||||
break
|
||||
@ -855,6 +870,16 @@ class PythonWrapperGenerator(object):
|
||||
sys.exit(-1)
|
||||
self.classes[classinfo.name] = classinfo
|
||||
|
||||
# Add Class to json file.
|
||||
namespace, classes, name = self.split_decl_name(name)
|
||||
namespace = '.'.join(namespace)
|
||||
name = '_'.join(classes+[name])
|
||||
|
||||
py_name = 'cv.' + classinfo.wname # use wrapper name
|
||||
py_signatures = self.py_signatures.setdefault(classinfo.cname, [])
|
||||
py_signatures.append(dict(name=py_name))
|
||||
#print('class: ' + classinfo.cname + " => " + py_name)
|
||||
|
||||
def split_decl_name(self, name):
|
||||
chunks = name.split('.')
|
||||
namespace = chunks[:-1]
|
||||
@ -876,6 +901,12 @@ class PythonWrapperGenerator(object):
|
||||
sys.exit(-1)
|
||||
ns.consts[name] = cname
|
||||
|
||||
value = decl[1]
|
||||
py_name = '.'.join([namespace, name])
|
||||
py_signatures = self.py_signatures.setdefault(cname, [])
|
||||
py_signatures.append(dict(name=py_name, value=value))
|
||||
#print(cname + ' => ' + str(py_name) + ' (value=' + value + ')')
|
||||
|
||||
def add_func(self, decl):
|
||||
namespace, classes, barename = self.split_decl_name(decl[0])
|
||||
cname = "::".join(namespace+classes+[barename])
|
||||
|
Loading…
Reference in New Issue
Block a user