'cvStartNextStream', 'cvWriteFileNode', 'cvRegisterType', 'cvUnregisterType', 'cvGetTickCount', 'cvGetTickFrequency', 'cvGetNumThreads', 'cvSetNumThreads', 'cvGetThreadNum', ): sb.mb.free_fun(z).include() # cvWrite z = sb.mb.free_fun('cvWrite') z.include() z._transformer_creators.append(FT.input_string('ptr')) # cvGetHashedKey FT.expose_func(sb.mb.free_fun('cvGetHashedKey'), ward_indices=(1, )) for z in ( 'cvFirstType', 'cvFindType', ): FT.expose_func(sb.mb.free_fun(z)) FT.expose_func(sb.mb.free_fun('cvTypeOf'), transformer_creators=[FT.fix_type('struct_ptr', '::CvArr *')]) # CvModule z = sb.mb.class_('CvModule') z.include()
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)
# functions for z in ( 'cvAttrValue', 'cvStartWriteStruct', 'cvEndWriteStruct', 'cvWriteComment', 'cvStartNextStream', 'cvWriteFileNode', 'cvRegisterType', 'cvUnregisterType', 'cvGetTickCount', 'cvGetTickFrequency', 'cvGetNumThreads', 'cvSetNumThreads', 'cvGetThreadNum', ): sb.mb.free_fun(z).include() # cvWrite z = sb.mb.free_fun('cvWrite') z.include() z._transformer_creators.append(FT.input_string('ptr')) # cvGetHashedKey FT.expose_func(sb.mb.free_fun('cvGetHashedKey'), ward_indices=(1,)) for z in ( 'cvFirstType', 'cvFindType', ): FT.expose_func(sb.mb.free_fun(z)) FT.expose_func(sb.mb.free_fun('cvTypeOf'), transformer_creators=[FT.fix_type('struct_ptr', '::CvArr *')]) # CvModule z = sb.mb.class_('CvModule') z.include() for t in ('info', 'first', 'last'): FT.expose_member_as_pointee(z, t)
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)