Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
900f17d5
O
Opencv
项目概览
Greenplum
/
Opencv
10 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
900f17d5
编写于
5月 26, 2023
作者:
A
Alexander Smorkalov
提交者:
GitHub
5月 26, 2023
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #23677 from asmorkalov:as/objc_naming_backport
ObjC naming backport from 5.x
上级
a9424868
bbda6f4c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
15 deletion
+22
-15
modules/objc/generator/gen_objc.py
modules/objc/generator/gen_objc.py
+19
-12
modules/objc/generator/templates/objc_module_body.template
modules/objc/generator/templates/objc_module_body.template
+2
-2
modules/objc/generator/templates/objc_module_header.template
modules/objc/generator/templates/objc_module_header.template
+1
-1
未找到文件。
modules/objc/generator/gen_objc.py
浏览文件 @
900f17d5
...
...
@@ -133,6 +133,11 @@ def header_import(hdr):
#hdr = hdr[pos+8 if pos >= 0 else 0:]
return
hdr
def
make_objcname
(
m
):
return
"Cv"
+
m
if
(
m
[
0
]
in
"0123456789"
)
else
m
def
make_objcmodule
(
m
):
return
"cv"
+
m
if
(
m
[
0
]
in
"0123456789"
)
else
m
T_OBJC_CLASS_HEADER
=
read_contents
(
os
.
path
.
join
(
SCRIPT_DIR
,
'templates/objc_class_header.template'
))
T_OBJC_CLASS_BODY
=
read_contents
(
os
.
path
.
join
(
SCRIPT_DIR
,
'templates/objc_class_body.template'
))
...
...
@@ -299,7 +304,7 @@ class ClassInfo(GeneralInfo):
return
Template
(
"CLASS $namespace::$classpath.$name : $base"
).
substitute
(
**
self
.
__dict__
)
def
getImports
(
self
,
module
):
return
[
"#import
\"
%s.h
\"
"
%
c
for
c
in
sorted
([
m
for
m
in
[
type_dict
[
m
][
"import_module"
]
if
m
in
type_dict
and
"import_module"
in
type_dict
[
m
]
else
m
for
m
in
self
.
imports
]
if
m
!=
self
.
name
])]
return
[
"#import
\"
%s.h
\"
"
%
make_objcname
(
c
)
for
c
in
sorted
([
m
for
m
in
[
type_dict
[
m
][
"import_module"
]
if
m
in
type_dict
and
"import_module"
in
type_dict
[
m
]
else
m
for
m
in
self
.
imports
]
if
m
!=
self
.
name
])]
def
isEnum
(
self
,
c
):
return
c
in
type_dict
and
type_dict
[
c
].
get
(
"is_enum"
,
False
)
...
...
@@ -308,7 +313,7 @@ class ClassInfo(GeneralInfo):
enum_decl
=
[
x
for
x
in
self
.
imports
if
self
.
isEnum
(
x
)
and
type_dict
[
x
][
"import_module"
]
!=
module
]
enum_imports
=
sorted
(
list
(
set
([
type_dict
[
m
][
"import_module"
]
for
m
in
enum_decl
])))
class_decl
=
[
x
for
x
in
self
.
imports
if
not
self
.
isEnum
(
x
)]
return
[
"#import
\"
%s.h
\"
"
%
c
for
c
in
enum_imports
]
+
[
""
]
+
[
"@class %s;"
%
c
for
c
in
sorted
(
class_decl
)]
return
[
"#import
\"
%s.h
\"
"
%
make_objcname
(
c
)
for
c
in
enum_imports
]
+
[
""
]
+
[
"@class %s;"
%
c
for
c
in
sorted
(
class_decl
)]
def
addImports
(
self
,
ctype
,
is_out_type
):
if
ctype
==
self
.
cname
:
...
...
@@ -381,7 +386,7 @@ class ClassInfo(GeneralInfo):
return
Template
(
self
.
objc_header_template
+
"
\n\n
"
).
substitute
(
module
=
M
,
additionalImports
=
self
.
additionalImports
.
getvalue
(),
importBaseClass
=
'#import "'
+
self
.
base
+
'.h"'
if
not
self
.
is_base_class
else
""
,
importBaseClass
=
'#import "'
+
make_objcname
(
self
.
base
)
+
'.h"'
if
not
self
.
is_base_class
else
""
,
forwardDeclarations
=
"
\n
"
.
join
([
_f
for
_f
in
self
.
getForwardDeclarations
(
objcM
)
if
_f
]),
enumDeclarations
=
self
.
enum_declarations
.
getvalue
(),
nativePointerHandling
=
Template
(
...
...
@@ -402,7 +407,7 @@ class ClassInfo(GeneralInfo):
manualMethodDeclations
=
""
,
methodDeclarations
=
self
.
method_declarations
.
getvalue
(),
name
=
self
.
name
,
objcName
=
self
.
objc_name
,
objcName
=
make_objcname
(
self
.
objc_name
)
,
cName
=
self
.
cname
,
imports
=
"
\n
"
.
join
(
self
.
getImports
(
M
)),
docs
=
gen_class_doc
(
self
.
docstring
,
M
,
self
.
member_classes
,
self
.
member_enums
),
...
...
@@ -641,7 +646,7 @@ def build_swift_signature(args):
return
swift_signature
def
build_unrefined_call
(
name
,
args
,
constructor
,
static
,
classname
,
has_ret
):
swift_refine_call
=
(
"let ret = "
if
has_ret
and
not
constructor
else
""
)
+
((
classname
+
"."
)
if
static
else
""
)
+
(
name
if
not
constructor
else
"self.init"
)
swift_refine_call
=
(
"let ret = "
if
has_ret
and
not
constructor
else
""
)
+
((
make_objcname
(
classname
)
+
"."
)
if
static
else
""
)
+
(
name
if
not
constructor
else
"self.init"
)
call_args
=
[]
for
a
in
args
:
if
a
.
ctype
not
in
type_dict
:
...
...
@@ -891,6 +896,7 @@ class ObjectiveCWrapperGenerator(object):
def
gen
(
self
,
srcfiles
,
module
,
output_path
,
output_objc_path
,
common_headers
,
manual_classes
):
self
.
clear
()
self
.
module
=
module
self
.
objcmodule
=
make_objcmodule
(
module
)
self
.
Module
=
module
.
capitalize
()
extension_implementations
=
StringIO
()
# Swift extensions implementations stream
extension_signatures
=
[]
...
...
@@ -935,9 +941,9 @@ class ObjectiveCWrapperGenerator(object):
self
.
classes
[
self
.
Module
].
member_classes
+=
manual_classes
logging
.
info
(
"
\n\n
===== Generating... ====="
)
package_path
=
os
.
path
.
join
(
output_objc_path
,
module
)
package_path
=
os
.
path
.
join
(
output_objc_path
,
self
.
objc
module
)
mkdir_p
(
package_path
)
extension_file
=
"%s/%s
/%sExt.swift"
%
(
output_objc_path
,
module
,
self
.
Module
)
extension_file
=
"%s/%s
Ext.swift"
%
(
package_path
,
make_objcname
(
self
.
Module
)
)
for
ci
in
sorted
(
self
.
classes
.
values
(),
key
=
lambda
x
:
x
.
symbol_id
):
if
ci
.
name
==
"Mat"
:
...
...
@@ -945,15 +951,16 @@ class ObjectiveCWrapperGenerator(object):
ci
.
initCodeStreams
(
self
.
Module
)
self
.
gen_class
(
ci
,
self
.
module
,
extension_implementations
,
extension_signatures
)
classObjcHeaderCode
=
ci
.
generateObjcHeaderCode
(
self
.
module
,
self
.
Module
,
ci
.
objc_name
)
header_file
=
"%s/%s/%s.h"
%
(
output_objc_path
,
module
,
ci
.
objc_name
)
objc_mangled_name
=
make_objcname
(
ci
.
objc_name
)
header_file
=
"%s/%s.h"
%
(
package_path
,
objc_mangled_name
)
self
.
save
(
header_file
,
classObjcHeaderCode
)
self
.
header_files
.
append
(
header_file
)
classObjcBodyCode
=
ci
.
generateObjcBodyCode
(
self
.
module
,
self
.
Module
)
self
.
save
(
"%s/%s
/%s.mm"
%
(
output_objc_path
,
module
,
ci
.
objc
_name
),
classObjcBodyCode
)
self
.
save
(
"%s/%s
.mm"
%
(
package_path
,
objc_mangled
_name
),
classObjcBodyCode
)
ci
.
cleanupCodeStreams
()
self
.
save
(
extension_file
,
extension_implementations
.
getvalue
())
extension_implementations
.
close
()
self
.
save
(
os
.
path
.
join
(
output_path
,
module
+
".txt"
),
self
.
makeReport
())
self
.
save
(
os
.
path
.
join
(
output_path
,
self
.
objc
module
+
".txt"
),
self
.
makeReport
())
def
makeReport
(
self
):
'''
...
...
@@ -1241,7 +1248,7 @@ $unrefined_call$epilogue$ret
"""
).
substitute
(
classname
=
ci
.
name
,
classname
=
make_objcname
(
ci
.
name
)
,
deprecation_decl
=
"@available(*, deprecated)
\n
"
if
fi
.
deprecated
else
""
,
prototype
=
prototype
,
prologue
=
" "
+
"
\n
"
.
join
(
pro
),
...
...
@@ -1282,7 +1289,7 @@ $unrefined_call$epilogue$ret
additional_imports
.
insert
(
0
,
h
)
if
additional_imports
:
ci
.
additionalImports
.
write
(
'
\n
'
.
join
([
'#import %s'
%
h
for
h
in
additional_imports
]))
ci
.
additionalImports
.
write
(
'
\n
'
.
join
([
'#import %s'
%
make_objcname
(
h
)
for
h
in
additional_imports
]))
# constants
wrote_consts_pragma
=
False
...
...
modules/objc/generator/templates/objc_module_body.template
浏览文件 @
900f17d5
...
...
@@ -2,12 +2,12 @@
// This file is auto-generated. Please don't modify it!
//
#import "$
modul
e.h"
#import "$
objcNam
e.h"
#import "CVObjcUtil.h"
$imports
@implementation $
modul
e
@implementation $
objcNam
e
$methodImplementations
...
...
modules/objc/generator/templates/objc_module_header.template
浏览文件 @
900f17d5
...
...
@@ -19,7 +19,7 @@ $enumDeclarations
NS_ASSUME_NONNULL_BEGIN
$docs
CV_EXPORTS @interface $
modul
e : $base
CV_EXPORTS @interface $
objcNam
e : $base
$methodDeclarations
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录