1use std::collections::HashMap;
2
3use crate::func::FuncMatcher;
4use crate::type_ref::Constness::{Const, Mut};
5use crate::type_ref::TypeRefTypeHint;
6use crate::writer::rust_native::type_ref::Lifetime;
7use crate::SupportedModule;
8
9pub const ARG_OVERRIDE_SELF: &str = "this";
10
11pub type ArgOverride = FuncMatcher<'static, HashMap<&'static str, TypeRefTypeHint>>;
12pub type ReturnOverride = FuncMatcher<'static, TypeRefTypeHint>;
13pub type PropertyOverride = HashMap<&'static str, TypeRefTypeHint>;
14
15pub fn arg_override_factory(module: SupportedModule) -> ArgOverride {
16 match module {
17 SupportedModule::Calib3d | SupportedModule::Calib | SupportedModule::ThreeD => calib3d_arg_override_factory(),
18 SupportedModule::Core => core_arg_override_factory(),
19 SupportedModule::Freetype => freetype_arg_override_factory(),
20 SupportedModule::HighGui => highgui_arg_override_factory(),
21 SupportedModule::ImgProc => imgproc_arg_override_factory(),
22 SupportedModule::ObjDetect => objdetect_arg_override_factory(),
23 SupportedModule::VideoIo => videoio_arg_override_factory(),
24 SupportedModule::XImgProc => ximgproc_arg_override_factory(),
25 _ => ArgOverride::empty(),
26 }
27}
28
29pub fn return_override_factory(module: SupportedModule) -> ReturnOverride {
30 match module {
31 SupportedModule::Core => core_return_override_factory(),
32 SupportedModule::ObjDetect => objdetect_return_override_factory(),
33 _ => ReturnOverride::empty(),
34 }
35}
36
37pub fn property_override_factory(module: SupportedModule) -> PropertyOverride {
38 match module {
39 SupportedModule::Core => core_property_override_factory(),
40 _ => PropertyOverride::default(),
41 }
42}
43
44fn calib3d_arg_override_factory() -> ArgOverride {
45 FuncMatcher::create(HashMap::from([
46 (
47 "cv::getOptimalNewCameraMatrix",
48 vec![(
49 pred!(
50 mut,
51 [
52 "cameraMatrix",
53 "distCoeffs",
54 "imageSize",
55 "alpha",
56 "newImgSize",
57 "validPixROI",
58 "centerPrincipalPoint",
59 ]
60 ),
61 HashMap::from([("validPixROI", TypeRefTypeHint::Nullable)]),
62 )],
63 ),
64 (
65 "cv::findCirclesGrid",
66 vec![
67 (
68 pred!(
69 mut,
70 ["image", "patternSize", "centers", "flags", "blobDetector", "parameters"]
71 ),
72 HashMap::from([("blobDetector", TypeRefTypeHint::Nullable)]),
73 ),
74 (
75 pred!(mut, ["image", "patternSize", "centers", "flags", "blobDetector"]),
76 HashMap::from([("blobDetector", TypeRefTypeHint::Nullable)]),
77 ),
78 ],
79 ),
80 ]))
81}
82
83fn core_arg_override_factory() -> ArgOverride {
84 FuncMatcher::create(HashMap::from([
85 (
86 "cv::Mat::at",
87 vec![(pred!(["idx"]), HashMap::from([("idx", TypeRefTypeHint::Slice)]))],
88 ),
89 (
90 "cv::Mat::ptr",
91 vec![(pred!(["idx"]), HashMap::from([("idx", TypeRefTypeHint::Slice)]))],
92 ),
93 (
94 "cv::Mat::Mat",
95 vec![
96 (
97 pred!(mut, ["sizes", "type", "data", "steps"]),
98 HashMap::from([("steps", TypeRefTypeHint::NullableSlice)]),
99 ),
100 (
101 pred!(mut, ["ndims", "sizes", "type", "s"]),
102 HashMap::from([("steps", TypeRefTypeHint::NullableSlice)]),
103 ),
104 (
105 pred!(mut, ["ndims", "sizes", "type", "data", "steps"]),
106 HashMap::from([("steps", TypeRefTypeHint::NullableSlice)]),
107 ),
108 ],
109 ),
110 (
111 "cv::minMaxLoc",
112 vec![
113 (
114 pred!(mut, ["src", "minVal", "maxVal", "minLoc", "maxLoc", "mask"]),
115 HashMap::from([
116 ("minVal", TypeRefTypeHint::Nullable),
117 ("maxVal", TypeRefTypeHint::Nullable),
118 ("minLoc", TypeRefTypeHint::Nullable),
119 ("maxLoc", TypeRefTypeHint::Nullable),
120 ]),
121 ),
122 (
123 pred!(mut, ["a", "minVal", "maxVal", "minIdx", "maxIdx"]),
124 HashMap::from([
125 ("minVal", TypeRefTypeHint::Nullable),
126 ("maxVal", TypeRefTypeHint::Nullable),
127 ("minIdx", TypeRefTypeHint::Nullable),
128 ("maxIdx", TypeRefTypeHint::Nullable),
129 ]),
130 ),
131 ],
132 ),
133 (
134 "cv::minMaxIdx",
135 vec![(
136 pred!(mut, ["src", "minVal", "maxVal", "minIdx", "maxIdx", "mask"]),
137 HashMap::from([
138 ("minVal", TypeRefTypeHint::Nullable),
139 ("maxVal", TypeRefTypeHint::Nullable),
140 ("minIdx", TypeRefTypeHint::Nullable),
141 ("maxIdx", TypeRefTypeHint::Nullable),
142 ]),
143 )],
144 ),
145 (
146 "cv::RotatedRect::points",
147 vec![(
148 pred!(const, ["pts"]),
149 HashMap::from([("pts", TypeRefTypeHint::AddArrayLength(4))]),
150 )],
151 ),
152 (
153 "cv::MatConstIterator::pos",
154 vec![(
155 pred!(const, ["_idx"]),
156 HashMap::from([("_idx", TypeRefTypeHint::PrimitivePtrAsRaw)]),
157 )],
158 ),
159 (
160 "cv::MatSize::MatSize",
161 vec![(
162 pred!(mut, ["_p"]),
163 HashMap::from([("_p", TypeRefTypeHint::PrimitivePtrAsRaw)]),
164 )],
165 ),
166 (
167 "cv::cuda::GpuMat::setDefaultAllocator",
168 vec![(
169 pred!(mut, ["allocator"]),
170 HashMap::from([("allocator", TypeRefTypeHint::ExplicitLifetime(Lifetime::statik()))]),
171 )],
172 ),
173 (
174 "cv::ocl::convertTypeStr",
175 vec![(
176 pred!(mut, ["sdepth", "ddepth", "cn", "buf", "buf_size"]),
177 HashMap::from([("buf", TypeRefTypeHint::StringWithLen("buf_size".into()))]),
178 )],
179 ),
180 ]))
181}
182
183fn freetype_arg_override_factory() -> ArgOverride {
184 FuncMatcher::create(HashMap::from([(
185 "cv::freetype::FreeType2::loadFontData",
186 vec![(
187 pred!(mut, ["pBuf", "bufSize", "idx"]),
188 HashMap::from([("pBuf", TypeRefTypeHint::PrimitivePtrAsRaw)]),
189 )],
190 )]))
191}
192
193fn highgui_arg_override_factory() -> ArgOverride {
194 FuncMatcher::create(HashMap::from([(
195 "cv::createTrackbar",
196 vec![(
197 pred!(mut, ["trackbarname", "winname", "value", "count", "onChange", "userdata"],),
198 HashMap::from([("value", TypeRefTypeHint::Nullable)]),
199 )],
200 )]))
201}
202
203fn imgproc_arg_override_factory() -> ArgOverride {
204 FuncMatcher::create(HashMap::from([
205 (
206 "cv::getAffineTransform",
207 vec![(
208 pred!(mut, ["src", "dst"]),
209 HashMap::from([
210 ("src", TypeRefTypeHint::AddArrayLength(3)),
211 ("dst", TypeRefTypeHint::AddArrayLength(3)),
212 ]),
213 )],
214 ),
215 (
216 "cv::getPerspectiveTransform",
217 vec![
218 (
219 pred!(mut, ["src", "dst", "solveMethod"]),
220 HashMap::from([
221 ("src", TypeRefTypeHint::AddArrayLength(4)),
222 ("dst", TypeRefTypeHint::AddArrayLength(4)),
223 ]),
224 ),
225 (
226 pred!(mut, ["src", "dst"]), HashMap::from([
228 ("src", TypeRefTypeHint::AddArrayLength(4)),
229 ("dst", TypeRefTypeHint::AddArrayLength(4)),
230 ]),
231 ),
232 ],
233 ),
234 (
235 "cv::EMD",
236 vec![(
237 pred!(mut, ["signature1", "signature2", "distType", "cost", "lowerBound", "flow"],),
238 HashMap::from([("lowerBound", TypeRefTypeHint::Nullable)]),
239 )],
240 ),
241 ]))
242}
243
244fn objdetect_arg_override_factory() -> ArgOverride {
245 FuncMatcher::create(HashMap::from([(
246 "cv::decodeQRCode",
247 vec![(
248 pred!(mut, ["in", "points", "decoded_info", "straight_qrcode"]), HashMap::from([("decoded_info", TypeRefTypeHint::StringAsBytes(None))]),
250 )],
251 )]))
252}
253
254fn videoio_arg_override_factory() -> ArgOverride {
255 FuncMatcher::create(HashMap::from([(
256 "cv::VideoWriter::fourcc",
257 vec![(
258 pred!(mut, ["c1", "c2", "c3", "c4"]),
259 HashMap::from([
260 ("c1", TypeRefTypeHint::CharAsRustChar),
261 ("c2", TypeRefTypeHint::CharAsRustChar),
262 ("c3", TypeRefTypeHint::CharAsRustChar),
263 ("c4", TypeRefTypeHint::CharAsRustChar),
264 ]),
265 )],
266 )]))
267}
268
269fn ximgproc_arg_override_factory() -> ArgOverride {
270 FuncMatcher::create(HashMap::from([(
271 "cv::ximgproc::createStructuredEdgeDetection",
272 vec![(
273 pred!(mut, ["model", "howToGetFeatures"]),
274 HashMap::from([("howToGetFeatures", TypeRefTypeHint::Nullable)]),
275 )],
276 )]))
277}
278
279fn core_return_override_factory() -> ReturnOverride {
280 FuncMatcher::create(HashMap::from([
282 (
284 "cv::Mat::Mat",
285 vec![
286 (
287 pred!(mut, ["m"], ["const cv::Mat*"]),
288 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Elided),
289 ),
290 (
291 pred!(mut, ["m", "roi"]),
292 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Elided),
293 ),
294 (
295 pred!(mut, ["m", "ranges"]),
296 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Custom("boxed")),
297 ),
298 (
299 pred!(mut, ["m", "rowRange", "colRange"]),
300 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Custom("boxed")),
301 ),
302 ],
303 ),
304 (
305 "cv::Mat::reshape",
306 vec![
307 (
308 pred!(const, ["cn", "rows"]),
309 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
310 ),
311 (
312 pred!(const, ["cn", "newndims", "newsz"]),
313 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
314 ),
315 (
316 pred!(const, ["cn", "newshape"]),
317 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
318 ),
319 ],
320 ),
321 (
322 "cv::Mat::row",
323 vec![(
324 pred!(const, ["y"]),
325 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
326 )],
327 ),
328 (
329 "cv::Mat::col",
330 vec![(
331 pred!(const, ["x"]),
332 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
333 )],
334 ),
335 (
336 "cv::Mat::rowRange",
337 vec![
338 (
339 pred!(const, ["startrow", "endrow"]),
340 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
341 ),
342 (
343 pred!(const, ["r"]),
344 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
345 ),
346 ],
347 ),
348 (
349 "cv::Mat::colRange",
350 vec![
351 (
352 pred!(const, ["startcol", "endcol"]),
353 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
354 ),
355 (
356 pred!(const, ["r"]),
357 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
358 ),
359 ],
360 ),
361 (
362 "cv::Mat::diag",
363 vec![(
364 pred!(const, ["d"]),
365 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
366 )],
367 ),
368 (
369 "cv::Mat::operator()",
370 vec![
371 (
372 pred!(const, ["roi"]),
373 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
374 ),
375 (
376 pred!(const, ["rowRange", "colRange"]),
377 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
378 ),
379 (
380 pred!(const, ["ranges"]),
381 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
382 ),
383 ],
384 ),
385 (
387 "cv::cuda::GpuMatND::createGpuMatHeader",
388 vec![
389 (
390 pred!(const, ["idx", "rowRange", "colRange"]),
391 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
392 ),
393 (
394 pred!(const, []),
395 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
396 ),
397 ],
398 ),
399 (
400 "cv::cuda::GpuMatND::operator()",
401 vec![
402 (
403 pred!(const, ["idx", "rowRange", "colRange"]),
404 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
405 ),
406 (
407 pred!(const, ["ranges"]),
408 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
409 ),
410 ],
411 ),
412 (
414 "cv::cuda::GpuMat::GpuMat",
415 vec![
416 (
417 pred!(mut, ["m", "rowRange", "colRange"]),
418 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Elided),
419 ),
420 (
421 pred!(mut, ["m", "roi"]),
422 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Elided),
423 ),
424 ],
425 ),
426 (
427 "cv::cuda::GpuMat::row",
428 vec![(
429 pred!(const, ["y"]),
430 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
431 )],
432 ),
433 (
434 "cv::cuda::GpuMat::col",
435 vec![(
436 pred!(const, ["x"]),
437 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
438 )],
439 ),
440 (
441 "cv::cuda::GpuMat::rowRange",
442 vec![
443 (
444 pred!(const, ["startrow", "endrow"]),
445 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
446 ),
447 (
448 pred!(const, ["r"]),
449 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
450 ),
451 ],
452 ),
453 (
454 "cv::cuda::GpuMat::colRange",
455 vec![
456 (
457 pred!(const, ["startcol", "endcol"]),
458 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
459 ),
460 (
461 pred!(const, ["r"]),
462 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
463 ),
464 ],
465 ),
466 (
467 "cv::cuda::GpuMat::reshape",
468 vec![(
469 pred!(const, ["cn", "rows"]),
470 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
471 )],
472 ),
473 (
474 "cv::cuda::GpuMat::operator()",
475 vec![
476 (
477 pred!(const, ["rowRange", "colRange"]),
478 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
479 ),
480 (
481 pred!(const, ["roi"]),
482 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
483 ),
484 ],
485 ),
486 (
488 "cv::UMat::UMat",
489 vec![
490 (
491 pred!(mut, ["m", "rowRange", "colRange"]),
492 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Custom("boxed")),
493 ),
494 (
495 pred!(mut, ["m", "roi"]),
496 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Elided),
497 ),
498 (
499 pred!(mut, ["m", "ranges"]),
500 TypeRefTypeHint::BoxedAsRef(Mut, &["m"], Lifetime::Custom("boxed")),
501 ),
502 ],
503 ),
504 (
505 "cv::UMat::row",
506 vec![(
507 pred!(const, ["y"]),
508 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
509 )],
510 ),
511 (
512 "cv::UMat::col",
513 vec![(
514 pred!(const, ["x"]),
515 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
516 )],
517 ),
518 (
519 "cv::UMat::rowRange",
520 vec![
521 (
522 pred!(const, ["startrow", "endrow"]),
523 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
524 ),
525 (
526 pred!(const, ["r"]),
527 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
528 ),
529 ],
530 ),
531 (
532 "cv::UMat::colRange",
533 vec![
534 (
535 pred!(const, ["startcol", "endcol"]),
536 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
537 ),
538 (
539 pred!(const, ["r"]),
540 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
541 ),
542 ],
543 ),
544 (
545 "cv::UMat::diag",
546 vec![(
547 pred!(const, ["d"]),
548 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
549 )],
550 ),
551 (
552 "cv::UMat::reshape",
553 vec![
554 (
555 pred!(const, ["cn", "rows"]),
556 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
557 ),
558 (
559 pred!(const, ["cn", "newndims", "newsz"]),
560 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
561 ),
562 ],
563 ),
564 (
565 "cv::UMat::operator()",
566 vec![
567 (
568 pred!(const, ["rowRange", "colRange"]),
569 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
570 ),
571 (
572 pred!(const, ["roi"]),
573 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
574 ),
575 (
576 pred!(const, ["ranges"]),
577 TypeRefTypeHint::BoxedAsRef(Mut, &[ARG_OVERRIDE_SELF], Lifetime::Elided),
578 ),
579 ],
580 ),
581 (
582 "cv::_InputArray::_InputArray",
583 vec![
584 (
585 pred!(mut, ["m"]),
586 TypeRefTypeHint::BoxedAsRef(Const, &["m"], Lifetime::Elided),
587 ),
588 (
589 pred!(mut, ["expr"]),
590 TypeRefTypeHint::BoxedAsRef(Const, &["expr"], Lifetime::Elided),
591 ),
592 (
593 pred!(mut, ["vec"]),
594 TypeRefTypeHint::BoxedAsRef(Const, &["vec"], Lifetime::Elided),
595 ),
596 (
597 pred!(mut, ["val"]),
598 TypeRefTypeHint::BoxedAsRef(Const, &["val"], Lifetime::Elided),
599 ),
600 (
601 pred!(mut, ["d_mat"]),
602 TypeRefTypeHint::BoxedAsRef(Const, &["d_mat"], Lifetime::Elided),
603 ),
604 (
605 pred!(mut, ["d_mat_array"]),
606 TypeRefTypeHint::BoxedAsRef(Const, &["d_mat_array"], Lifetime::Elided),
607 ),
608 (
609 pred!(mut, ["buf"]),
610 TypeRefTypeHint::BoxedAsRef(Const, &["buf"], Lifetime::Elided),
611 ),
612 (
613 pred!(mut, ["cuda_mem"]),
614 TypeRefTypeHint::BoxedAsRef(Const, &["cuda_mem"], Lifetime::Elided),
615 ),
616 (
617 pred!(mut, ["um"]),
618 TypeRefTypeHint::BoxedAsRef(Const, &["um"], Lifetime::Elided),
619 ),
620 (
621 pred!(mut, ["umv"]),
622 TypeRefTypeHint::BoxedAsRef(Const, &["umv"], Lifetime::Elided),
623 ),
624 ],
625 ),
626 (
627 "cv::_OutputArray::_OutputArray",
628 vec![
629 (
630 pred!(mut, ["m"]),
631 TypeRefTypeHint::BoxedAsRef(Const, &["m"], Lifetime::Elided),
632 ),
633 (
634 pred!(mut, ["vec"]),
635 TypeRefTypeHint::BoxedAsRef(Const, &["vec"], Lifetime::Elided),
636 ),
637 (
638 pred!(mut, ["d_mat"]),
639 TypeRefTypeHint::BoxedAsRef(Const, &["d_mat"], Lifetime::Elided),
640 ),
641 (
642 pred!(mut, ["buf"]),
643 TypeRefTypeHint::BoxedAsRef(Const, &["buf"], Lifetime::Elided),
644 ),
645 (
646 pred!(mut, ["cuda_mem"]),
647 TypeRefTypeHint::BoxedAsRef(Const, &["cuda_mem"], Lifetime::Elided),
648 ),
649 ],
650 ),
651 (
652 "cv::_InputOutputArray::_InputOutputArray",
653 vec![
654 (
655 pred!(mut, ["m"]),
656 TypeRefTypeHint::BoxedAsRef(Const, &["m"], Lifetime::Elided),
657 ),
658 (
659 pred!(mut, ["vec"]),
660 TypeRefTypeHint::BoxedAsRef(Const, &["vec"], Lifetime::Elided),
661 ),
662 (
663 pred!(mut, ["d_mat"]),
664 TypeRefTypeHint::BoxedAsRef(Const, &["d_mat"], Lifetime::Elided),
665 ),
666 (
667 pred!(mut, ["buf"]),
668 TypeRefTypeHint::BoxedAsRef(Const, &["buf"], Lifetime::Elided),
669 ),
670 (
671 pred!(mut, ["cuda_mem"]),
672 TypeRefTypeHint::BoxedAsRef(Const, &["cuda_mem"], Lifetime::Elided),
673 ),
674 ],
675 ),
676 ]))
677}
678
679fn objdetect_return_override_factory() -> ReturnOverride {
680 FuncMatcher::create(HashMap::from([
681 (
682 "cv::QRCodeDetector::decode",
683 vec![(
684 pred!(mut, ["img", "points", "straight_qrcode"]),
685 TypeRefTypeHint::StringAsBytes(None),
686 )],
687 ),
688 (
689 "cv::QRCodeDetector::decodeCurved",
690 vec![(
691 pred!(mut, ["img", "points", "straight_qrcode"]),
692 TypeRefTypeHint::StringAsBytes(None),
693 )],
694 ),
695 (
696 "cv::QRCodeDetector::detectAndDecode",
697 vec![(
698 pred!(mut, ["img", "points", "straight_qrcode"]),
699 TypeRefTypeHint::StringAsBytes(None),
700 )],
701 ),
702 (
703 "cv::QRCodeDetector::detectAndDecodeCurved",
704 vec![(
705 pred!(mut, ["img", "points", "straight_qrcode"],),
706 TypeRefTypeHint::StringAsBytes(None),
707 )],
708 ),
709 (
710 "cv::GraphicalCodeDetector::decode",
711 vec![(
712 pred!(const, ["img", "points", "straight_code"]),
713 TypeRefTypeHint::StringAsBytes(None),
714 )],
715 ),
716 (
717 "cv::GraphicalCodeDetector::detectAndDecode",
718 vec![(
719 pred!(const, ["img", "points", "straight_code"],),
720 TypeRefTypeHint::StringAsBytes(None),
721 )],
722 ),
723 ]))
724}
725
726fn core_property_override_factory() -> PropertyOverride {
727 HashMap::from([(
728 "cv::cuda::GpuMat::allocator",
729 TypeRefTypeHint::ExplicitLifetime(Lifetime::statik()),
730 )])
731}