opencv_binding_generator/settings/
func_exclude.rs

1use std::collections::HashSet;
2
3use crate::SupportedModule;
4
5pub type FuncExclude = HashSet<&'static str>;
6
7pub fn func_exclude_factory(module: SupportedModule) -> FuncExclude {
8	match module {
9		SupportedModule::Core => core_factory(),
10		SupportedModule::CudaImgProc => cudaimgproc_factory(),
11		SupportedModule::Dnn => dnn_factory(),
12		SupportedModule::Gapi => gapi_factory(),
13		SupportedModule::Hdf => hdf_factory(),
14		SupportedModule::ImgProc => imgproc_factory(),
15		SupportedModule::ObjDetect => objdetect_factory(),
16		SupportedModule::OptFlow => optflow_factory(),
17		SupportedModule::Stitching => stitching_factory(),
18		SupportedModule::SurfaceMatching => surface_matching_factory(),
19		SupportedModule::Tracking => tracking_factory(),
20		_ => FuncExclude::default(),
21	}
22}
23
24fn core_factory() -> FuncExclude {
25	HashSet::from([
26		"cv_AsyncArray__getImpl_const",
27		"cv_Mat_Mat_const_MatR_const_RangeX", // duplicate of cv_Mat_Mat_Mat_VectorOfRange, but with pointers
28		"cv_Mat_copySize_const_MatR",         // internal function
29		"cv_Mat_operator___const_const_RangeX", // duplicate of cv_Mat_operator___const_const_vectorLRangeGR, but with pointers
30		"cv_Mat_push_back__const_voidX",      // internal method
31		"cv_Mat_operatorST_const_MatR",       // unsafe with the safe version that moves
32		"cv_UMat_UMat_const_UMatR_const_RangeX", // duplicate of cv_UMat_UMat_UMat_VectorOfRange, but with pointers
33		"cv_UMat_copySize_const_UMatR",       // internal function
34		"cv_UMat_operator___const_const_RangeX", // duplicate of cv_UMat_operator___const_const_vectorLRangeGR, but with pointers
35		"cv_RNG_MT19937_operator__",          // the same as calling to_u32() or next()
36		"cv_addImpl_int_const_charX",
37		"cv_calcCovarMatrix_const_MatX_int_MatR_MatR_int_int", // duplicate of cv_calcCovarMatrix_const__InputArrayR_const__OutputArrayR_const__InputOutputArrayR_int_int, but with pointers
38		"cv_cv_abs_short",
39		"cv_detail_depthToString__int",                                   // detail function
40		"cv_detail_typeToString__int",                                    // detail function
41		"cv_fastFree_voidX",                                              // manual memory allocation
42		"cv_fastMalloc_size_t",                                           // manual memory allocation
43		"cv_format_const_charX",                                          // accepts varargs
44		"cv_hconcat_const_MatX_size_t_const__OutputArrayR",               // duplicate of cv_hconcat_VectorOfMat_Mat, but with pointers
45		"cv_merge_const_MatX_size_t_const__OutputArrayR", // duplicate of cv_merge_const__InputArrayR_const__OutputArrayR, but with pointers
46		"cv_mixChannels_const_MatX_size_t_MatX_size_t_const_intX_size_t", // duplicate of cv_mixChannels_VectorOfMat_VectorOfMat_VectorOfint, but with pointers
47		"cv_ocl_ProgramSource_ProgramSource_const_charX",                 // has duplicate with String
48		"cv_setImpl_int",
49		"cv_setUseCollection_bool",
50		"cv_useCollection",
51		"cv_vconcat_const_MatX_size_t_const__OutputArrayR", // duplicate of cv_vconcat_VectorOfMat_Mat, but with pointers
52		"cv_Mat_Mat_MatRR",                                 // Mat::copy that takes arg by value
53		// those function are marked as CV_EXPORTS, but they are missing from the shared libraries
54		"cv_MatConstIterator_MatConstIterator_const_MatX_const_intX",
55		"cv_SparseMatConstIterator_operatorSS",
56		"cv_SparseMatIterator_SparseMatIterator_SparseMatX_const_intX",
57		"cv__OutputArray__OutputArray_const_vectorLGpuMatGR",
58		"cv_cuda_convertFp16_const__InputArrayR_const__OutputArrayR_StreamR",
59		"cv_getImpl_vectorLintGR_vectorLStringGR",
60	])
61}
62
63fn cudaimgproc_factory() -> FuncExclude {
64	HashSet::from([
65		"cv_cuda_histEven_const__InputArrayR_GpuMatXX_intXX_intXX_intXX_StreamR", // slice of boxed objects
66		"cv_cuda_histRange_const__InputArrayR_GpuMatXX_const_GpuMatXX_StreamR",   // slice of boxed objects
67	])
68}
69
70fn dnn_factory() -> FuncExclude {
71	HashSet::from([
72		"cv_dnn_DictValue_DictValue_const_StringR", // effectively duplicate of cv_dnn_DictValue_DictValue_const_charX
73		"cv_dnn_Layer_finalize_const_vectorLMatXGR_vectorLMatGR", // dup of cv_dnn_Layer_finalize_const__InputArrayR_const__OutputArrayR
74		"cv_dnn_Model_operator_cv_dnn_Net_const",   // fixme, should generate fine, it's a dup of get_network_() anyway
75		// those function are marked as CV_EXPORTS, but they are missing from the shared libraries
76		"cv_dnn_BackendNode_BackendNode_int",
77	])
78}
79
80fn gapi_factory() -> FuncExclude {
81	HashSet::from([
82		"cv_MediaFrame_IAdapter_access_Access", // use of deleted function ‘cv::MediaFrame::View::View(const cv::MediaFrame::View&)’
83		"cv_MediaFrame_access_const_Access",    // use of deleted function ‘cv::MediaFrame::View::View(const cv::MediaFrame::View&)’
84		"cv_RMat_Adapter_access_Access",        // use of deleted function ‘cv::RMat::View::View(const cv::RMat::View&)’
85		"cv_RMat_IAdapter_access_Access",       // use of deleted function ‘cv::RMat::View::View(const cv::RMat::View&)’
86		"cv_RMat_access_const_Access",          // use of deleted function ‘cv::RMat::View::View(const cv::RMat::View&)’
87	])
88}
89
90fn hdf_factory() -> FuncExclude {
91	HashSet::from([
92		"cv_hdf_HDF5_dscreate_const_const_int_const_int_const_int_const_StringR_const_int_const_intX", // has corresponding Vector version
93		"cv_hdf_HDF5_dsinsert_const_const__InputArrayR_const_StringR_const_intX", // has corresponding Vector version
94		"cv_hdf_HDF5_dsinsert_const_const__InputArrayR_const_StringR_const_intX_const_intX", // has corresponding Vector version
95		"cv_hdf_HDF5_dsread_const_const__OutputArrayR_const_StringR_const_intX",  // has corresponding Vector version
96		"cv_hdf_HDF5_dsread_const_const__OutputArrayR_const_StringR_const_intX_const_intX", // has corresponding Vector version
97		"cv_hdf_HDF5_dswrite_const_const__InputArrayR_const_StringR_const_intX",  // has corresponding Vector version
98		"cv_hdf_HDF5_dswrite_const_const__InputArrayR_const_StringR_const_intX_const_intX", // has corresponding Vector version
99	])
100}
101
102fn imgproc_factory() -> FuncExclude {
103	HashSet::from([
104		"cv_calcBackProject_const_MatX_int_const_intX_const_SparseMatR_const__OutputArrayR_const_floatXX_double_bool", // slice pointers
105		"cv_calcBackProject_const_MatX_int_const_intX_const__InputArrayR_const__OutputArrayR_const_floatXX_double_bool", // slice pointers
106		"cv_calcHist_const_MatX_int_const_intX_const__InputArrayR_SparseMatR_int_const_intX_const_floatXX_bool_bool", // slice pointers
107		"cv_calcHist_const_MatX_int_const_intX_const__InputArrayR_const__OutputArrayR_int_const_intX_const_floatXX_bool_bool", // slice pointers
108		"cv_fillConvexPoly_MatR_const_PointX_int_const_ScalarR_int_int",                                                       // 3.4
109		"cv_fillConvexPoly_const__InputOutputArrayR_const_PointX_int_const_ScalarR_int_int",
110		"cv_fillPoly_MatR_const_PointXX_const_intX_int_const_ScalarR_int_int_Point", // 3.4
111		"cv_fillPoly_const__InputOutputArrayR_const_PointXX_const_intX_int_const_ScalarR_int_int_Point",
112		"cv_polylines_MatR_const_PointXX_const_intX_int_bool_const_ScalarR_int_int_int", // 3.4
113		"cv_polylines_const__InputOutputArrayR_const_PointXX_const_intX_int_bool_const_ScalarR_int_int_int",
114	])
115}
116
117fn objdetect_factory() -> FuncExclude {
118	HashSet::from([
119		"cv_QRCodeDetector_detectAndDecodeMulti_const_const__InputArrayR_vectorLstringGR_const__OutputArrayR_const__OutputArrayR", // fixme: stores data to Vector<String>, that doesn't work yet
120	])
121}
122
123fn optflow_factory() -> FuncExclude {
124	HashSet::from([
125		"cv_optflow_GPCTrainingSamples_operator_cv_optflow_GPCSamplesVector", // support of "operator &" missing
126	])
127}
128
129fn stitching_factory() -> FuncExclude {
130	HashSet::from([
131		// those function are marked as CV_EXPORTS, but they are missing from the shared libraries
132		"cv_createStitcherScans_bool",
133		"cv_createStitcher_bool",
134	])
135}
136
137fn surface_matching_factory() -> FuncExclude {
138	HashSet::from([
139		// those function are marked as CV_EXPORTS, but they are missing from the shared libraries
140		"cv_ppf_match_3d_PPF3DDetector_read_const_FileNodeR",
141		"cv_ppf_match_3d_PPF3DDetector_write_const_FileStorageR",
142	])
143}
144
145fn tracking_factory() -> FuncExclude {
146	HashSet::from([
147		// those function are marked as CV_EXPORTS, but they are missing from the shared libraries
148		"cv_CvFeatureParams_CvFeatureParams",
149		"cv_CvFeatureParams_create_FeatureType",
150		"cv_CvFeatureParams_create_int",
151		"cv_CvHaarEvaluator_FeatureHaar_FeatureHaar_Size",
152		"cv_CvHaarEvaluator_FeatureHaar_eval_const_const_MatR_Rect_floatX",
153		"cv_CvHaarEvaluator_FeatureHaar_getAreas_const",
154		"cv_CvHaarEvaluator_FeatureHaar_getInitMean_const",
155		"cv_CvHaarEvaluator_FeatureHaar_getInitSigma_const",
156		"cv_CvHaarEvaluator_FeatureHaar_getNumAreas",
157		"cv_CvHaarEvaluator_FeatureHaar_getWeights_const",
158		"cv_CvHaarEvaluator_getFeatures_const",
159		"cv_CvHaarEvaluator_setWinSize_Size",
160		"cv_CvHaarEvaluator_setWinSize_const",
161		"cv_CvHaarEvaluator_writeFeature_const_FileStorageR",
162		"cv_SparseMatConstIterator_operatorSS",
163		"cv__OutputArray__OutputArray_const_vectorLGpuMatGR",
164	])
165}