@@ -90,7 +90,7 @@ export class DNMethodContext extends DNContext {
90
90
91
91
if ( basic_type_wrapper . includes ( types [ i ] ) ) {
92
92
if ( types [ i ] == 'char' ) {
93
- wrapperArgs += 'char (' + argNames [ i ] + '.codeUnitAt(0))'
93
+ wrapperArgs += 'jchar (' + argNames [ i ] + '.codeUnitAt(0))'
94
94
continue
95
95
}
96
96
@@ -136,19 +136,60 @@ export class DNClassContext extends DNContext {
136
136
this . name = internalChildren . children [ 2 ] . start . text
137
137
this . superClass = [ ]
138
138
this . methods = [ ]
139
+ this . args = [ ]
139
140
}
140
141
141
142
parse ( ) {
142
143
var result = 'class ' + this . name + ' extends JObject'
143
144
result += ' {\n'
144
- result += ' ' + this . name + '() : super(\"' + packageName + this . name + '\");\n'
145
+ result += this . name + '([Pointer? ptr]) : super(\"' + packageName + this . name + '\", ' + 'pointer: ptr' + ');\n'
146
+ if ( this . args . length != 0 ) {
147
+ result += this . name + '(' + this . methodArgs ( ) + ') : super(\"' + packageName + this . name + '\", [' + this . basicTypeWrapper ( ) + ']);\n'
148
+ }
145
149
this . methods . forEach ( element => {
146
150
var parseRet = element . parse ( )
147
151
result += parseRet ? parseRet + '\n' : ''
148
152
} )
149
153
result += '\n}'
150
154
return result
151
155
}
156
+
157
+ methodArgs ( ) {
158
+ var argList = ''
159
+ this . args . forEach ( ( element , index ) => {
160
+ var argType = basic_type_conversion ( element . type )
161
+ if ( index == this . args . length - 1 ) {
162
+ argList += argType + ' ' + element . name
163
+ } else {
164
+ argList += argType + ' ' + element . name + ', '
165
+ }
166
+ } )
167
+ return argList
168
+ }
169
+
170
+ basicTypeWrapper ( ) {
171
+ var types = this . args . map ( arg => arg . type )
172
+ var argNames = this . args . map ( arg => arg . name )
173
+ var wrapperArgs = ''
174
+ for ( var i = 0 ; i < argNames . length ; i ++ ) {
175
+ if ( i != 0 ) {
176
+ wrapperArgs += ','
177
+ }
178
+
179
+ if ( basic_type_wrapper . includes ( types [ i ] ) ) {
180
+ if ( types [ i ] == 'char' ) {
181
+ wrapperArgs += 'jchar(' + argNames [ i ] + '.codeUnitAt(0))'
182
+ continue
183
+ }
184
+
185
+ wrapperArgs += types [ i ] + '(' + argNames [ i ] + ')'
186
+ continue
187
+ }
188
+
189
+ wrapperArgs += argNames [ i ]
190
+ }
191
+ return wrapperArgs
192
+ }
152
193
}
153
194
154
195
export class DNImportContext extends DNContext {
@@ -208,6 +249,7 @@ export class DNRootContext extends DNContext {
208
249
parse ( ) {
209
250
var result = ""
210
251
var packageSet = new Set ( )
252
+ result += '// Generated by @dartnative/codegen:\n// https://www.npmjs.com/package/@dartnative/codegen\n\n'
211
253
result += "import 'package:dart_native/dart_native.dart';\n"
212
254
result += "import 'package:dart_native_gen/dart_native_gen.dart';\n"
213
255
result += this . children . map ( ctx => ctx . parse ( ) ) . join ( '\n\n' )
0 commit comments