Commit 7267e94b authored by Cartucho's avatar Cartucho Committed by Alexander Alekhin

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>))"
parent d7a1d223
......@@ -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]
#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])
......
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