@@ -91,8 +91,8 @@ def libVersionBlock():
91
91
92
92
$imports
93
93
94
- // C++: class $name
95
- //javadoc: $name
94
+ $docs
95
+ $annotation
96
96
public class $jname extends $base {
97
97
98
98
protected $jname(long addr) { super(addr); }
@@ -107,8 +107,8 @@ def libVersionBlock():
107
107
108
108
$imports
109
109
110
- // C++: class $name
111
- //javadoc: $name
110
+ $docs
111
+ $annotation
112
112
public class $jname {
113
113
114
114
protected final long nativeObj;
@@ -125,6 +125,8 @@ def libVersionBlock():
125
125
126
126
$imports
127
127
128
+ $docs
129
+ $annotation
128
130
public class $jname {
129
131
"""
130
132
@@ -182,8 +184,22 @@ def libVersionBlock():
182
184
"""
183
185
184
186
class GeneralInfo ():
185
- def __init__ (self , name , namespaces ):
186
- self .namespace , self .classpath , self .classname , self .name = self .parseName (name , namespaces )
187
+ def __init__ (self , type , decl , namespaces ):
188
+ self .namespace , self .classpath , self .classname , self .name = self .parseName (decl [0 ], namespaces )
189
+
190
+ # parse doxygen comments
191
+ self .params = {}
192
+ self .annotation = []
193
+ if type == "class" :
194
+ docstring = "// C++: class " + self .name + "\n //javadoc: " + self .name
195
+ else :
196
+ docstring = ""
197
+ if len (decl )> 5 and decl [5 ]:
198
+ logging .info ('docstring: %s' , decl [5 ])
199
+ if re .search ("(@|\\ \\ )deprecated" , decl [5 ]):
200
+ self .annotation .append ("@Deprecated" )
201
+
202
+ self .docstring = docstring
187
203
188
204
def parseName (self , name , namespaces ):
189
205
'''
@@ -218,7 +234,7 @@ def fullClass(self, isCPP=False):
218
234
219
235
class ConstInfo (GeneralInfo ):
220
236
def __init__ (self , decl , addedManually = False , namespaces = []):
221
- GeneralInfo .__init__ (self , decl [ 0 ] , namespaces )
237
+ GeneralInfo .__init__ (self , "const" , decl , namespaces )
222
238
self .cname = self .name .replace ("." , "::" )
223
239
self .value = decl [1 ]
224
240
self .addedManually = addedManually
@@ -245,7 +261,7 @@ def __repr__(self):
245
261
246
262
class ClassInfo (GeneralInfo ):
247
263
def __init__ (self , decl , namespaces = []): # [ 'class/struct cname', ': base', [modlist] ]
248
- GeneralInfo .__init__ (self , decl [ 0 ] , namespaces )
264
+ GeneralInfo .__init__ (self , "class" , decl , namespaces )
249
265
self .cname = self .name .replace ("." , "::" )
250
266
self .methods = []
251
267
self .methods_suffixes = {}
@@ -335,6 +351,8 @@ def generateJavaCode(self, m, M):
335
351
name = self .name ,
336
352
jname = self .jname ,
337
353
imports = "\n " .join (self .getAllImports (M )),
354
+ docs = self .docstring ,
355
+ annotation = "\n " .join (self .annotation ),
338
356
base = self .base )
339
357
340
358
def generateCppCode (self ):
@@ -364,7 +382,7 @@ def __repr__(self):
364
382
365
383
class FuncInfo (GeneralInfo ):
366
384
def __init__ (self , decl , namespaces = []): # [ funcname, return_ctype, [modifiers], [args] ]
367
- GeneralInfo .__init__ (self , decl [ 0 ] , namespaces )
385
+ GeneralInfo .__init__ (self , "func" , decl , namespaces )
368
386
self .cname = self .name .replace ("." , "::" )
369
387
self .jname = self .name
370
388
self .isconstructor = self .name == self .classname
@@ -741,6 +759,13 @@ def gen_func(self, ci, fi, prop_name=''):
741
759
java_doc = "//javadoc: " + f_name + "(%s)" % ", " .join ([a .name for a in args if a .ctype ])
742
760
j_code .write (" " * 4 + java_doc + "\n " )
743
761
762
+ if fi .docstring :
763
+ lines = StringIO (fi .docstring )
764
+ for line in lines :
765
+ j_code .write (" " * 4 + line + "\n " )
766
+ if fi .annotation :
767
+ j_code .write (" " * 4 + "\n " .join (fi .annotation ) + "\n " )
768
+
744
769
# public java wrapper method impl (calling native one above)
745
770
# e.g.
746
771
# public static void add( Mat src1, Mat src2, Mat dst, Mat mask, int dtype )
0 commit comments