mirror of
https://github.com/opencv/opencv.git
synced 2025-06-10 19:24:07 +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
|
from __future__ import print_function
|
||||||
import hdr_parser, sys, re, os
|
import hdr_parser, sys, re, os
|
||||||
from string import Template
|
from string import Template
|
||||||
|
from pprint import pprint
|
||||||
|
|
||||||
if sys.version_info[0] >= 3:
|
if sys.version_info[0] >= 3:
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
@ -806,12 +807,26 @@ class FuncInfo(object):
|
|||||||
code += "\n return %s;\n}\n\n" % def_ret
|
code += "\n return %s;\n}\n\n" % def_ret
|
||||||
|
|
||||||
cname = self.cname
|
cname = self.cname
|
||||||
|
classinfo = None
|
||||||
|
#dump = False
|
||||||
|
#if dump: pprint(vars(self))
|
||||||
|
#if dump: pprint(vars(self.variants[0]))
|
||||||
if self.classname:
|
if self.classname:
|
||||||
classinfo = all_classes[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, [])
|
py_signatures = codegen.py_signatures.setdefault(cname, [])
|
||||||
for v in self.variants:
|
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:
|
for old in py_signatures:
|
||||||
if s == old:
|
if s == old:
|
||||||
break
|
break
|
||||||
@ -855,6 +870,16 @@ class PythonWrapperGenerator(object):
|
|||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
self.classes[classinfo.name] = classinfo
|
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):
|
def split_decl_name(self, name):
|
||||||
chunks = name.split('.')
|
chunks = name.split('.')
|
||||||
namespace = chunks[:-1]
|
namespace = chunks[:-1]
|
||||||
@ -876,6 +901,12 @@ class PythonWrapperGenerator(object):
|
|||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
ns.consts[name] = cname
|
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):
|
def add_func(self, decl):
|
||||||
namespace, classes, barename = self.split_decl_name(decl[0])
|
namespace, classes, barename = self.split_decl_name(decl[0])
|
||||||
cname = "::".join(namespace+classes+[barename])
|
cname = "::".join(namespace+classes+[barename])
|
||||||
|
Loading…
Reference in New Issue
Block a user