Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
O
opencv
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
opencv
Commits
32d4d792
Commit
32d4d792
authored
Mar 15, 2012
by
Andrey Pavlenko
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Java API: adding C++ classes inheritance support
parent
b3f10835
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
51 deletions
+35
-51
CvStatModelTest.java
.../android_test/src/org/opencv/test/ml/CvStatModelTest.java
+0
-29
gen_java.py
modules/java/gen_java.py
+35
-22
No files found.
modules/java/android_test/src/org/opencv/test/ml/CvStatModelTest.java
deleted
100644 → 0
View file @
b3f10835
package
org
.
opencv
.
test
.
ml
;
import
org.opencv.ml.CvStatModel
;
import
junit.framework.TestCase
;
public
class
CvStatModelTest
extends
TestCase
{
public
void
testCvStatModel
()
{
new
CvStatModel
();
}
public
void
testLoadString
()
{
fail
(
"Not yet implemented"
);
}
public
void
testLoadStringString
()
{
fail
(
"Not yet implemented"
);
}
public
void
testSaveString
()
{
fail
(
"Not yet implemented"
);
}
public
void
testSaveStringString
()
{
fail
(
"Not yet implemented"
);
}
}
modules/java/gen_java.py
View file @
32d4d792
...
...
@@ -533,11 +533,11 @@ class ClassPropInfo(object):
self
.
rw
=
"/RW"
in
decl
[
3
]
class
ClassInfo
(
object
):
def
__init__
(
self
,
decl
):
# [ 'class/struct cname',
[bases]
, [modlist] ]
def
__init__
(
self
,
decl
):
# [ 'class/struct cname',
': base'
, [modlist] ]
name
=
decl
[
0
]
name
=
name
[
name
.
find
(
" "
)
+
1
:]
.
strip
()
self
.
cname
=
self
.
name
=
self
.
jname
=
re
.
sub
(
r"^cv\."
,
""
,
name
)
self
.
cname
=
self
.
cname
.
replace
(
"."
,
"::"
)
self
.
cname
=
self
.
cname
.
replace
(
"."
,
"::"
)
self
.
methods
=
{}
self
.
methods_suffixes
=
{}
self
.
consts
=
[]
# using a list to save the occurence order
...
...
@@ -548,6 +548,10 @@ class ClassInfo(object):
for
m
in
decl
[
2
]:
if
m
.
startswith
(
"="
):
self
.
jname
=
m
[
1
:]
self
.
base
=
''
if
decl
[
1
]:
self
.
base
=
re
.
sub
(
r"\b"
+
self
.
jname
+
r"\b"
,
""
,
decl
[
1
]
.
replace
(
":"
,
""
))
.
strip
()
class
ArgInfo
(
object
):
...
...
@@ -613,7 +617,7 @@ class JavaWrapperGenerator(object):
self
.
clear
()
def
clear
(
self
):
self
.
classes
=
{
"Mat"
:
ClassInfo
([
'class Mat'
,
[],
[]
])
}
self
.
classes
=
{
"Mat"
:
ClassInfo
([
'class Mat'
,
''
,
[],
[]
])
}
self
.
module
=
""
self
.
Module
=
""
self
.
java_code
=
{}
# { class : {j_code, jn_code} }
...
...
@@ -624,11 +628,28 @@ class JavaWrapperGenerator(object):
self
.
classes_map
=
[]
self
.
classes_simple
=
[]
def
add_class_code_stream
(
self
,
class_name
):
def
add_class_code_stream
(
self
,
class_name
,
cls_base
=
''
):
jname
=
self
.
classes
[
class_name
]
.
jname
self
.
java_code
[
class_name
]
=
{
"j_code"
:
StringIO
(),
"jn_code"
:
StringIO
(),
}
if
class_name
!=
self
.
Module
:
self
.
java_code
[
class_name
][
"j_code"
]
.
write
(
"""
if
cls_base
:
self
.
java_code
[
class_name
][
"j_code"
]
.
write
(
"""
//
// This file is auto-generated. Please don't modify it!
//
package org.opencv.
%(m)
s;
$imports
// C++: class
%(c)
s
//javadoc:
%(c)
s
public class
%(jc)
s extends
%(base)
s {
protected
%(jc)
s(long addr) { super(addr); }
"""
%
{
'm'
:
self
.
module
,
'c'
:
class_name
,
'jc'
:
jname
,
'base'
:
cls_base
})
else
:
# not cls_base
self
.
java_code
[
class_name
][
"j_code"
]
.
write
(
"""
//
// This file is auto-generated. Please don't modify it!
//
...
...
@@ -643,8 +664,7 @@ public class %(jc)s {
protected final long nativeObj;
protected
%(jc)
s(long addr) { nativeObj = addr; }
"""
%
{
'm'
:
self
.
module
,
'c'
:
class_name
,
'jc'
:
jname
}
)
"""
%
{
'm'
:
self
.
module
,
'c'
:
class_name
,
'jc'
:
jname
})
else
:
# class_name == self.Module
self
.
java_code
[
class_name
][
"j_code"
]
.
write
(
"""
//
...
...
@@ -681,7 +701,7 @@ public class %(jc)s {
return
if
'/Simple'
in
decl
[
2
]:
self
.
classes_simple
.
append
(
name
)
if
(
'/Map'
in
decl
[
2
])
or
(
name
==
'CvStatModel'
)
:
if
(
'/Map'
in
decl
[
2
]):
self
.
classes_map
.
append
(
name
)
#adding default c-tor
ffi
=
FuncFamilyInfo
([
'cv.'
+
name
+
'.'
+
name
,
''
,
[],
[]])
...
...
@@ -713,7 +733,7 @@ public class %(jc)s {
else
:
print
"Skipped property: [
%
s]"
%
name
,
p
self
.
add_class_code_stream
(
name
)
self
.
add_class_code_stream
(
name
,
classinfo
.
base
)
def
add_const
(
self
,
decl
):
# [ "const cname", val, [], [] ]
...
...
@@ -785,7 +805,7 @@ public class %(jc)s {
self
.
Module
=
module
.
capitalize
()
parser
=
hdr_parser
.
CppHeaderParser
()
self
.
add_class
(
[
'class '
+
self
.
Module
,
[],
[],
[]]
)
# [ 'class/struct cname', [bases]
, [modlist] [props] ]
self
.
add_class
(
[
'class '
+
self
.
Module
,
''
,
[],
[]]
)
# [ 'class/struct cname', ':bases'
, [modlist] [props] ]
# scan the headers and build more descriptive maps of classes, consts, functions
for
hdr
in
srcfiles
:
...
...
@@ -799,16 +819,6 @@ public class %(jc)s {
else
:
# function
self
.
add_func
(
decl
)
#FIXME: BackgroundSubtractor is merged into BackgroundSubtractorMOG because of inheritance
if
"BackgroundSubtractor"
in
self
.
classes
:
bs
=
self
.
classes
[
"BackgroundSubtractor"
]
bsmog
=
self
.
classes
[
"BackgroundSubtractorMOG"
]
for
name
,
mtd
in
bs
.
methods
.
items
():
for
fn
in
mtd
.
funcs
:
fn
.
classname
=
"BackgroundSubtractorMOG"
bsmog
.
methods
[
name
]
=
mtd
;
del
self
.
classes
[
"BackgroundSubtractor"
]
self
.
cpp_code
=
StringIO
()
self
.
cpp_code
.
write
(
"""
//
...
...
@@ -1054,7 +1064,11 @@ extern "C" {
ret_val
=
""
ret
=
"return;"
elif
ret_type
==
""
:
# c-tor
ret_val
=
"nativeObj = "
if
fi
.
classname
and
self
.
classes
[
fi
.
classname
]
.
base
:
ret_val
=
"super( "
tail
=
" )"
else
:
ret_val
=
"nativeObj = "
ret
=
"return;"
elif
ret_type
in
self
.
classes
:
# wrapped class
ret_val
=
type_dict
[
ret_type
][
"j_type"
]
+
" retVal = new "
+
self
.
classes
[
ret_type
]
.
jname
+
"("
...
...
@@ -1271,7 +1285,6 @@ JNIEXPORT $rtype JNICALL Java_org_opencv_${module}_${clazz}_$fname
@Override
protected void finalize() throws Throwable {
delete(nativeObj);
super.finalize();
}
"""
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment