opencv_binding_generator/settings/
func_cfg_attr.rs

1use std::collections::HashMap;
2
3use crate::func::FuncMatcher;
4use crate::SupportedModule;
5
6pub const CFG_ATTR_NOT_ON_WINDOWS: (&str, &str) = (r#"not(target_os = "windows")"#, r#"(!OCVRS_TARGET_OS_WINDOWS)"#);
7pub const CFG_ATTR_ONLY_OPENCV_5: (&str, &str) = ("ocvrs_opencv_branch_5", "(CV_VERSION_MAJOR == 5)");
8
9pub type FuncCfgAttr = FuncMatcher<'static, (&'static str, &'static str)>;
10
11/// identifier => (rust_attr, cpp_attr)
12pub fn func_cfg_attr_factory(module: SupportedModule) -> FuncCfgAttr {
13	match module {
14		SupportedModule::ImgProc => imgproc_factory(),
15		SupportedModule::Tracking => tracking_factory(),
16		_ => FuncCfgAttr::empty(),
17	}
18}
19
20fn imgproc_factory() -> FuncCfgAttr {
21	FuncCfgAttr::create(HashMap::from([(
22		"cv::getRotationMatrix2D_",
23		vec![(pred!(mut, ["center", "angle", "scale"]), CFG_ATTR_NOT_ON_WINDOWS)],
24	)]))
25}
26
27fn tracking_factory() -> FuncCfgAttr {
28	FuncCfgAttr::create(HashMap::from([
29		(
30			"cv::TrackerStateEstimatorAdaBoosting::TrackerAdaBoostingTargetState::TrackerAdaBoostingTargetState",
31			vec![(
32				pred!(mut, ["position", "width", "height", "foreground", "responses"]),
33				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
34			)],
35		),
36		(
37			"cv::TrackerStateEstimatorAdaBoosting::TrackerAdaBoostingTargetState::getTargetResponses",
38			vec![(
39				pred!(const, []),
40				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
41			)],
42		),
43		(
44			"cv::TrackerStateEstimatorAdaBoosting::TrackerAdaBoostingTargetState::isTargetFg",
45			vec![(
46				pred!(const, []),
47				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
48			)],
49		),
50		(
51			"cv::TrackerStateEstimatorAdaBoosting::TrackerAdaBoostingTargetState::setTargetFg",
52			vec![(
53				pred!(mut, ["foreground"]),
54				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
55			)],
56		),
57		(
58			"cv::TrackerStateEstimatorAdaBoosting::TrackerAdaBoostingTargetState::setTargetResponses",
59			vec![(
60				pred!(mut, ["responses"]),
61				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
62			)],
63		),
64		(
65			"cv::TrackerStateEstimatorMILBoosting::TrackerMILTargetState::TrackerMILTargetState",
66			vec![(
67				pred!(mut, ["position", "width", "height", "foreground", "features"]),
68				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
69			)],
70		),
71		(
72			"cv::TrackerStateEstimatorMILBoosting::TrackerMILTargetState::getFeatures",
73			vec![(
74				pred!(const, []),
75				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
76			)],
77		),
78		(
79			"cv::TrackerStateEstimatorMILBoosting::TrackerMILTargetState::isTargetFg",
80			vec![(
81				pred!(const, []),
82				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
83			)],
84		),
85		(
86			"cv::TrackerStateEstimatorMILBoosting::TrackerMILTargetState::setFeatures",
87			vec![(
88				pred!(mut, ["features"]),
89				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
90			)],
91		),
92		(
93			"cv::TrackerStateEstimatorMILBoosting::TrackerMILTargetState::setTargetFg",
94			vec![(
95				pred!(mut, ["foreground"]),
96				CFG_ATTR_NOT_ON_WINDOWS, // 3.4
97			)],
98		),
99	]))
100}