|
98 | 98 | (| |
99 | 99 | where(Alias -> id(AliasName)) |
100 | 100 | ResolveIdName(AliasName -> MethodName) |
| 101 | + ResolveIdName(Id -> RealName) |
101 | 102 | || |
102 | 103 | ResolveIdName(Id -> MethodName) |
| 104 | + ResolveIdName(Id -> RealName) |
103 | 105 | |) |
104 | 106 |
|
105 | 107 | OutputWrite("foreign handler ") |
106 | 108 | OutputForeignHandlerName(Type, MethodName) |
107 | 109 | OutputForeignSignatureWithParameter(Type, Signature) |
108 | | - OutputBindingString(Type, MethodName, Signature) |
| 110 | + OutputBindingString(Type, RealName, Signature) |
| 111 | + OutputWrite("\n") |
| 112 | + |
| 113 | + 'rule' GenerateForeignHandlerOfClass(Type, constructor(_, _, Id, Signature, Alias)): |
| 114 | + (| |
| 115 | + where(Alias -> id(AliasName)) |
| 116 | + ResolveIdName(AliasName -> MethodName) |
| 117 | + ResolveIdName(Id -> RealName) |
| 118 | + || |
| 119 | + ResolveIdName(Id -> MethodName) |
| 120 | + ResolveIdName(Id -> RealName) |
| 121 | + |) |
| 122 | + |
| 123 | + OutputWrite("foreign handler ") |
| 124 | + OutputForeignHandlerName(Type, MethodName) |
| 125 | + OutputForeignSignatureWithReturnType(Type, Signature) |
| 126 | + OutputConstructorBindingString(Type, RealName, Signature) |
109 | 127 | OutputWrite("\n") |
110 | 128 |
|
111 | 129 | 'rule' GenerateForeignHandlerOfClass(Type, Definition): |
|
136 | 154 | OutputWrite(")") |
137 | 155 | GenerateJavaReturns(ReturnType) |
138 | 156 |
|
| 157 | +'action' OutputForeignSignatureWithReturnType(TYPE, SIGNATURE) |
| 158 | + |
| 159 | + 'rule' OutputForeignSignatureWithReturnType(ReturnType, signature(Params, nil)): |
| 160 | + OutputWrite("(") |
| 161 | + GenerateJavaParams(Params) |
| 162 | + OutputWrite(")") |
| 163 | + GenerateJavaReturns(ReturnType) |
| 164 | + |
139 | 165 | 'action' OutputBindingString(TYPE, NAME, SIGNATURE) |
140 | 166 |
|
141 | 167 | 'rule' OutputBindingString(ClassType, MethodName, Signature): |
|
145 | 171 | OutputJavaSignature(Signature) |
146 | 172 | OutputWrite("\"") |
147 | 173 |
|
| 174 | +'action' OutputConstructorBindingString(TYPE, NAME, SIGNATURE) |
| 175 | + |
| 176 | + 'rule' OutputConstructorBindingString(ClassType, MethodName, Signature): |
| 177 | + TypeToQualifiedName(ClassType -> QualifiedClass) |
| 178 | + OutputWriteI(" binds to \"java:", QualifiedClass, ">") |
| 179 | + OutputWrite("new") |
| 180 | + OutputJavaSignature(Signature) |
| 181 | + OutputWrite("\"") |
| 182 | + |
148 | 183 | 'action' OutputJavaSignature(SIGNATURE) |
149 | 184 |
|
150 | 185 | 'rule' OutputJavaSignature(signature(Params, ReturnType)) |
|
233 | 268 | || |
234 | 269 | ResolveIdName(Id -> Name) |
235 | 270 | |) |
236 | | - TypeToQualifiedName(ObjType -> ClassName) |
237 | | - OutputWriteI("public handler ", Name, "_Constructor(in pArgs as List)") |
| 271 | + OutputWriteI("public handler ", Name, "_Constructor") |
| 272 | + GenerateSignatureWithReturnType(ObjType, Signature) |
238 | 273 | OutputWrite("\n") |
239 | | - OutputWrite("\tvariable tObject as JObject\n") |
240 | | - OutputWrite("\tunsafe\n") |
241 | | - OutputWriteI("\t\tput GetObject(\"", ClassName, "\", pArgs) into tObject\n") |
242 | | - OutputWrite("\tend unsafe\n") |
243 | | - OutputWrite("\treturn tObject\n") |
| 274 | + |
| 275 | + OutputCallForeignConstructor(ObjType, Name, Signature) |
244 | 276 | OutputWrite("end handler") |
245 | 277 | OutputWrite("\n\n") |
246 | 278 |
|
247 | 279 | 'rule' GenerateClassDefinitions(ObjType, nil): |
248 | 280 | -- do nothing |
249 | 281 |
|
| 282 | +'action' OutputCallForeignConstructor(TYPE, NAME, SIGNATURE) |
| 283 | + |
| 284 | + 'rule' OutputCallForeignConstructor(ObjType, Name, signature(Params, nil)) |
| 285 | + OutputConvertToForeignParams(Params) |
| 286 | + OutputWrite("\tunsafe\n\t\t") |
| 287 | + OutputWrite("return ") |
| 288 | + OutputForeignHandlerName(ObjType, Name) |
| 289 | + OutputWrite("(") |
| 290 | + OutputForeignCallParams(Params) |
| 291 | + OutputWrite(")\n") |
| 292 | + OutputWrite("\tend unsafe\n") |
| 293 | + |
250 | 294 | 'action' OutputCallForeignHandler(TYPE, NAME, SIGNATURE) |
251 | 295 |
|
252 | 296 | 'rule' OutputCallForeignHandler(ObjType, Name, signature(Params, ReturnType)) |
|
0 commit comments