ooRexx
4.2.0-source
About: ooRexx (Open Object Rexx) is a free implementation of Object Rexx. Object Rexx is an enhancement of the classic Rexx interpreter; a full-featured programming language with a human-oriented syntax. Fossies Dox: ooRexx-4.2.0-source.tar.gz ("inofficial" and yet experimental doxygen-generated source code documentation) 
|
Go to the documentation of this file. 44 #ifndef RexxNativeInterface_Included 45 #define RexxNativeInterface_Included 54 #define REXX_ARGUMENT_TERMINATOR 0 55 #define REXX_VALUE_ARGLIST 2 56 #define REXX_VALUE_NAME 3 57 #define REXX_VALUE_SCOPE 4 58 #define REXX_VALUE_CSELF 5 59 #define REXX_VALUE_OSELF 6 60 #define REXX_VALUE_SUPER 7 64 #define REXX_VALUE_RexxObjectPtr 11 65 #define REXX_VALUE_int 12 66 #define REXX_VALUE_wholenumber_t 13 67 #define REXX_VALUE_double 14 68 #define REXX_VALUE_CSTRING 15 69 #define REXX_VALUE_POINTER 16 70 #define REXX_VALUE_RexxStringObject 17 71 #define REXX_VALUE_stringsize_t 18 72 #define REXX_VALUE_float 19 73 #define REXX_VALUE_int8_t 20 74 #define REXX_VALUE_int16_t 21 75 #define REXX_VALUE_int32_t 22 76 #define REXX_VALUE_int64_t 23 77 #define REXX_VALUE___int64_t 23 78 #define REXX_VALUE_uint8_t 24 79 #define REXX_VALUE_uint16_t 25 80 #define REXX_VALUE_uint32_t 26 81 #define REXX_VALUE_uint64_t 27 82 #define REXX_VALUE___uint64_t 27 -- aliased 83 #define REXX_VALUE_intptr_t 28 84 #define REXX_VALUE_uintptr_t 29 85 #define REXX_VALUE___uintptr_t 29 -- aliased 86 #define REXX_VALUE_logical_t 30 87 #define REXX_VALUE_RexxArrayObject 31 88 #define REXX_VALUE_RexxStemObject 32 89 #define REXX_VALUE_size_t 33 90 #define REXX_VALUE_ssize_t 34 91 #define REXX_VALUE_POINTERSTRING 35 92 #define REXX_VALUE_RexxClassObject 36 93 #define REXX_VALUE_RexxMutableBufferObject 37 95 #define REXX_OPTIONAL_ARGUMENT 0x8000 97 #define REXX_VALUE_OPTIONAL_RexxObjectPtr (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_RexxObjectPtr) 98 #define REXX_VALUE_OPTIONAL_int (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_int) 99 #define REXX_VALUE_OPTIONAL_wholenumber_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_wholenumber_t) 100 #define REXX_VALUE_OPTIONAL_double (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_double) 101 #define REXX_VALUE_OPTIONAL_CSTRING (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_CSTRING) 102 #define REXX_VALUE_OPTIONAL_POINTER (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_POINTER) 103 #define REXX_VALUE_OPTIONAL_RexxStringObject (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_RexxStringObject) 104 #define REXX_VALUE_OPTIONAL_stringsize_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_stringsize_t) 105 #define REXX_VALUE_OPTIONAL_float (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_float) 106 #define REXX_VALUE_OPTIONAL_int8_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_int8_t) 107 #define REXX_VALUE_OPTIONAL_int16_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_int16_t) 108 #define REXX_VALUE_OPTIONAL_int32_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_int32_t) 109 #define REXX_VALUE_OPTIONAL_int64_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_int64_t) 110 #define REXX_VALUE_OPTIONAL_uint8_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_uint8_t) 111 #define REXX_VALUE_OPTIONAL_uint16_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_uint16_t) 112 #define REXX_VALUE_OPTIONAL_uint32_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_uint32_t) 113 #define REXX_VALUE_OPTIONAL_uint64_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_uint64_t) 114 #define REXX_VALUE_OPTIONAL_size_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_size_t) 115 #define REXX_VALUE_OPTIONAL_ssize_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_ssize_t) 116 #define REXX_VALUE_OPTIONAL_intptr_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_intptr_t) 117 #define REXX_VALUE_OPTIONAL_uintptr_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_uintptr_t) 118 #define REXX_VALUE_OPTIONAL_logical_t (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_logical_t) 119 #define REXX_VALUE_OPTIONAL_RexxArrayObject (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_RexxArrayObject) 120 #define REXX_VALUE_OPTIONAL_RexxStemObject (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_RexxStemObject) 121 #define REXX_VALUE_OPTIONAL_POINTERSTRING (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_POINTERSTRING) 122 #define REXX_VALUE_OPTIONAL_RexxClassObject (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_RexxClassObject) 123 #define REXX_VALUE_OPTIONAL_RexxMutableBufferObject (REXX_OPTIONAL_ARGUMENT | REXX_VALUE_RexxMutableBufferObject) 186 #define ROUTINE_TYPED_STYLE 1 187 #define ROUTINE_CLASSIC_STYLE 2 189 #define REXX_ROUTINE(s, n, e) { s, 0, #n, (void *)e, 0, 0 } 191 #define REXX_TYPED_ROUTINE(n, e) REXX_ROUTINE(ROUTINE_TYPED_STYLE, n, e) 192 #define REXX_CLASSIC_ROUTINE(n, e) REXX_ROUTINE(ROUTINE_CLASSIC_STYLE, n, e) 193 #define REXX_LAST_ROUTINE() { 0, 0, NULL, (void *)NULL, 0, 0 } 195 #define REXX_CLASSIC_ROUTINE_PROTOTYPE(name) size_t RexxEntry name(const char *, size_t, CONSTRXSTRING *, const char *, RXSTRING *) 207 #define METHOD_TYPED_STYLE 1 209 #define REXX_METHOD_ENTRY(n, e) { METHOD_TYPED_STYLE, 0, #n, (void *)e, 0, 0 } 211 #define REXX_METHOD(n, e) REXX_METHOD_ENTRY(n, e) 212 #define REXX_LAST_METHOD() { 0, 0, NULL, (void *)NULL, 0, 0 } 214 #define REXX_PACKAGE_API_NO 20081030 216 #define REXX_INTERPRETER_4_0_0 0x00040000 217 #define REXX_INTERPRETER_4_0_1 0x00040001 218 #define REXX_INTERPRETER_4_1_0 0x00040100 219 #define REXX_INTERPRETER_4_1_1 0x00040101 220 #define REXX_INTERPRETER_4_1_2 0x00040102 221 #define REXX_INTERPRETER_4_1_3 0x00040103 222 #define REXX_INTERPRETER_4_2_0 0x00040200 223 #define REXX_CURRENT_INTERPRETER_VERSION REXX_INTERPRETER_4_2_0 224 #define NO_VERSION_YET NULL 226 #define REXX_LANGUAGE_6_03 0x00000603 227 #define REXX_LANGUAGE_6_04 0x00000604 228 #define REXX_CURRENT_LANGUAGE_LEVEL REXX_LANGUAGE_6_04 230 #define STANDARD_PACKAGE_HEADER sizeof(RexxPackageEntry), REXX_PACKAGE_API_NO, 232 #define OOREXX_GET_PACKAGE(name) \ 234 RexxPackageEntry *RexxEntry RexxGetPackage(void) { return &name##_package_entry; }\ 257 #define ARGUMENT_EXISTS 0x01 259 #define SPECIAL_ARGUMENT 0x02 344 inline operator RexxObjectPtr() {
return value.value_RexxObjectPtr; }
348 inline operator RexxArrayObject() {
return value.value_RexxArrayObject; }
350 inline operator RexxStemObject() {
return value.value_RexxStemObject; }
354 inline operator CSTRING() {
return value.value_CSTRING; }
356 inline operator POINTER() {
return value.value_POINTER; }
358 inline operator wholenumber_t() {
return value.value_wholenumber_t; }
360 inline operator stringsize_t() {
return value.value_stringsize_t; }
362 inline operator float() {
return value.value_float; }
363 inline operator double() {
return value.value_double; }
370 #define INITIAL_ADDRESS_ENVIRONMENT "InitialAddress" 372 #define APPLICATION_DATA "ApplicationData" 374 #define EXTERNAL_CALL_PATH "ExternalCallPath" 376 #define EXTERNAL_CALL_EXTENSIONS "ExternalCallPathExt" 379 #define LOAD_REQUIRED_LIBRARY "LoadRequiredLibrary" 381 #define REGISTERED_EXITS "RegisteredExits" 384 #define DIRECT_EXITS "DirectExits" 386 #define REGISTERED_ENVIRONMENTS "RegisteredEnvironments" 389 #define DIRECT_ENVIRONMENTS "DirectEnvironments" 391 #define REGISTER_LIBRARY "RegisterLibrary" 435 #define INSTANCE_INTERFACE_VERSION 100 449 #define THREAD_INTERFACE_VERSION_4_0_0 100 450 #define THREAD_INTERFACE_VERSION_4_1_1 101 451 #define THREAD_INTERFACE_VERSION 102 616 #define METHOD_INTERFACE_VERSION_4_0_0 100 617 #define METHOD_INTERFACE_VERSION 101 640 #define CALL_INTERFACE_VERSION 100 663 #define EXIT_INTERFACE_VERSION 100 684 functions->Terminate(
this);
688 return functions->AttachThread(
this, tc);
692 return functions->InterpreterVersion(
this);
696 return functions->LanguageLevel(
this);
700 functions->Halt(
this);
704 functions->SetTrace(
this, s);
721 return instance->InterpreterVersion();
741 return functions->RequestGlobalReference(
this, o);
745 functions->ReleaseGlobalReference(
this, o);
749 functions->ReleaseLocalReference(
this, o);
754 return functions->SendMessage(
this, o, msg, arr);
758 return functions->SendMessage0(
this, o, msg);
762 return functions->SendMessage1(
this, o, msg, a1);
766 return functions->SendMessage2(
this, o, msg, a1, a2);
771 return functions->GetLocalEnvironment(
this);
775 return functions->GetGlobalEnvironment(
this);
779 return functions->IsInstanceOf(
this, o, co);
791 return functions->FindPackageClass(
this, m, n);
799 return functions->NewMethod(
this, n, s, l);
803 return functions->NewRoutine(
this, n, s, l);
815 return functions->GetRoutinePackage(
this, o);
819 return functions->GetMethodPackage(
this, o);
825 return functions->GetPackageRoutines(
this, m);
829 return functions->GetPackagePublicRoutines(
this, m);
833 return functions->GetPackageClasses(
this, m);
837 return functions->GetPackagePublicClasses(
this, m);
841 return functions->GetPackageMethods(
this, m);
845 return functions->CallRoutine(
this, m, a);
849 return functions->CallProgram(
this, n, a);
857 return functions->LoadPackageFromData(
this, n, d, l);
865 return functions->RegisterLibrary(
this, n, e);
869 return functions->ObjectToCSelf(
this, o);
873 return functions->ObjectToCSelfScoped(
this, o, s);
877 return functions->WholeNumberToObject(
this, n);
881 return functions->WholeNumberToObject(
this, n);
885 return functions->UintptrToObject(
this, n);
889 return functions->UintptrToObject(
this, n);
893 return functions->IntptrToObject(
this, n);
897 return functions->IntptrToObject(
this, n);
901 return functions->StringSizeToObject(
this, n);
905 return functions->StringSizeToObject(
this, n);
909 return functions->ObjectToWholeNumber(
this, o, n);
913 return functions->ObjectToWholeNumber(
this, o, n);
917 return functions->ObjectToStringSize(
this, o, n);
921 return functions->ObjectToStringSize(
this, o, n);
925 return functions->Int64ToObject(
this, i);
929 return functions->Int64ToObject(
this, i);
933 return functions->UnsignedInt64ToObject(
this, u);
937 return functions->UnsignedInt64ToObject(
this, u);
941 return functions->ObjectToInt64(
this, o, i);
945 return functions->ObjectToInt64(
this, o, i);
949 return functions->ObjectToUnsignedInt64(
this, o, u);
953 return functions->ObjectToUnsignedInt64(
this, o, u);
957 return functions->Int32ToObject(
this, i);
961 return functions->Int32ToObject(
this, i);
965 return functions->UnsignedInt32ToObject(
this, u);
969 return functions->UnsignedInt32ToObject(
this, u);
973 return functions->ObjectToInt32(
this, o, i);
977 return functions->ObjectToInt32(
this, o, i);
981 return functions->ObjectToUnsignedInt32(
this, o, u);
985 return functions->ObjectToUnsignedInt32(
this, o, u);
989 return functions->ObjectToUintptr(
this, o, n);
993 return functions->ObjectToUintptr(
this, o, n);
997 return functions->ObjectToIntptr(
this, o, n);
1001 return functions->ObjectToIntptr(
this, o, n);
1005 return functions->ObjectToLogical(
this, o, n);
1009 return functions->ObjectToLogical(
this, o, n);
1013 return functions->LogicalToObject(
this, l);
1017 return functions->LogicalToObject(
this, l);
1021 return functions->DoubleToObject(
this, d);
1025 return functions->DoubleToObject(
this, d);
1029 return functions->DoubleToObjectWithPrecision(
this, d, precision);
1033 return functions->ObjectToDouble(
this, o, d);
1037 return functions->ObjectToDouble(
this, o, d);
1041 return functions->ValueToObject(
this, v);
1045 return functions->ValuesToObject(
this, v, c);
1049 return functions->ObjectToValue(
this, o, v);
1053 return functions->ObjectToString(
this, o);
1057 return functions->ObjectToStringValue(
this, o);
1061 return functions->ObjectToStringValue(
this, o);
1065 return functions->StringGet(
this, o, len1, s, len2);
1069 return functions->StringLength(
this, o);
1077 return functions->NewString(
this, s, len);
1081 return functions->NewStringFromAsciiz(
this, s);
1085 return functions->NewString(
this, s, len);
1089 return functions->NewStringFromAsciiz(
this, s);
1093 return functions->NewStringFromAsciiz(
this, s);
1110 return functions->NewBufferString(
this, len);
1115 return functions->BufferStringLength(
this, o);
1120 return functions->BufferStringData(
this, o);
1125 return functions->FinishBufferString(
this, o, l);
1130 functions->DirectoryPut(
this, diro, o, s);
1134 return functions->DirectoryAt(
this, to, s);
1138 return functions->DirectoryRemove(
this, to, s);
1159 return functions->ArrayAppend(
this, ao, o);
1163 return functions->ArrayAppendString(
this, ao, s, l);
1175 return functions->ArrayDimension(
this, ao);
1187 return functions->ArrayOfTwo(
this, o1, o2);
1191 return functions->ArrayOfThree(
this, o1, o2, o3);
1195 return functions->ArrayOfFour(
this, o1, o2, o3, o4);
1203 return functions->ArrayOfTwo(
this, o1, o2);
1207 return functions->ArrayOfThree(
this, o1, o2, o3);
1211 return functions->ArrayOfFour(
this, o1, o2, o3, o4);
1224 return functions->BufferLength(
this, bo);
1237 return functions->MutableBufferData(
this, bo);
1242 return functions->MutableBufferLength(
this, bo);
1247 return functions->SetMutableBufferLength(
this, bo, l);
1252 return functions->NewMutableBuffer(
this, n);
1257 return functions->IsMutableBuffer(
this, o);
1262 return functions->MutableBufferCapacity(
this, bo);
1267 return functions->SetMutableBufferCapacity(
this, bo, l);
1272 return functions->PointerValue(
this, po);
1285 return functions->SupplierItem(
this, so);
1289 return functions->SupplierIndex(
this, so);
1293 return functions->SupplierAvailable(
this, so);
1301 return functions->NewSupplier(
this, values, names);
1310 functions->SetStemElement(
this, so, s, o);
1314 return functions->GetStemElement(
this, so, s);
1318 functions->DropStemElement(
this, so, s);
1322 functions->SetStemArrayElement(
this, so, n, o);
1326 return functions->GetStemArrayElement(
this, so, n);
1330 functions->DropStemArrayElement(
this, so, n);
1334 return functions->GetAllStemElements(
this, so);
1338 return functions->GetStemValue(
this, so);
1354 functions->RaiseException2(
this, n, o1, o2);
1362 functions->RaiseCondition(
this, s1, s2, ao, o);
1370 return functions->DisplayCondition(
this);
1374 return functions->GetConditionInfo(
this);
1378 functions->DecodeConditionInfo(
this, diro, c);
1727 return threadContext->DoubleToObjectWithPrecision(d, precision);
2125 functions->SetObjectVariable(
this, s, o);
2129 return functions->GetObjectVariable(
this, s);
2137 return functions->ForwardMessage(
this, o, s, c, a);
2149 return functions->FindContextClass(
this, n);
2477 return threadContext->DoubleToObjectWithPrecision(d, precision);
2859 functions->SetContextVariable(
this, s, o);
2863 return functions->GetContextVariable(
this, s);
2867 functions->DropContextVariable(
this, s);
2871 return functions->ResolveStemVariable(
this, v);
2876 return functions->GetAllContextVariables(
this);
2884 return functions->GetContextDigits(
this);
2896 return functions->GetCallerContext(
this);
2900 return functions->FindContextClass(
this, n);
3229 return threadContext->DoubleToObjectWithPrecision(d, precision);
3594 functions->SetContextVariable(
this, s, o);
3598 return functions->GetContextVariable(
this, s);
3602 functions->DropContextVariable(
this, s);
3606 return functions->GetAllContextVariables(
this);
3610 return functions->GetCallerContext(
this);
3621 #define ARGUMENT_TYPE_ARGLIST RexxArrayObject 3622 #define ARGUMENT_TYPE_NAME CSTRING 3623 #define ARGUMENT_TYPE_SCOPE RexxObjectPtr 3624 #define ARGUMENT_TYPE_CSELF POINTER 3625 #define ARGUMENT_TYPE_OSELF RexxObjectPtr 3626 #define ARGUMENT_TYPE_SUPER RexxClassObject 3630 #define ARGUMENT_TYPE_RexxObjectPtr RexxObjectPtr 3631 #define ARGUMENT_TYPE_RexxClassObject RexxClassObject 3632 #define ARGUMENT_TYPE_int int 3633 #define ARGUMENT_TYPE_wholenumber_t wholenumber_t 3634 #define ARGUMENT_TYPE_stringsize_t stringsize_t 3635 #define ARGUMENT_TYPE_double double 3636 #define ARGUMENT_TYPE_CSTRING CSTRING 3637 #define ARGUMENT_TYPE_POINTER POINTER 3638 #define ARGUMENT_TYPE_RexxStringObject RexxStringObject 3639 #define ARGUMENT_TYPE_float float 3640 #define ARGUMENT_TYPE_int8_t int8_t 3641 #define ARGUMENT_TYPE_int16_t int16_t 3642 #define ARGUMENT_TYPE_int32_t int32_t 3643 #define ARGUMENT_TYPE_int64_t int64_t 3644 #define ARGUMENT_TYPE___int64_t int64_t 3645 #define ARGUMENT_TYPE_uint8_t uint8_t 3646 #define ARGUMENT_TYPE_uint16_t uint16_t 3647 #define ARGUMENT_TYPE_uint32_t uint32_t 3648 #define ARGUMENT_TYPE_uint64_t uint64_t 3649 #define ARGUMENT_TYPE___uint64_t uint64_t 3650 #define ARGUMENT_TYPE_size_t size_t 3651 #define ARGUMENT_TYPE_ssize_t ssize_t 3652 #define ARGUMENT_TYPE_intptr_t intptr_t 3653 #define ARGUMENT_TYPE_uintptr_t uintptr_t 3654 #define ARGUMENT_TYPE___uintptr_t uintptr_t 3655 #define ARGUMENT_TYPE_logical_t logical_t 3656 #define ARGUMENT_TYPE_RexxArrayObject RexxArrayObject 3657 #define ARGUMENT_TYPE_RexxStemObject RexxStemObject 3658 #define ARGUMENT_TYPE_POINTERSTRING POINTER 3659 #define ARGUMENT_TYPE_RexxMutableBufferObject RexxMutableBufferObject 3661 #define ARGUMENT_TYPE_OPTIONAL_RexxObjectPtr RexxObjectPtr 3662 #define ARGUMENT_TYPE_OPTIONAL_int int 3663 #define ARGUMENT_TYPE_OPTIONAL_wholenumber_t wholenumber_t 3664 #define ARGUMENT_TYPE_OPTIONAL_stringsize_t stringsize_t 3665 #define ARGUMENT_TYPE_OPTIONAL_double double 3666 #define ARGUMENT_TYPE_OPTIONAL_CSTRING CSTRING 3667 #define ARGUMENT_TYPE_OPTIONAL_POINTER POINTER 3668 #define ARGUMENT_TYPE_OPTIONAL_RexxStringObject RexxStringObject 3669 #define ARGUMENT_TYPE_OPTIONAL_float float 3670 #define ARGUMENT_TYPE_OPTIONAL_int8_t int8_t 3671 #define ARGUMENT_TYPE_OPTIONAL_int16_t int16_t 3672 #define ARGUMENT_TYPE_OPTIONAL_int32_t int32_t 3673 #define ARGUMENT_TYPE_OPTIONAL_int64_t int64_t 3674 #define ARGUMENT_TYPE_OPTIONAL_uint8_t uint8_t 3675 #define ARGUMENT_TYPE_OPTIONAL_uint16_t uint16_t 3676 #define ARGUMENT_TYPE_OPTIONAL_uint32_t uint32_t 3677 #define ARGUMENT_TYPE_OPTIONAL_uint64_t uint64_t 3678 #define ARGUMENT_TYPE_OPTIONAL_size_t size_t 3679 #define ARGUMENT_TYPE_OPTIONAL_ssize_t ssize_t 3680 #define ARGUMENT_TYPE_OPTIONAL_intptr_t intptr_t 3681 #define ARGUMENT_TYPE_OPTIONAL_uintptr_t uintptr_t 3682 #define ARGUMENT_TYPE_OPTIONAL_logical_t logical_t 3683 #define ARGUMENT_TYPE_OPTIONAL_RexxArrayObject RexxArrayObject 3684 #define ARGUMENT_TYPE_OPTIONAL_RexxStemObject RexxStemObject 3685 #define ARGUMENT_TYPE_OPTIONAL_POINTERSTRING POINTER 3686 #define ARGUMENT_TYPE_OPTIONAL_RexxClassObject RexxClassObject 3687 #define ARGUMENT_TYPE_OPTIONAL_RexxMutableBufferObject RexxMutableBufferObject 3689 #define ARGUMENT_TYPE(t) ((t) & ~REXX_OPTIONAL_ARGUMENT) 3690 #define IS_OPTIONAL_ARGUMENT(t) (((t) & REXX_OPTIONAL_ARGUMENT) != 0) 3693 #define argumentExists(i) ((context->arguments[i].flags & ARGUMENT_EXISTS) != 0) 3694 #define argumentOmitted(i) (!argumentExists(i)) 3697 #define __type(t) ARGUMENT_TYPE_##t 3698 #define __arg(p, t) arguments[p].value.value_##t 3699 #define __ret(t, v) arguments[0].value.value_##t = (v); return NULL; 3700 #define __adcl(t, n) __type(t) n 3701 #define __tdcl(t) REXX_VALUE_##t 3703 #define __methodstub(name) uint16_t * RexxEntry name (RexxMethodContext *context, ValueDescriptor *arguments) 3706 #define __cpp_method_proto(name) extern "C" __methodstub(name); 3708 #define __cpp_method_proto(name) __methodstub(name); 3713 #define SET_REXX_VALUE(v, t, val) \ 3715 (v).type = REXX_VALUE##t; \ 3716 (v).value.value_##t = (val);\ 3720 #define GET_REXX_VALUE(v, t) ((v).value.value_##t) 3723 #define REXX_METHOD_PROTOTYPE(name) __cpp_method_proto(name) 3727 #define RexxMethod0(returnType, name) \ 3729 __type(returnType) name##_impl (RexxMethodContext * context); \ 3732 static uint16_t name##_types[] = {__tdcl(returnType), REXX_ARGUMENT_TERMINATOR}; \ 3734 __cpp_method_proto(name) \ 3736 __methodstub(name) \ 3738 if (arguments != NULL) \ 3741 __ret(returnType, (name##_impl(context))); \ 3743 return name##_types; \ 3746 __type(returnType) name##_impl(RexxMethodContext *context) 3750 #define RexxMethod1(returnType ,name, t1, n1) \ 3752 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1)); \ 3755 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), REXX_ARGUMENT_TERMINATOR}; \ 3757 __cpp_method_proto(name) \ 3759 __methodstub(name) \ 3761 if (arguments != NULL) \ 3764 __ret(returnType, name##_impl(context, __arg(1, t1))); \ 3766 return name##_types; \ 3769 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1)) 3773 #define RexxMethod2(returnType ,name, t1, n1, t2, n2) \ 3775 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2)); \ 3778 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), REXX_ARGUMENT_TERMINATOR}; \ 3780 __cpp_method_proto(name) \ 3782 __methodstub(name) \ 3784 if (arguments != NULL) \ 3787 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2))); \ 3789 return name##_types; \ 3792 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2)) 3796 #define RexxMethod3(returnType ,name, t1, n1, t2, n2, t3, n3) \ 3798 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3)); \ 3801 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), REXX_ARGUMENT_TERMINATOR}; \ 3803 __cpp_method_proto(name) \ 3805 __methodstub(name) \ 3807 if (arguments != NULL) \ 3810 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3))); \ 3812 return name##_types; \ 3815 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3)) 3819 #define RexxMethod4(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4) \ 3821 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4)); \ 3824 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), REXX_ARGUMENT_TERMINATOR}; \ 3826 __cpp_method_proto(name) \ 3828 __methodstub(name) \ 3830 if (arguments != NULL) \ 3833 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4))); \ 3835 return name##_types; \ 3838 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4)) 3842 #define RexxMethod5(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5) \ 3844 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5)); \ 3847 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), REXX_ARGUMENT_TERMINATOR}; \ 3849 __cpp_method_proto(name) \ 3851 __methodstub(name) \ 3853 if (arguments != NULL) \ 3856 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5))); \ 3858 return name##_types; \ 3861 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5)) 3865 #define RexxMethod6(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6) \ 3867 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6)); \ 3870 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), REXX_ARGUMENT_TERMINATOR}; \ 3872 __cpp_method_proto(name) \ 3874 __methodstub(name) \ 3876 if (arguments != NULL) \ 3879 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6))); \ 3881 return name##_types; \ 3884 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6)) 3888 #define RexxMethod7(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7) \ 3890 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7)); \ 3893 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), REXX_ARGUMENT_TERMINATOR}; \ 3895 __cpp_method_proto(name) \ 3897 __methodstub(name) \ 3899 if (arguments != NULL) \ 3902 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7))); \ 3904 return name##_types; \ 3907 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7)) 3911 #define RexxMethod8(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8) \ 3913 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8)); \ 3916 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), __tdcl(t8), REXX_ARGUMENT_TERMINATOR}; \ 3918 __cpp_method_proto(name) \ 3920 __methodstub(name) \ 3922 if (arguments != NULL) \ 3925 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7), __arg(8, t8))); \ 3927 return name##_types; \ 3930 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8)) 3934 #define RexxMethod9(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9) \ 3936 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9)); \ 3939 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), __tdcl(t8), __tdcl(t9), REXX_ARGUMENT_TERMINATOR}; \ 3941 __cpp_method_proto(name) \ 3943 __methodstub(name) \ 3945 if (arguments != NULL) \ 3948 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7), __arg(8, t8), __arg(9, t9))); \ 3950 return name##_types; \ 3953 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9)) 3957 #define RexxMethod10(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9, t10, n10) \ 3959 __type(returnType) name##_impl (RexxMethodContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9), __adcl(t10, n10)); \ 3962 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), __tdcl(t8), __tdcl(t9), __tdcl(t10), REXX_ARGUMENT_TERMINATOR}; \ 3964 __cpp_method_proto(name) \ 3966 __methodstub(name) \ 3968 if (arguments != NULL) \ 3971 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7), __arg(8, t8), __arg(9, t9), __arg(10, t10))); \ 3973 return name##_types; \ 3976 __type(returnType) name##_impl(RexxMethodContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9), __adcl(t10, n10)) 3979 #define __functionstub(name) uint16_t * RexxEntry name(RexxCallContext *context, ValueDescriptor *arguments) 3982 #define __cpp_function_proto(name) extern "C" __functionstub(name); 3984 #define __cpp_function_proto(name) __functionstub(name); 3987 #define REXX_TYPED_ROUTINE_PROTOTYPE(name) __cpp_function_proto(name) 3991 #define RexxRoutine0(returnType, name) \ 3993 __type(returnType) name##_impl (RexxCallContext * context); \ 3996 static uint16_t name##_types[] = {__tdcl(returnType), REXX_ARGUMENT_TERMINATOR}; \ 3998 __cpp_function_proto(name) \ 4000 __functionstub(name) \ 4002 if (arguments != NULL) \ 4005 __ret(returnType, name##_impl(context)); \ 4007 return name##_types; \ 4010 __type(returnType) name##_impl(RexxCallContext *context) 4014 #define RexxRoutine1(returnType ,name, t1, n1) \ 4016 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1)); \ 4019 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), REXX_ARGUMENT_TERMINATOR}; \ 4021 __cpp_function_proto(name) \ 4023 __functionstub(name) \ 4025 if (arguments != NULL) \ 4028 __ret(returnType, name##_impl(context, __arg(1, t1))); \ 4030 return name##_types; \ 4033 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1)) 4037 #define RexxRoutine2(returnType ,name, t1, n1, t2, n2) \ 4039 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2)); \ 4042 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), REXX_ARGUMENT_TERMINATOR }; \ 4044 __cpp_function_proto(name) \ 4046 __functionstub(name) \ 4048 if (arguments != NULL) \ 4051 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2))); \ 4053 return name##_types; \ 4056 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2)) 4060 #define RexxRoutine3(returnType ,name, t1, n1, t2, n2, t3, n3) \ 4062 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3)); \ 4065 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), REXX_ARGUMENT_TERMINATOR}; \ 4067 __cpp_function_proto(name) \ 4069 __functionstub(name) \ 4071 if (arguments != NULL) \ 4074 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3))); \ 4076 return name##_types; \ 4079 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3)) 4083 #define RexxRoutine4(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4) \ 4085 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4)); \ 4088 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), REXX_ARGUMENT_TERMINATOR}; \ 4090 __cpp_function_proto(name) \ 4092 __functionstub(name) \ 4094 if (arguments != NULL) \ 4097 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4))); \ 4099 return name##_types; \ 4102 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4)) 4106 #define RexxRoutine5(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5) \ 4108 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5)); \ 4111 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), REXX_ARGUMENT_TERMINATOR}; \ 4113 __cpp_function_proto(name) \ 4115 __functionstub(name) \ 4117 if (arguments != NULL) \ 4120 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5))); \ 4122 return name##_types; \ 4125 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5)) 4129 #define RexxRoutine6(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6) \ 4131 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6)); \ 4134 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), REXX_ARGUMENT_TERMINATOR}; \ 4136 __cpp_function_proto(name) \ 4138 __functionstub(name) \ 4140 if (arguments != NULL) \ 4143 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6))); \ 4145 return name##_types; \ 4148 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6)) 4151 #define RexxRoutine7(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7) \ 4153 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7)); \ 4156 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), REXX_ARGUMENT_TERMINATOR}; \ 4158 __cpp_function_proto(name) \ 4160 __functionstub(name) \ 4162 if (arguments != NULL) \ 4165 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7))); \ 4167 return name##_types; \ 4170 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7)) 4174 #define RexxRoutine8(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8) \ 4176 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8)); \ 4179 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), __tdcl(t8), REXX_ARGUMENT_TERMINATOR}; \ 4181 __cpp_function_proto(name) \ 4183 __functionstub(name) \ 4185 if (arguments != NULL) \ 4188 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7), __arg(8, t8))); \ 4190 return name##_types; \ 4193 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8)) 4197 #define RexxRoutine9(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9) \ 4199 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9)); \ 4202 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), __tdcl(t8), __tdcl(t9), REXX_ARGUMENT_TERMINATOR}; \ 4204 __cpp_function_proto(name) \ 4206 __functionstub(name) \ 4208 if (arguments != NULL) \ 4211 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7), __arg(8, t8), __arg(9, t9))); \ 4213 return name##_types; \ 4216 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9)) 4220 #define RexxRoutine10(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9, t10, n10) \ 4222 __type(returnType) name##_impl (RexxCallContext * context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9), __adcl(t10, n10)); \ 4225 static uint16_t name##_types[] = {__tdcl(returnType), __tdcl(t1), __tdcl(t2), __tdcl(t3), __tdcl(t4), __tdcl(t5), __tdcl(t6), __tdcl(t7), __tdcl(t8), __tdcl(t9), __tdcl(t10), REXX_ARGUMENT_TERMINATOR}; \ 4227 __cpp_function_proto(name) \ 4229 __functionstub(name) \ 4231 if (arguments != NULL) \ 4234 __ret(returnType, name##_impl(context, __arg(1, t1), __arg(2, t2), __arg(3, t3), __arg(4, t4), __arg(5, t5), __arg(6, t6), __arg(7, t7), __arg(8, t8), __arg(9, t9), __arg(10, t10))); \ 4236 return name##_types; \ 4239 __type(returnType) name##_impl(RexxCallContext *context, __adcl(t1, n1), __adcl(t2, n2), __adcl(t3, n3), __adcl(t4, n4), __adcl(t5, n5), __adcl(t6, n6), __adcl(t7, n7), __adcl(t8, n8), __adcl(t9, n9), __adcl(t10, n10))
RexxObjectPtr RexxEntry GetSelf(RexxMethodContext *c)
RexxObjectPtr RexxEntry SendMessage1(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxObjectPtr a1)
RexxContextCommandHandler * handler
logical_t value_logical_t
RexxInstanceInterface * functions
size_t RexxEntry ArrayDimension(RexxThreadContext *c, RexxArrayObject a)
uintptr_t value_uintptr_t
RexxStringObject RexxEntry StringLower(RexxThreadContext *c, RexxStringObject s)
struct _RexxDirectoryObject * RexxDirectoryObject
const typedef char * CSTRING
logical_t RexxEntry IsStem(RexxThreadContext *c, RexxObjectPtr o)
RexxContextExitHandler * handler
POINTER RexxEntry GetCSelf(RexxMethodContext *c)
int8_t value_OPTIONAL_int8_t
MethodContextInterface * functions
POINTER RexxEntry ObjectToCSelfScoped(RexxThreadContext *c, RexxObjectPtr o, RexxObjectPtr s)
void RexxEntry RaiseCondition(RexxThreadContext *c, CSTRING n, RexxStringObject desc, RexxObjectPtr add, RexxObjectPtr result)
CSTRING RexxEntry StringData(RexxThreadContext *c, RexxStringObject s)
double value_OPTIONAL_double
struct _RexxRoutineEntry * routines
RexxObjectPtr RexxEntry SupplierItem(RexxThreadContext *c, RexxSupplierObject o)
CSTRING value_OPTIONAL_CSTRING
RexxDirectoryObject RexxEntry GetPackagePublicRoutines(RexxThreadContext *c, RexxPackageObject m)
RexxClassObject value_RexxClassObject
struct _RexxArrayObject * RexxArrayObject
RexxObjectPtr RexxEntry CallProgram(RexxThreadContext *c, const char *p, RexxArrayObject a)
RexxClassObject RexxEntry FindContextClass(RexxMethodContext *c, CSTRING n)
void RexxEntry RaiseException2(RexxThreadContext *c, size_t n, RexxObjectPtr o1, RexxObjectPtr o2)
int32_t uint32_t uintptr_t RexxObjectPtr
RexxDirectoryObject RexxEntry GetLocalEnvironment(RexxThreadContext *c)
RexxArrayObject RexxEntry NewArray(RexxThreadContext *c, size_t s)
RexxObjectPtr RexxEntry CallRoutine(RexxThreadContext *c, RexxRoutineObject r, RexxArrayObject a)
size_t RexxEntry StringLength(RexxThreadContext *c, RexxStringObject s)
RexxObjectPtr value_RexxObjectPtr
void RexxEntry SetStemArrayElement(RexxThreadContext *c, RexxStemObject s, size_t i, RexxObjectPtr v)
struct _RexxMethodEntry RexxMethodEntry
wholenumber_t value_wholenumber_t
size_t RexxEntry MutableBufferLength(RexxThreadContext *c, RexxMutableBufferObject b)
RexxClassObject RexxEntry GetSuper(RexxMethodContext *c)
RexxObjectPtr RexxEntry IntptrToObject(RexxThreadContext *c, intptr_t n)
logical_t RexxEntry ObjectToIntptr(RexxThreadContext *c, RexxObjectPtr o, intptr_t *n)
void RexxEntry ClearCondition(RexxThreadContext *c)
void RexxEntry SetContextVariable(RexxCallContext *c, CSTRING n, RexxObjectPtr v)
RexxArrayObject value_OPTIONAL_RexxArrayObject
size_t RexxEntry ArrayAppendString(RexxThreadContext *c, RexxArrayObject a, CSTRING s, size_t l)
const struct RexxInstance_ * RexxInstance
RexxObjectPtr RexxEntry ValueToObject(RexxThreadContext *c, ValueDescriptor *d)
RexxStringObject RexxEntry FinishBufferString(RexxThreadContext *c, RexxBufferStringObject s, size_t l)
RexxDirectoryObject RexxEntry GetConditionInfo(RexxThreadContext *c)
RexxObjectPtr RexxEntry RequestGlobalReference(RexxThreadContext *c, RexxObjectPtr o)
RexxObjectPtr value_OPTIONAL_RexxObjectPtr
RexxObjectPtr RexxEntry WholeNumberToObject(RexxThreadContext *c, wholenumber_t n)
RexxStringObject value_OPTIONAL_RexxStringObject
RexxStringObject RexxEntry NewString(RexxThreadContext *c, CSTRING s, size_t l)
void RexxEntry SetStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n, RexxObjectPtr v)
RexxClassObject value_OPTIONAL_RexxClassObject
RexxMutableBufferObject value_RexxMutableBufferObject
wholenumber_t interfaceVersion
struct _RexxBufferObject * RexxBufferObject
POINTER RexxEntry BufferStringData(RexxThreadContext *c, RexxBufferStringObject s)
stringsize_t value_stringsize_t
const struct RexxExitContext_ * RexxExitContext
RexxPackageObject RexxEntry GetMethodPackage(RexxThreadContext *c, RexxMethodObject o)
void RexxEntry SetGuardOff(RexxMethodContext *c)
RexxArrayObject RexxEntry ValuesToObject(RexxThreadContext *c, ValueDescriptor *d, size_t count)
void(REXXENTRY * RexxPackageLoader)(RexxThreadContext *)
void RexxEntry DropContextVariable(RexxCallContext *c, CSTRING n)
RexxRoutineObject RexxEntry NewRoutine(RexxThreadContext *c, CSTRING n, CSTRING source, stringsize_t length)
float value_OPTIONAL_float
RexxDirectoryObject RexxEntry GetGlobalEnvironment(RexxThreadContext *c)
uint16_t value_OPTIONAL_uint16_t
RexxObjectPtr RexxEntry SupplierIndex(RexxThreadContext *c, RexxSupplierObject o)
logical_t RexxEntry IsArray(RexxThreadContext *c, RexxObjectPtr o)
const char * registeredName
size_t RexxEntry SetMutableBufferLength(RexxThreadContext *c, RexxMutableBufferObject b, size_t length)
RexxStringObject conditionName
POINTER RexxEntry ObjectToCSelf(RexxThreadContext *c, RexxObjectPtr o)
CSTRING RexxEntry GetMessageName(RexxMethodContext *c)
RexxObjectPtr RexxEntry GetObjectVariable(RexxMethodContext *c, CSTRING n)
RexxObjectPtr RexxEntry GetStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n)
#define REXX_VALUE_RexxArrayObject
void RexxEntry HaltThread(RexxThreadContext *c)
RexxObjectPtr RexxEntry DoubleToObject(RexxThreadContext *c, double n)
wholenumber_t interfaceVersion
RexxBufferObject RexxEntry NewBuffer(RexxThreadContext *c, size_t l)
struct _RexxPackageEntry RexxPackageEntry
RexxObjectPtr RexxEntry DirectoryRemove(RexxThreadContext *c, RexxDirectoryObject t, CSTRING i)
logical_t value_OPTIONAL_logical_t
RexxDirectoryObject RexxEntry GetPackageClasses(RexxThreadContext *c, RexxPackageObject m)
int32_t value_OPTIONAL_int32_t
RexxObjectPtr RexxEntry ForwardMessage(RexxMethodContext *c, RexxObjectPtr o, CSTRING n, RexxClassObject clazz, RexxArrayObject a)
RexxObjectPtr RexxEntry Int32ToObject(RexxThreadContext *c, int32_t n)
struct _RexxClassObject * RexxClassObject
logical_t RexxEntry IsDirectory(RexxThreadContext *c, RexxObjectPtr o)
stringsize_t RexxEntry GetContextFuzz(RexxCallContext *c)
struct _RexxBufferStringObject * RexxBufferStringObject
RexxObjectPtr RexxEntry DirectoryAt(RexxThreadContext *c, RexxDirectoryObject t, CSTRING i)
RexxArrayObject RexxEntry ArrayOfThree(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
RexxStemObject RexxEntry ResolveStemVariable(RexxCallContext *c, RexxObjectPtr s)
int32_t uint32_t uintptr_t intptr_t logical_t logical_t
struct _RexxMethodObject * RexxMethodObject
RexxPackageObject RexxEntry LoadPackage(RexxThreadContext *c, CSTRING n)
size_t RexxEntry LanguageLevel(RexxInstance *)
RexxMutableBufferObject RexxEntry NewMutableBuffer(RexxThreadContext *c, size_t l)
logical_t RexxEntry HasMethod(RexxThreadContext *c, RexxObjectPtr o, CSTRING n)
wholenumber_t interfaceVersion
size_t RexxEntry ArrayItems(RexxThreadContext *c, RexxArrayObject a)
ssize_t value_OPTIONAL_ssize_t
RexxStemObject RexxEntry NewStem(RexxThreadContext *c, CSTRING n)
RexxDirectoryObject RexxEntry GetAllContextVariables(RexxCallContext *c)
#define REXX_VALUE_double
RexxObjectPtr RexxEntry GetStemValue(RexxThreadContext *c, RexxStemObject s)
RexxArrayObject value_RexxArrayObject
POINTER RexxEntry SetMutableBufferCapacity(RexxThreadContext *c, RexxMutableBufferObject b, size_t length)
int32_t uint32_t uintptr_t intptr_t RexxObjectPtr
intptr_t value_OPTIONAL_intptr_t
void RexxEntry RaiseException1(RexxThreadContext *c, size_t n, RexxObjectPtr o1)
struct _RexxPackageObject * RexxPackageObject
#define REXX_VALUE_CSTRING
void RexxEntry RaiseException0(RexxThreadContext *c, size_t n)
logical_t RexxEntry ObjectToInt32(RexxThreadContext *c, RexxObjectPtr o, int32_t *n)
struct _RexxPointerObject * RexxPointerObject
RexxObjectPtr RexxEntry GetContextVariable(RexxCallContext *c, CSTRING n)
logical_t RexxEntry ObjectToUnsignedInt32(RexxThreadContext *c, RexxObjectPtr o, uint32_t *n)
RexxPointerObject RexxEntry NewPointer(RexxThreadContext *c, POINTER p)
CSTRING RexxEntry ObjectToStringValue(RexxThreadContext *c, RexxObjectPtr o)
RexxDirectoryObject RexxEntry NewDirectory(RexxThreadContext *c)
RexxObjectPtr RexxEntry GetScope(RexxMethodContext *c)
stringsize_t value_OPTIONAL_stringsize_t
size_t RexxEntry BufferLength(RexxThreadContext *c, RexxBufferObject b)
struct _RexxContextExit RexxContextExit
RexxThreadInterface * functions
logical_t RexxEntry ObjectToStringSize(RexxThreadContext *c, RexxObjectPtr o, stringsize_t *n)
POINTER value_OPTIONAL_POINTERSTRING
void RexxEntry Halt(RexxInstance *c)
size_t RexxEntry BufferStringLength(RexxThreadContext *c, RexxBufferStringObject s)
wholenumber_t stringsize_t int64_t
logical_t RexxEntry IsMethod(RexxThreadContext *c, RexxObjectPtr o)
uintptr_t value___uintptr_t
RexxObjectPtr RexxEntry SendMessage2(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxObjectPtr a1, RexxObjectPtr a2)
RexxPackageUnloader unloader
RexxStemObject value_RexxStemObject
RexxStringObject RexxEntry NewStringFromAsciiz(RexxThreadContext *c, CSTRING s)
size_t RexxEntry ArraySize(RexxThreadContext *c, RexxArrayObject a)
void RexxEntry ArrayPut(RexxThreadContext *c, RexxArrayObject a, RexxObjectPtr o, size_t i)
RexxStringObject value_RexxStringObject
RexxMutableBufferObject value_OPTIONAL_RexxMutableBufferObject
RexxClassObject RexxEntry FindClass(RexxThreadContext *c, CSTRING n)
const struct RexxMethodContext_ * RexxMethodContext
logical_t RexxEntry IsInstanceOf(RexxThreadContext *c, RexxObjectPtr o, RexxClassObject cl)
void RexxEntry ReleaseLocalReference(RexxThreadContext *c, RexxObjectPtr o)
uint64_t value___uint64_t
void RexxEntry SetGuardOn(RexxMethodContext *c)
POINTER RexxEntry MutableBufferData(RexxThreadContext *c, RexxMutableBufferObject b)
void RexxEntry SupplierNext(RexxThreadContext *c, RexxSupplierObject o)
wholenumber_t RexxEntry DisplayCondition(RexxThreadContext *c)
struct _RexxMutableBufferObject * RexxMutableBufferObject
RexxStringObject RexxEntry StringUpper(RexxThreadContext *c, RexxStringObject s)
size_t RexxEntry StringGet(RexxThreadContext *c, RexxStringObject s, size_t o, POINTER r, size_t l)
void(REXXENTRY * RexxPackageUnloader)(RexxThreadContext *)
size_t RexxEntry MutableBufferCapacity(RexxThreadContext *c, RexxMutableBufferObject b)
void RexxEntry DropStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n)
RexxObjectPtr REXXENTRY RexxContextCommandHandler(RexxExitContext *, RexxStringObject, RexxStringObject)
logical_t RexxEntry ObjectToUnsignedInt64(RexxThreadContext *c, RexxObjectPtr o, uint64_t *n)
RexxDirectoryObject RexxEntry GetPackageMethods(RexxThreadContext *c, RexxPackageObject m)
RexxObjectPtr RexxEntry GetCallerContext(RexxCallContext *c)
ValueDescriptor ValueDescriptor size_t count
logical_t RexxEntry ObjectToValue(RexxThreadContext *c, RexxObjectPtr o, ValueDescriptor *d)
struct _RexxRoutineEntry RexxRoutineEntry
RexxClassObject value_SUPER
int32_t uint32_t RexxObjectPtr
logical_t RexxEntry IsRoutine(RexxThreadContext *c, RexxObjectPtr o)
void RexxEntry DropStemArrayElement(RexxThreadContext *c, RexxStemObject s, size_t i)
logical_t RexxEntry RegisterLibrary(RexxThreadContext *c, CSTRING n, RexxPackageEntry *e)
#define REXX_VALUE_POINTER
logical_t RexxEntry ObjectToLogical(RexxThreadContext *c, RexxObjectPtr o, logical_t *n)
ValueDescriptor * arguments
#define REXX_VALUE_RexxMutableBufferObject
logical_t RexxEntry AttachThread(RexxInstance *c, RexxThreadContext **tc)
RexxArrayObject RexxEntry ArrayOfFour(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3, RexxObjectPtr o4)
logical_t RexxEntry ObjectToUintptr(RexxThreadContext *c, RexxObjectPtr o, uintptr_t *n)
RexxSupplierObject RexxEntry NewSupplier(RexxThreadContext *c, RexxArrayObject values, RexxArrayObject names)
RexxStringObject errortext
int REXXENTRY RexxContextExitHandler(RexxExitContext *, int, int, PEXIT)
int64_t value_OPTIONAL_int64_t
RexxObjectPtr RexxEntry DoubleToObjectWithPrecision(RexxThreadContext *c, double n, size_t precision)
logical_t RexxEntry IsPointer(RexxThreadContext *c, RexxObjectPtr o)
logical_t RexxEntry ObjectToWholeNumber(RexxThreadContext *c, RexxObjectPtr o, wholenumber_t *n)
logical_t RexxEntry SupplierAvailable(RexxThreadContext *c, RexxSupplierObject o)
struct _RexxRoutineObject * RexxRoutineObject
uint64_t value_OPTIONAL_uint64_t
RexxArrayObject value_ARGLIST
RexxObjectPtr RexxEntry LogicalToObject(RexxThreadContext *c, logical_t n)
void RexxEntry Terminate(RexxInstance *c)
RexxObjectPtr value_SCOPE
size_t value_OPTIONAL_size_t
RexxObjectPtr RexxEntry UintptrToObject(RexxThreadContext *c, uintptr_t n)
RexxReturnCode REXXENTRY RexxCreateInterpreter(RexxInstance **, RexxThreadContext **, RexxOption *)
void RexxEntry SetThreadTrace(RexxThreadContext *c, logical_t setting)
logical_t RexxEntry ObjectToInt64(RexxThreadContext *c, RexxObjectPtr o, int64_t *n)
RexxDirectoryObject RexxEntry GetPackageRoutines(RexxThreadContext *c, RexxPackageObject m)
uint32_t value_OPTIONAL_uint32_t
size_t RexxEntry ArrayAppend(RexxThreadContext *c, RexxArrayObject a, RexxObjectPtr o)
logical_t RexxEntry CheckCondition(RexxThreadContext *c)
wholenumber_t interfaceVersion
#define REXX_VALUE_RexxStemObject
POINTER RexxEntry BufferData(RexxThreadContext *c, RexxBufferObject b)
void RexxEntry DirectoryPut(RexxThreadContext *c, RexxDirectoryObject t, RexxObjectPtr o, CSTRING i)
POINTER RexxEntry PointerValue(RexxThreadContext *c, RexxPointerObject o)
wholenumber_t value_OPTIONAL_wholenumber_t
RexxStringObject description
const struct RexxCallContext_ * RexxCallContext