def init_class(self, z): """Initializes a class z""" if not z.pds in self.decls_reg: self.register_ti(z.pds) # register the class if not done so z.include() funs = [] try: funs.extend(z.constructors()) except RuntimeError: pass try: funs.extend(z.mem_funs()) except RuntimeError: pass try: funs.extend(z.operators()) except RuntimeError: pass _c.init_transformers(funs) z._funs = funs _c.add_decl_desc(z)
def beautify_func_list(func_list): func_list = [f for f in func_list if not f.ignore] # fix default values # don't remove std::vector default values, old compilers _need_ std::allocator removed for f in func_list: for arg in f.arguments: if isinstance(arg.default_value, str): repl_list = { 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >': 'std::string', 'std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > >': 'std::vector<cv::Point>', 'std::vector<cv::Scalar_<double>, std::allocator<cv::Scalar_<double> > >': 'std::vector<cv::Scalar>', 'std::vector<int, std::allocator<int> >': 'std::vector<int>', 'std::vector<cv::Vec<int, 4>, std::allocator<cv::Vec<int, 4> > >': 'std::vector<cv::Vec4i>', } for z in repl_list: arg.default_value = arg.default_value.replace(z, repl_list[z]) # one-to-one function argument for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue pds = _c.unique_pds(arg.type.partial_decl_string) if pds in _c.c2cpp: f._transformer_creators.append(_FT.input_as_FixType(pds, _c.c2cpp[pds], arg.name)) elif pds in ['CvRNG *', 'CvRNG &', 'CvRNG cosnt *', 'CvRNG const &']: f._transformer_creators.append(_FT.input_asRNG(arg.name)) elif pds in ['CvFileStorage *', 'CvFileStorage const *']: f._transformer_creators.append(_FT.input_as_FileStorage(arg.name)) elif pds in ['CvFileNode *', 'CvFileNode const *']: f._transformer_creators.append(_FT.input_as_FileNode(arg.name)) elif pds in ['CvMemStorage *', 'CvMemStorage const *']: f._transformer_creators.append(_FT.input_as_MemStorage(arg.name)) elif pds in ['CvSparseMat *', 'CvSparseMat &', 'CvSparseMat const *', 'CvSparseMat const &']: f._transformer_creators.append(_FT.input_asSparseMat(arg.name)) elif pds in ["IplImage *", "IplImage const *", "CvArr *", "CvArr const *", "CvMat *", "CvMat const *", "cv::Range const *"]: f._transformer_creators.append(_FT.input_as_Mat(arg.name)) # function argument int *sizes and int dims for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue if arg.name == 'sizes' and _D.is_pointer(arg.type): for arg2 in f.arguments: if arg2.name == 'dims' and _D.is_integral(arg2.type): f._transformer_creators.append(_FT.input_array1d('sizes', 'dims')) break if arg.name == '_sizes' and _D.is_pointer(arg.type): for arg2 in f.arguments: if arg2.name == '_ndims' and _D.is_integral(arg2.type): f._transformer_creators.append(_FT.input_array1d('_sizes', '_ndims')) break if arg2.name == 'dims' and _D.is_integral(arg2.type): f._transformer_creators.append(_FT.input_array1d('_sizes', 'dims')) break if arg.name == '_newsz' and _D.is_pointer(arg.type): for arg2 in f.arguments: if arg2.name == '_newndims' and _D.is_integral(arg2.type): f._transformer_creators.append(_FT.input_array1d('_newsz', '_newndims')) break # function argument const CvPoint2D32f * src and const CvPoint2D32f * dst for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue if arg.name == 'src' and _D.is_pointer(arg.type) and 'CvPoint2D32f' in arg.type.decl_string: for arg2 in f.arguments: if arg2.name == 'dst' and _D.is_pointer(arg2.type) and 'CvPoint2D32f' in arg2.type.decl_string: f._transformer_creators.append(_FT.input_array1d('src')) f._transformer_creators.append(_FT.input_array1d('dst')) break # argument 'void *data' for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue if arg.name == 'data' and _D.is_void_pointer(arg.type): f._transformer_creators.append(_FT.input_string(arg.name)) self.add_doc(f.name, "'data' is represented by a string") # final step: apply all the function transformations for f in func_list: if len(f._transformer_creators) > 0: sort_transformers(f) f.add_transformation(*f._transformer_creators, **f._transformer_kwds) if 'unique_function_name' in f._transformer_kwds: f.transformations[0].unique_name = f._transformer_kwds['unique_function_name'] else: s = f.transformations[0].unique_name repl_dict = { 'operator()': '__call__', } for t in repl_dict: if t in s: s = s.replace(t, repl_dict[t]) f.transformations[0].unique_name = s f.transformations[0].alias = repl_dict[t] break _c.add_decl_desc(f)
def beautify_func_list(func_list): func_list = [f for f in func_list if not f.ignore] # fix default values # don't remove std::vector default values, old compilers _need_ std::allocator removed for f in func_list: for arg in f.arguments: if isinstance(arg.default_value, str): repl_list = { 'std::basic_string<char, std::char_traits<char>, std::allocator<char> >': 'std::string', 'std::vector<cv::Point_<int>, std::allocator<cv::Point_<int> > >': 'std::vector<cv::Point>', 'std::vector<cv::Scalar_<double>, std::allocator<cv::Scalar_<double> > >': 'std::vector<cv::Scalar>', 'std::vector<int, std::allocator<int> >': 'std::vector<int>', 'std::vector<cv::Vec<int, 4>, std::allocator<cv::Vec<int, 4> > >': 'std::vector<cv::Vec4i>', } for z in repl_list: arg.default_value = arg.default_value.replace( z, repl_list[z]) # one-to-one function argument for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue pds = _c.unique_pds(arg.type.partial_decl_string) if pds in _c.c2cpp: f._transformer_creators.append( _FT.input_as_FixType(pds, _c.c2cpp[pds], arg.name)) elif pds in [ 'CvRNG *', 'CvRNG &', 'CvRNG cosnt *', 'CvRNG const &' ]: f._transformer_creators.append(_FT.input_asRNG(arg.name)) elif pds in ['CvFileStorage *', 'CvFileStorage const *']: f._transformer_creators.append( _FT.input_as_FileStorage(arg.name)) elif pds in ['CvFileNode *', 'CvFileNode const *']: f._transformer_creators.append(_FT.input_as_FileNode(arg.name)) elif pds in ['CvMemStorage *', 'CvMemStorage const *']: f._transformer_creators.append( _FT.input_as_MemStorage(arg.name)) elif pds in [ 'CvSparseMat *', 'CvSparseMat &', 'CvSparseMat const *', 'CvSparseMat const &' ]: f._transformer_creators.append(_FT.input_asSparseMat(arg.name)) elif pds in [ "IplImage *", "IplImage const *", "CvArr *", "CvArr const *", "CvMat *", "CvMat const *", "cv::Range const *" ]: f._transformer_creators.append(_FT.input_as_Mat(arg.name)) # function argument int *sizes and int dims for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue if arg.name == 'sizes' and _D.is_pointer(arg.type): for arg2 in f.arguments: if arg2.name == 'dims' and _D.is_integral(arg2.type): f._transformer_creators.append( _FT.input_array1d('sizes', 'dims')) break if arg.name == '_sizes' and _D.is_pointer(arg.type): for arg2 in f.arguments: if arg2.name == '_ndims' and _D.is_integral(arg2.type): f._transformer_creators.append( _FT.input_array1d('_sizes', '_ndims')) break if arg2.name == 'dims' and _D.is_integral(arg2.type): f._transformer_creators.append( _FT.input_array1d('_sizes', 'dims')) break if arg.name == '_newsz' and _D.is_pointer(arg.type): for arg2 in f.arguments: if arg2.name == '_newndims' and _D.is_integral(arg2.type): f._transformer_creators.append( _FT.input_array1d('_newsz', '_newndims')) break # function argument const CvPoint2D32f * src and const CvPoint2D32f * dst for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue if arg.name == 'src' and _D.is_pointer( arg.type) and 'CvPoint2D32f' in arg.type.decl_string: for arg2 in f.arguments: if arg2.name == 'dst' and _D.is_pointer( arg2.type ) and 'CvPoint2D32f' in arg2.type.decl_string: f._transformer_creators.append( _FT.input_array1d('src')) f._transformer_creators.append( _FT.input_array1d('dst')) break # argument 'void *data' for f in func_list: for arg in f.arguments: if is_arg_touched(f, arg.name): continue if arg.name == 'data' and _D.is_void_pointer(arg.type): f._transformer_creators.append(_FT.input_string(arg.name)) self.add_doc(f.name, "'data' is represented by a string") # final step: apply all the function transformations for f in func_list: if len(f._transformer_creators) > 0: sort_transformers(f) f.add_transformation(*f._transformer_creators, **f._transformer_kwds) if 'unique_function_name' in f._transformer_kwds: f.transformations[0].unique_name = f._transformer_kwds[ 'unique_function_name'] else: s = f.transformations[0].unique_name repl_dict = { 'operator()': '__call__', } for t in repl_dict: if t in s: s = s.replace(t, repl_dict[t]) f.transformations[0].unique_name = s f.transformations[0].alias = repl_dict[t] break _c.add_decl_desc(f)