Skip to content

Commit 8e9c5cc

Browse files
authored
Merge branch 'master' into vs/docs-issue3
2 parents e8285eb + a8d630a commit 8e9c5cc

18 files changed

Lines changed: 1165 additions & 489 deletions

β€ŽProject.tomlβ€Ž

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
name = "OpenCV"
22
uuid = "f878e3a2-a245-4720-8660-60795d644f2a"
33
authors = ["Archit Rungta <architrungta120@gmail.com>"]
4-
version = "4.8.0"
4+
version = "4.10.0"
55

66
[deps]
77
CxxWrap = "1f15a43c-97ca-5a2a-ae31-89f07a497df4"
88
FileIO = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549"
99
OpenCV_jll = "33b9d88c-85f9-5d73-bd91-4e2b95a9aa0b"
1010

1111
[compat]
12-
CxxWrap = "0.16, 0.17"
13-
FileIO = "1.16, 1.17"
12+
CxxWrap = "0.17"
13+
FileIO = "1.17"
1414
OpenCV_jll = "4.13"
1515
julia = "1.10"

β€Žgen/CMakeLists.txtβ€Ž

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,6 @@ execute_process(
115115
)
116116

117117
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/gen/cpp_files/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/gen/autogen_cpp)
118-
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/gen/jl_cxx_files/ DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/gen/autogen_jl)
119118

120119
ocv_glob_module_sources()
121120
ocv_module_include_directories()

β€Žgen/gen3_cpp.pyβ€Ž

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,26 @@ def gen(srcfiles, preprocessor_definitions):
253253
nsi = sorted(namespaces.items(), key =lambda x: x[0])
254254
added_methods = set()
255255

256+
# Pre-populate the `enums` list across all namespaces so the per-namespace
257+
# `register_types` emission below can filter out enum typedefs. Without this,
258+
# enum return/arg types (e.g. cv::ORB::ScoreType) leak into `mod.add_type<...>`
259+
# in the generated C++ β€” but the Julia side declares them as `const X = Int64`
260+
# (not a wrapped type), so loading the .so trips CxxWrap's
261+
# "No appropriate factory for type ..." at @wrapmodule time.
262+
for _, ns in nsi:
263+
for e1, e2 in ns.enums.items():
264+
# Push every form a type can appear in: hdr_parser normalizes arg
265+
# types via `::` -> `_` and strips `cv::` (see hdr_parser.parse_arg,
266+
# ~line 385), giving e.g. `ORB_ScoreType`. But parse_tree.py reads
267+
# `decl[4]` (the *original* return type) into self.rettype, so a
268+
# nested enum return reaches us as `ORB::ScoreType` (cv:: stripped,
269+
# `::` preserved). Cover both shapes β€” plus the fully-qualified
270+
# form β€” so `tp in enums` matches in every code path.
271+
enums.append(e2[0]) # cv::ORB::ScoreType
272+
enums.append(e2[1])
273+
enums.append(e2[0].replace("cv::", "")) # ORB::ScoreType
274+
enums.append(e2[0].replace("cv::", "").replace("::", '_')) # ORB_ScoreType
275+
256276
for name, ns in nsi:
257277
cpp_code.write("using namespace %s;\n" % name.replace(".", "::"))
258278

@@ -299,14 +319,9 @@ def sort_classes(classes):
299319
};
300320
""" % (cl.name.replace('.', '::'), cl.base.replace('.', '::')))
301321

302-
for e1,e2 in ns.enums.items():
303-
# cpp_code.write('\n mod.add_bits<{0}>("{1}", jlcxx::julia_type("CppEnum"));'.format(e2[0], e2[1]))
304-
enums.append(e2[0])
305-
enums.append(e2[1])
306-
enums.append(e2[0].replace("cv::", "").replace("::", '_'))
307-
308-
309322
for tp in ns.register_types:
323+
if tp in enums:
324+
continue # enum typedefs are passed as int64, not wrapped as types
310325
cpp_code.write(' mod.add_type<%s>("%s");\n' %(tp, normalize_class_name(tp)))
311326

312327
# print(enums)

β€Žgen/jl_cxx_files/Mat.jlβ€Ž

Lines changed: 0 additions & 49 deletions
This file was deleted.

β€Žgen/jl_cxx_files/OpenCV.jlβ€Ž

Lines changed: 0 additions & 7 deletions
This file was deleted.

β€Žgen/jl_cxx_files/Vec.jlβ€Ž

Lines changed: 0 additions & 50 deletions
This file was deleted.

β€Žgen/jl_cxx_files/cv_cxx.jlβ€Ž

Lines changed: 0 additions & 54 deletions
This file was deleted.

β€Žgen/jl_cxx_files/cv_manual_wrap.jlβ€Ž

Lines changed: 0 additions & 49 deletions
This file was deleted.

β€Žgen/jl_cxx_files/mat_conversion.jlβ€Ž

Lines changed: 0 additions & 106 deletions
This file was deleted.

0 commit comments

Comments
Β (0)