|
104 | 104 | ResolveIdName(Id -> RealName) |
105 | 105 | |) |
106 | 106 |
|
107 | | - OutputWrite("foreign handler ") |
| 107 | + OutputWrite("__safe foreign handler ") |
108 | 108 | OutputForeignHandlerName(Type, MethodName) |
109 | 109 | OutputForeignHandlerSignatureWithParameter(Type, Signature, Modifiers) |
110 | 110 | OutputMethodBindingString(Type, RealName, Signature, Modifiers) |
|
120 | 120 | ResolveIdName(Id -> RealName) |
121 | 121 | |) |
122 | 122 |
|
123 | | - OutputWrite("foreign handler ") |
| 123 | + OutputWrite("__safe foreign handler ") |
124 | 124 | OutputForeignHandlerName(Type, MethodName) |
125 | 125 | OutputForeignSignatureWithReturnType(Type, Signature) |
126 | 126 | OutputConstructorBindingString(Type, RealName, Signature) |
|
146 | 146 | 'action' GenerateForeignGetterOfClass(TYPE, NAME, TYPE, MODIFIER) |
147 | 147 |
|
148 | 148 | 'rule' GenerateForeignGetterOfClass(ClassType, Name, VarType, InstanceModifier) |
149 | | - OutputWrite("foreign handler ") |
| 149 | + OutputWrite("__safe foreign handler ") |
150 | 150 | OutputForeignGetterName(ClassType, Name) |
151 | 151 | OutputForeignGetterSignature(ClassType, Name, VarType, InstanceModifier) |
152 | 152 | OutputGetVariableBindingString(ClassType, Name, VarType, InstanceModifier) |
|
155 | 155 | 'action' GenerateForeignSetterOfClass(TYPE, NAME, TYPE, MODIFIER) |
156 | 156 |
|
157 | 157 | 'rule' GenerateForeignSetterOfClass(ClassType, Name, VarType, InstanceModifier) |
158 | | - OutputWrite("foreign handler ") |
| 158 | + OutputWrite("__safe foreign handler ") |
159 | 159 | OutputForeignSetterName(ClassType, Name) |
160 | 160 | OutputForeignSetterSignature(ClassType, Name, VarType, InstanceModifier) |
161 | 161 | OutputSetVariableBindingString(ClassType, Name, VarType, InstanceModifier) |
|
267 | 267 |
|
268 | 268 | 'rule' OutputMethodBindingStringInstance(ClassType, MethodName, Signature, InstanceModifier): |
269 | 269 | TypeToQualifiedName(ClassType -> QualifiedClass) |
270 | | - OutputWriteI(" binds to \"java:", QualifiedClass, ">") |
| 270 | + OutputWriteI(" \\\nbinds to \"java:", QualifiedClass, ">") |
271 | 271 | OutputWriteI("", MethodName, "") |
272 | 272 | OutputJavaSignature(Signature) |
273 | 273 | (| |
|
281 | 281 |
|
282 | 282 | 'rule' OutputConstructorBindingString(ClassType, MethodName, Signature): |
283 | 283 | TypeToQualifiedName(ClassType -> QualifiedClass) |
284 | | - OutputWriteI(" binds to \"java:", QualifiedClass, ">") |
| 284 | + OutputWriteI(" \\\nbinds to \"java:", QualifiedClass, ">") |
285 | 285 | OutputWrite("new") |
286 | 286 | OutputJavaSignature(Signature) |
287 | 287 | OutputWrite("\"") |
|
290 | 290 |
|
291 | 291 | 'rule' OutputSetVariableBindingString(ClassType, FieldName, VarType, InstanceModifier): |
292 | 292 | TypeToQualifiedName(ClassType -> QualifiedClass) |
293 | | - OutputWriteI(" binds to \"java:", QualifiedClass, ">") |
| 293 | + OutputWriteI(" \\\nbinds to \"java:", QualifiedClass, ">") |
294 | 294 | OutputWriteI("set.", FieldName, "") |
295 | 295 | OutputWrite("(") |
296 | 296 | OutputJavaTypeCode(VarType) |
|
306 | 306 |
|
307 | 307 | 'rule' OutputGetVariableBindingString(ClassType, FieldName, VarType, InstanceModifier): |
308 | 308 | TypeToQualifiedName(ClassType -> QualifiedClass) |
309 | | - OutputWriteI(" binds to \"java:", QualifiedClass, ">") |
| 309 | + OutputWriteI(" \\\nbinds to \"java:", QualifiedClass, ">") |
310 | 310 | OutputWriteI("get.", FieldName, "") |
311 | 311 | OutputWrite("(") |
312 | 312 | OutputWrite(")") |
|
324 | 324 | OutputWrite("(") |
325 | 325 | OutputJavaParams(Params) |
326 | 326 | OutputWrite(")") |
327 | | - OutputJavaTypeCode(ReturnType) |
| 327 | + OutputJavaReturnTypeCode(ReturnType) |
328 | 328 |
|
329 | 329 | 'action' OutputJavaParams(PARAMETERLIST) |
330 | 330 |
|
|
447 | 447 |
|
448 | 448 | 'rule' OutputCallForeignConstructor(ObjType, Name, signature(Params, nil)) |
449 | 449 | OutputConvertToForeignParams(Params) |
450 | | - OutputWrite("\tunsafe\n\t\t") |
451 | | - OutputWrite("return ") |
| 450 | + OutputWrite("\treturn ") |
452 | 451 | OutputForeignHandlerName(ObjType, Name) |
453 | 452 | OutputWrite("(") |
454 | 453 | OutputForeignCallParams(Params) |
455 | 454 | OutputWrite(")\n") |
456 | | - OutputWrite("\tend unsafe\n") |
457 | 455 |
|
458 | 456 | 'action' OutputCallForeignHandlerParams(TYPE, NAME, PARAMETERLIST, MODIFIER) |
459 | 457 |
|
|
488 | 486 | OutputConvertToForeignParams(Params) |
489 | 487 | (| |
490 | 488 | where(ReturnType -> nil) |
491 | | - OutputWrite("\tunsafe\n\t\t") |
| 489 | + OutputWrite("\t") |
492 | 490 | OutputCallForeignHandlerParams(ObjType, Name, Params, InstanceModifier) |
493 | 491 | OutputWrite("\n") |
494 | | - OutputWrite("\tend unsafe\n") |
495 | 492 | || |
496 | | - OutputWrite("\tvariable tJNIResult as ") |
497 | 493 | (| |
498 | 494 | RequiresConversion(ReturnType) |
| 495 | + OutputWrite("\tvariable tJNIResult as ") |
499 | 496 | GenerateJavaType(ReturnType) |
| 497 | + OutputWrite("\n\tput ") |
| 498 | + OutputCallForeignHandlerParams(ObjType, Name, Params, InstanceModifier) |
| 499 | + OutputWrite(" into tJNIResult\n") |
| 500 | + OutputWrapperReturn(ReturnType) |
500 | 501 | || |
501 | | - GenerateType(ReturnType) |
| 502 | + OutputWrite("\treturn ") |
| 503 | + OutputCallForeignHandlerParams(ObjType, Name, Params, InstanceModifier) |
502 | 504 | |) |
503 | | - OutputWrite("\n\tunsafe\n") |
504 | | - OutputWrite("\t\tput ") |
505 | | - OutputCallForeignHandlerParams(ObjType, Name, Params, InstanceModifier) |
506 | | - OutputWrite(" into tJNIResult\n") |
507 | | - OutputWrite("\tend unsafe\n") |
508 | | - OutputWrapperReturn(ReturnType) |
509 | 505 | OutputWrite("\n") |
510 | 506 | |) |
511 | 507 |
|
| 508 | +'action' OutputForeignGetter(TYPE, NAME, MODIFIER) |
| 509 | + |
| 510 | + 'rule' OutputForeignGetter(ObjType, Name, class): |
| 511 | + OutputForeignGetterName(ObjType, Name) |
| 512 | + OutputWrite("(pObj)") |
| 513 | + |
| 514 | + 'rule' OutputForeignGetter(ObjType, Name, Instance): |
| 515 | + OutputForeignGetterName(ObjType, Name) |
| 516 | + OutputWrite("()") |
| 517 | + |
512 | 518 | 'action' OutputCallForeignGetter(TYPE, NAME, TYPE, MODIFIER) |
513 | 519 |
|
514 | 520 | 'rule' OutputCallForeignGetter(ObjType, Name, Type, InstanceModifier) |
515 | | - OutputWrite("\tvariable tJNIResult as ") |
516 | 521 | (| |
517 | 522 | RequiresConversion(Type) |
| 523 | + OutputWrite("\tvariable tJNIResult as ") |
518 | 524 | GenerateJavaType(Type) |
| 525 | + OutputWrite("\n\tput ") |
| 526 | + OutputForeignGetter(ObjType, Name, InstanceModifier) |
| 527 | + OutputWrite(" into tJNIResult\n") |
| 528 | + OutputWrapperReturn(Type) |
519 | 529 | || |
520 | | - GenerateType(Type) |
521 | | - |) |
522 | | - OutputWrite("\n\tunsafe\n") |
523 | | - OutputWrite("\t\tput ") |
524 | | - OutputForeignGetterName(ObjType, Name) |
525 | | - OutputWrite("(") |
526 | | - (| |
527 | | - where(InstanceModifier -> class) |
528 | | - || |
529 | | - OutputWrite("pObj") |
| 530 | + OutputWrite("\treturn ") |
| 531 | + OutputForeignGetter(ObjType, Name, InstanceModifier) |
530 | 532 | |) |
531 | | - OutputWrite(")") |
532 | | - OutputWrite(" into tJNIResult\n") |
533 | | - OutputWrite("\tend unsafe\n") |
534 | | - OutputWrapperReturn(Type) |
535 | | - |
| 533 | + |
536 | 534 | 'action' OutputCallForeignSetter(TYPE, NAME, TYPE, MODIFIER) |
537 | 535 |
|
538 | 536 | 'rule' OutputCallForeignSetter(ObjType, Name, Type, InstanceModifier) |
539 | 537 | OutputConvertToForeignParameter(Name, Type) |
540 | | - OutputWrite("\tunsafe\n\t\t") |
| 538 | + OutputWrite("\t") |
541 | 539 | OutputForeignSetterName(ObjType, Name) |
542 | 540 | OutputWrite("(") |
543 | 541 | (| |
|
552 | 550 | OutputWriteI("pParam_", Name, "") |
553 | 551 | |) |
554 | 552 | OutputWrite(")") |
555 | | - OutputWrite("\n\tend unsafe\n") |
| 553 | + OutputWrite("\n") |
556 | 554 |
|
557 | 555 | 'action' OutputConvertToForeignParams(PARAMETERLIST) |
558 | 556 |
|
|
808 | 806 | 'action' GenerateJavaType(TYPE) |
809 | 807 |
|
810 | 808 | 'rule' GenerateJavaType(byte): |
811 | | - OutputWrite("CInt") |
| 809 | + OutputWrite("JByte") |
812 | 810 |
|
813 | 811 | 'rule' GenerateJavaType(short): |
814 | | - OutputWrite("CInt") |
| 812 | + OutputWrite("JShort") |
815 | 813 |
|
816 | 814 | 'rule' GenerateJavaType(int): |
817 | | - OutputWrite("CInt") |
| 815 | + OutputWrite("JInt") |
818 | 816 |
|
819 | 817 | 'rule' GenerateJavaType(long): |
820 | | - OutputWrite("CInt") |
| 818 | + OutputWrite("JLong") |
821 | 819 |
|
822 | 820 | 'rule' GenerateJavaType(float): |
823 | | - OutputWrite("CFloat") |
| 821 | + OutputWrite("JFloat") |
824 | 822 |
|
825 | 823 | 'rule' GenerateJavaType(double): |
826 | | - OutputWrite("CDouble") |
| 824 | + OutputWrite("JDouble") |
827 | 825 |
|
828 | 826 | 'rule' GenerateJavaType(boolean): |
829 | | - OutputWrite("CBool") |
| 827 | + OutputWrite("JBoolean") |
830 | 828 |
|
831 | 829 | 'rule' GenerateJavaType(char): |
832 | | - OutputWrite("CInt") |
| 830 | + OutputWrite("JChar") |
833 | 831 |
|
834 | 832 | 'rule' GenerateJavaType(string): |
835 | 833 | OutputWrite("JString") |
|
960 | 958 |
|
961 | 959 | 'rule' OutputJavaTypeCode(nil): |
962 | 960 |
|
| 961 | +-- Ensure return type code is always specified as V if returning nothing |
| 962 | +'action' OutputJavaReturnTypeCode(TYPE) |
| 963 | + |
| 964 | + 'rule' OutputJavaReturnTypeCode(nil): |
| 965 | + OutputWrite("V") |
| 966 | + |
| 967 | + 'rule' OutputJavaReturnTypeCode(Type): |
| 968 | + OutputJavaTypeCode(Type) |
| 969 | + |
963 | 970 | 'action' OutputJavaArrayTypeCode(TYPE, INT) |
964 | 971 |
|
965 | 972 | -- output java array |
|
0 commit comments