opencv_binding_generator/settings/
force_infallible.rs

1use std::collections::HashMap;
2
3use crate::func::FuncMatcher;
4use crate::SupportedModule;
5
6pub type ForceInfallible = FuncMatcher<'static, ()>;
7
8pub fn force_infallible_factory(module: SupportedModule) -> ForceInfallible {
9	match module {
10		SupportedModule::Core => core_factory(),
11		_ => ForceInfallible::empty(),
12	}
13}
14
15fn core_factory() -> ForceInfallible {
16	FuncMatcher::create(HashMap::from([
17		// just returns static/constant data
18		("cv::noArray", vec![(pred!(mut, []), ())]),
19		("cv::getVersionMajor", vec![(pred!(mut, []), ())]),
20		("cv::getVersionMinor", vec![(pred!(mut, []), ())]),
21		("cv::getVersionRevision", vec![(pred!(mut, []), ())]),
22		// not doing anything that can cause an exception
23		("cv::Mat::empty", vec![(pred!(const, []), ())]),
24		("cv::Mat::total", vec![(pred!(const, []), ())]),
25		("cv::Mat::isContinuous", vec![(pred!(const, []), ())]),
26		("cv::Mat::isSubmatrix", vec![(pred!(const, []), ())]),
27		("cv::Mat::elemSize1", vec![(pred!(const, []), ())]),
28		("cv::Mat::type", vec![(pred!(const, []), ())]),
29		("cv::Mat::depth", vec![(pred!(const, []), ())]),
30		("cv::Mat::channels", vec![(pred!(const, []), ())]),
31		("cv::UMat::empty", vec![(pred!(const, []), ())]),
32		("cv::UMat::total", vec![(pred!(const, []), ())]),
33		("cv::UMat::isContinuous", vec![(pred!(const, []), ())]),
34		("cv::UMat::isSubmatrix", vec![(pred!(const, []), ())]),
35		("cv::UMat::elemSize1", vec![(pred!(const, []), ())]),
36		("cv::UMat::type", vec![(pred!(const, []), ())]),
37		("cv::UMat::depth", vec![(pred!(const, []), ())]),
38		("cv::UMat::channels", vec![(pred!(const, []), ())]),
39		("cv::SparseMat::elemSize", vec![(pred!(const, []), ())]),
40		("cv::SparseMat::elemSize1", vec![(pred!(const, []), ())]),
41		("cv::SparseMat::type", vec![(pred!(const, []), ())]),
42		("cv::SparseMat::depth", vec![(pred!(const, []), ())]),
43		("cv::SparseMat::channels", vec![(pred!(const, []), ())]),
44		// marked CV_NOEXCEPT since OpenCV 4.5.2, propagate those changes to earlier versions
45		("cv::Mat::Mat", vec![(pred!(mut, []), ())]),
46		("cv::MatSize::MatSize", vec![(pred!(mut, ["_p"]), ())]),
47		("cv::MatSize::dims", vec![(pred!(const, []), ())]),
48		("cv::MatSize::operator const int*", vec![(pred!(const, []), ())]),
49		("cv::MatStep::MatStep", vec![(pred!(mut, []), ())]),
50		("cv::MatStep::operator[]", vec![(pred!(mut, ["i"]), ())]),
51		("cv::UMat::UMat", vec![(pred!(mut, ["usageFlags"]), ())]),
52		("cv::ocl::Context::Context", vec![(pred!(mut, []), ())]),
53		("cv::ocl::Device::Device", vec![(pred!(mut, []), ())]),
54		("cv::ocl::Image2D::Image2D", vec![(pred!(mut, []), ())]),
55		("cv::ocl::Kernel::Kernel", vec![(pred!(mut, []), ())]),
56		("cv::ocl::KernelArg::KernelArg", vec![(pred!(mut, []), ())]),
57		("cv::ocl::Platform::Platform", vec![(pred!(mut, []), ())]),
58		("cv::ocl::PlatformInfo::PlatformInfo", vec![(pred!(mut, []), ())]),
59		("cv::ocl::Program::Program", vec![(pred!(mut, []), ())]),
60		("cv::ocl::ProgramSource::ProgramSource", vec![(pred!(mut, []), ())]),
61		("cv::ocl::Queue::Queue", vec![(pred!(mut, []), ())]),
62	]))
63}