oorexxapi.h
Go to the documentation of this file.
1 /*----------------------------------------------------------------------------*/
2 /* */
3 /* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */
4 /* Copyright (c) 2005-2009 Rexx Language Association. All rights reserved. */
5 /* */
6 /* This program and the accompanying materials are made available under */
7 /* the terms of the Common Public License v1.0 which accompanies this */
8 /* distribution. A copy is also available at the following address: */
9 /* http://www.ibm.com/developerworks/oss/CPLv1.0.htm */
10 /* */
11 /* Redistribution and use in source and binary forms, with or */
12 /* without modification, are permitted provided that the following */
13 /* conditions are met: */
14 /* */
15 /* Redistributions of source code must retain the above copyright */
16 /* notice, this list of conditions and the following disclaimer. */
17 /* Redistributions in binary form must reproduce the above copyright */
18 /* notice, this list of conditions and the following disclaimer in */
19 /* the documentation and/or other materials provided with the distribution. */
20 /* */
21 /* Neither the name of Rexx Language Association nor the names */
22 /* of its contributors may be used to endorse or promote products */
23 /* derived from this software without specific prior written permission. */
24 /* */
25 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
26 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
27 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
28 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */
29 /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */
30 /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */
31 /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
32 /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */
33 /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
34 /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */
35 /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
36 /* */
37 /*----------------------------------------------------------------------------*/
38 /******************************************************************************/
39 /* ooRexx Macros */
40 /* */
41 /* Header file for ooRexx methods written in C. */
42 /* */
43 /******************************************************************************/
44 #ifndef RexxNativeInterface_Included
45 #define RexxNativeInterface_Included
46 
47 #include "rexx.h"
48 #include "oorexxerrors.h"
49 
50 
51 /******************************************************************************/
52 /* Interface Datatypes (used in macro expansions) */
53 /******************************************************************************/
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
61 
62 // each of the following types have an optional equivalent
63 
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
94 
95 #define REXX_OPTIONAL_ARGUMENT 0x8000
96 
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)
124 
126 
127 // forward defininitions of the context structure types
128 struct RexxInstance_;
129 #ifdef __cplusplus
131 #else
132 typedef const struct RexxInstance_ *RexxInstance;
133 #endif
134 
135 struct RexxThreadContext_;
136 #ifdef __cplusplus
138 #else
139 typedef const struct RexxThreadContext_ *RexxThreadContext;
140 #endif
141 
142 struct RexxMethodContext_;
143 #ifdef __cplusplus
145 #else
146 typedef const struct RexxMethodContext_ *RexxMethodContext;
147 #endif
148 
149 struct RexxCallContext_;
150 #ifdef __cplusplus
152 #else
153 typedef const struct RexxCallContext_ *RexxCallContext;
154 #endif
155 
156 struct RexxExitContext_;
157 #ifdef __cplusplus
159 #else
160 typedef const struct RexxExitContext_ *RexxExitContext;
161 #endif
162 
163 
164 /* This typedef simplifies coding of an Exit handler. */
166 
167 
168 
169 typedef struct _RexxContextExit
170 {
171  RexxContextExitHandler *handler; /* subcom enviro for sysexit */
172  int sysexit_code; /* sysexit function code */
174 
175 
176 typedef struct _RexxRoutineEntry
177 {
178  int style; // function call style
179  int reserved1; // reserved for future use
180  const char *name; // name of the function
181  void *entryPoint; // resolved function entry point
182  int reserved2; // reserved for future use
183  int reserved3; // reserved for future use
185 
186 #define ROUTINE_TYPED_STYLE 1
187 #define ROUTINE_CLASSIC_STYLE 2
188 
189 #define REXX_ROUTINE(s, n, e) { s, 0, #n, (void *)e, 0, 0 }
190 
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 }
194 
195 #define REXX_CLASSIC_ROUTINE_PROTOTYPE(name) size_t RexxEntry name(const char *, size_t, CONSTRXSTRING *, const char *, RXSTRING *)
196 
197 typedef struct _RexxMethodEntry
198 {
199  int style; // function call style
200  int reserved1; // reserved for future use
201  const char *name; // name of the method
202  void *entryPoint; // resolved function entry point
203  int reserved2; // reserved for future use
204  int reserved3; // reserved for future use
206 
207 #define METHOD_TYPED_STYLE 1
208 
209 #define REXX_METHOD_ENTRY(n, e) { METHOD_TYPED_STYLE, 0, #n, (void *)e, 0, 0 }
210 
211 #define REXX_METHOD(n, e) REXX_METHOD_ENTRY(n, e)
212 #define REXX_LAST_METHOD() { 0, 0, NULL, (void *)NULL, 0, 0 }
213 
214 #define REXX_PACKAGE_API_NO 20081030
215 // The interpreter version gets defined using two digits for major, minor, and revision.
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_2 0x00040102
220 #define REXX_INTERPRETER_4_1_3 0x00040103
221 #define REXX_INTERPRETER_4_2_0 0x00040200
222 #define REXX_INTERPRETER_4_3_0 0x00040300
223 #define REXX_CURRENT_INTERPRETER_VERSION REXX_INTERPRETER_4_3_0
224 #define NO_VERSION_YET NULL
225 
226 #define REXX_LANGUAGE_6_03 0x00000603
227 #define REXX_LANGUAGE_6_04 0x00000604
228 #define REXX_CURRENT_LANGUAGE_LEVEL REXX_LANGUAGE_6_04
229 
230 #define STANDARD_PACKAGE_HEADER sizeof(RexxPackageEntry), REXX_PACKAGE_API_NO,
231 
232 #define OOREXX_GET_PACKAGE(name) \
233  BEGIN_EXTERN_C()\
234  REXXEXPORT RexxPackageEntry *RexxGetPackage(void) { return &name##_package_entry; }\
235  END_EXTERN_C()
236 
237 
240 
241 typedef struct _RexxPackageEntry
242 {
243  int size; // size of the structure...helps compatibility
244  int apiVersion; // version this was compiled with
245  int requiredVersion; // minimum required interpreter version (0 means any)
246  const char *packageName; // package identifier
247  const char *packageVersion; // package version #
248  RexxPackageLoader loader; // the package loader
249  RexxPackageUnloader unloader; // the package unloader
250  struct _RexxRoutineEntry *routines; // routines contained in this package
251  struct _RexxMethodEntry *methods; // methods contained in this package
253 
254 END_EXTERN_C()
255 
256 // argument existence indicator
257 #define ARGUMENT_EXISTS 0x01
258 // the argument is a "special" virtual argument derived from context
259 #define SPECIAL_ARGUMENT 0x02
260 
261 typedef struct _ValueDescriptor
262 {
263 // union containing argument values for each of the passable/returnable
264 // types from a method/function call. The arguments are pass/retrieved
265 // using the appropriate type names, which bypasses any endian issues of
266 // how different sized values might be stored with a union.
267  union
268  {
281  double value_double;
285  float value_float;
299  size_t value_size_t;
305 
306  // following just duplicate the non-optional variations...
307  // it was difficult (if not impossible) to get the
308  // preprocessor to generate a mapped symbol name.
336  } value;
337 
338  uint16_t type; // type of the value
339  uint16_t flags; // argument flags
340 
341 
342 // these methods are only available for C++ code
343 #ifdef __cplusplus
344  inline operator RexxObjectPtr() { return value.value_RexxObjectPtr; }
345  inline void operator=(RexxObjectPtr o) { type = REXX_VALUE_RexxObjectPtr; value.value_RexxObjectPtr = o; }
346  inline operator RexxStringObject() { return value.value_RexxStringObject; }
347  inline void operator=(RexxStringObject o) { type = REXX_VALUE_RexxStringObject; value.value_RexxStringObject = o; }
348  inline operator RexxArrayObject() { return value.value_RexxArrayObject; }
349  inline void operator=(RexxArrayObject o) { type = REXX_VALUE_RexxArrayObject; value.value_RexxArrayObject = o; }
350  inline operator RexxStemObject() { return value.value_RexxStemObject; }
351  inline void operator=(RexxStemObject o) { type = REXX_VALUE_RexxStemObject; value.value_RexxStemObject = o; }
352  inline operator RexxMutableBufferObject() { return value.value_RexxMutableBufferObject; }
353  inline void operator=(RexxMutableBufferObject o) { type = REXX_VALUE_RexxMutableBufferObject; value.value_RexxMutableBufferObject = o; }
354  inline operator CSTRING() { return value.value_CSTRING; }
355  inline void operator=(CSTRING o) { type = REXX_VALUE_CSTRING; value.value_CSTRING = o; }
356  inline operator POINTER() { return value.value_POINTER; }
357  inline void operator=(POINTER o) { type = REXX_VALUE_POINTER; value.value_POINTER = o; }
358  inline operator wholenumber_t() { return value.value_wholenumber_t; }
359  inline void operator=(wholenumber_t o) { type = REXX_VALUE_wholenumber_t; value.value_wholenumber_t = o; }
360  inline operator stringsize_t() { return value.value_stringsize_t; }
361  inline void operator=(float o) { type = REXX_VALUE_float; value.value_float = o; }
362  inline operator float() { return value.value_float; }
363  inline operator double() { return value.value_double; }
364  inline void operator=(double o) { type = REXX_VALUE_double; value.value_double = o; }
365 #endif
367 
368 
369 // The initial address environment, passed as a CSTRING value.
370 #define INITIAL_ADDRESS_ENVIRONMENT "InitialAddress"
371 // Opaque user data, passed as a POINTER value.
372 #define APPLICATION_DATA "ApplicationData"
373 // External function search path
374 #define EXTERNAL_CALL_PATH "ExternalCallPath"
375 // list of lookup extensions to search for on external calls
376 #define EXTERNAL_CALL_EXTENSIONS "ExternalCallPathExt"
377 // a library that will be loaded during initialization
378 // specified as a CSTRING name
379 #define LOAD_REQUIRED_LIBRARY "LoadRequiredLibrary"
380 // The set of exits to use. These are old-style exits, using registered exit names.
381 #define REGISTERED_EXITS "RegisteredExits"
382 // The set of exits to use. These are new-style exits, using direct exit addresses and
383 // the object oriented RexxExitContext calling convention.
384 #define DIRECT_EXITS "DirectExits"
385 // The set of command envronments to use. These use registered command handler names.
386 #define REGISTERED_ENVIRONMENTS "RegisteredEnvironments"
387 // The set of command environments to use. These are direct call addresses using the
388 // object-oriented calling convetion.
389 #define DIRECT_ENVIRONMENTS "DirectEnvironments"
390 // register a library for an in-process package
391 #define REGISTER_LIBRARY "RegisterLibrary"
392 
393 
394 /* This typedef simplifies coding of an Exit handler. */
396 
397 
398 typedef struct
399 {
400  RexxContextCommandHandler *handler; // the environment handler
401  const char *name; // the handler name
403 
404 typedef struct
405 {
406  const char *registeredName; // the environment handler
407  const char *name; // the handler name
409 
410 typedef struct
411 {
412  const char *registeredName; // the package name (case sensitive)
413  RexxPackageEntry *table; // the package table associated with the package
415 
416 typedef struct
417 {
418  const char *optionName; // name of the option
419  ValueDescriptor option; // a value appropriate to the option
420 } RexxOption;
421 
422 
423 typedef struct {
424  wholenumber_t code; // full condition code
425  wholenumber_t rc; // return code value
426  size_t position; // line number position
427  RexxStringObject conditionName; // name of the condition
428  RexxStringObject message; // fully filled in message
429  RexxStringObject errortext; // major error text
430  RexxStringObject program; // program name
431  RexxStringObject description; // program name
432  RexxArrayObject additional; // additional information
433 } RexxCondition;
434 
435 #define INSTANCE_INTERFACE_VERSION 100
436 
437 typedef struct
438 {
439  wholenumber_t interfaceVersion; // The interface version identifier
440 
448 
449 #define THREAD_INTERFACE_VERSION_4_0_0 100
450 #define THREAD_INTERFACE_VERSION_4_1_1 101
451 #define THREAD_INTERFACE_VERSION 102
452 
454 
455 typedef struct
456 {
457  wholenumber_t interfaceVersion; // The interface version identifier
458 
465 
470 
473 
477 
491 
498 
524 
535 
540 
546 
561 
566 
570 
576 
587 
594  void (RexxEntry *RaiseException)(RexxThreadContext *, size_t, RexxArrayObject);
600 
605 
608 
616 
618 
619 
620 #define METHOD_INTERFACE_VERSION_4_0_0 100
621 #define METHOD_INTERFACE_VERSION 101
622 
623 typedef struct
624 {
625  wholenumber_t interfaceVersion; // The interface version identifier
626 
628  RexxObjectPtr (RexxEntry *GetArgument)(RexxMethodContext *, size_t);
643 
644 #define CALL_INTERFACE_VERSION 100
645 
646 typedef struct
647 {
648  wholenumber_t interfaceVersion; // The interface version identifier
649 
651  RexxObjectPtr (RexxEntry *GetArgument)(RexxCallContext *, size_t);
666 
667 #define EXIT_INTERFACE_VERSION 100
668 
669 typedef struct
670 {
671  wholenumber_t interfaceVersion; // The interface version identifier
678 
679 END_EXTERN_C()
680 
682 {
683  RexxInstanceInterface *functions; // the interface function vector
684  void *applicationData; // creator defined data pointer
685 #ifdef __cplusplus
686  void Terminate()
687  {
688  functions->Terminate(this);
689  }
691  {
692  return functions->AttachThread(this, tc);
693  }
694  size_t InterpreterVersion()
695  {
696  return functions->InterpreterVersion(this);
697  }
698  size_t LanguageLevel()
699  {
700  return functions->LanguageLevel(this);
701  }
702  void Halt()
703  {
704  functions->Halt(this);
705  }
706  void SetTrace(logical_t s)
707  {
708  functions->SetTrace(this, s);
709  }
710 #endif
711 };
712 
713 
715 {
716  RexxInstance *instance; // the owning instance
717  RexxThreadInterface *functions; // the interface function vector
718 #ifdef __cplusplus
719  POINTER GetApplicationData()
720  {
721  return instance->applicationData;
722  }
723  size_t InterpreterVersion()
724  {
725  return instance->InterpreterVersion();
726  }
727  size_t LanguageLevel()
728  {
729  return instance->LanguageLevel();
730  }
731  void DetachThread()
732  {
733  functions->DetachThread(this);
734  }
735  void HaltThread()
736  {
737  functions->HaltThread(this);
738  }
739  void SetThreadTrace(logical_t s)
740  {
741  functions->SetThreadTrace(this, s);
742  }
744  {
745  return functions->RequestGlobalReference(this, o);
746  }
748  {
749  functions->ReleaseGlobalReference(this, o);
750  }
752  {
753  functions->ReleaseLocalReference(this, o);
754  }
755 
756  RexxObjectPtr SendMessage(RexxObjectPtr o, CSTRING msg, RexxArrayObject arr)
757  {
758  return functions->SendMessage(this, o, msg, arr);
759  }
761  {
762  return functions->SendMessage0(this, o, msg);
763  }
765  {
766  return functions->SendMessage1(this, o, msg, a1);
767  }
769  {
770  return functions->SendMessage2(this, o, msg, a1, a2);
771  }
772 
774  {
775  return functions->GetLocalEnvironment(this);
776  }
778  {
779  return functions->GetGlobalEnvironment(this);
780  }
782  {
783  return functions->IsInstanceOf(this, o, co);
784  }
786  {
787  return functions->IsOfType(this, o, cn);
788  }
790  {
791  return functions->FindClass(this, s);
792  }
793  RexxClassObject FindPackageClass(RexxPackageObject m, CSTRING n)
794  {
795  return functions->FindPackageClass(this, m, n);
796  }
798  {
799  return functions->HasMethod(this, o, m);
800  }
801  RexxMethodObject NewMethod(CSTRING n, CSTRING s, size_t l)
802  {
803  return functions->NewMethod(this, n, s, l);
804  }
806  {
807  return functions->NewRoutine(this, n, s, l);
808  }
810  {
811  return functions->IsRoutine(this, o);
812  }
814  {
815  return functions->IsMethod(this, o);
816  }
818  {
819  return functions->GetRoutinePackage(this, o);
820  }
822  {
823  return functions->GetMethodPackage(this, o);
824  }
825 
826 
828  {
829  return functions->GetPackageRoutines(this, m);
830  }
832  {
833  return functions->GetPackagePublicRoutines(this, m);
834  }
836  {
837  return functions->GetPackageClasses(this, m);
838  }
840  {
841  return functions->GetPackagePublicClasses(this, m);
842  }
844  {
845  return functions->GetPackageMethods(this, m);
846  }
848  {
849  return functions->CallRoutine(this, m, a);
850  }
852  {
853  return functions->CallProgram(this, n, a);
854  }
856  {
857  return functions->LoadPackage(this, d);
858  }
860  {
861  return functions->LoadPackageFromData(this, n, d, l);
862  }
863  logical_t LoadLibrary(CSTRING n)
864  {
865  return functions->LoadLibrary(this, n);
866  }
868  {
869  return functions->RegisterLibrary(this, n, e);
870  }
872  {
873  return functions->ObjectToCSelf(this, o);
874  }
876  {
877  return functions->ObjectToCSelfScoped(this, o, s);
878  }
880  {
881  return functions->WholeNumberToObject(this, n);
882  }
883  RexxObjectPtr WholeNumber(wholenumber_t n)
884  {
885  return functions->WholeNumberToObject(this, n);
886  }
888  {
889  return functions->UintptrToObject(this, n);
890  }
891  RexxObjectPtr Uintptr(uintptr_t n)
892  {
893  return functions->UintptrToObject(this, n);
894  }
896  {
897  return functions->IntptrToObject(this, n);
898  }
899  RexxObjectPtr Intptr(intptr_t n)
900  {
901  return functions->IntptrToObject(this, n);
902  }
904  {
905  return functions->StringSizeToObject(this, n);
906  }
907  RexxObjectPtr StringSize(size_t n)
908  {
909  return functions->StringSizeToObject(this, n);
910  }
912  {
913  return functions->ObjectToWholeNumber(this, o, n);
914  }
915  logical_t WholeNumber(RexxObjectPtr o, wholenumber_t *n)
916  {
917  return functions->ObjectToWholeNumber(this, o, n);
918  }
920  {
921  return functions->ObjectToStringSize(this, o, n);
922  }
923  logical_t StringSize(RexxObjectPtr o, size_t *n)
924  {
925  return functions->ObjectToStringSize(this, o, n);
926  }
928  {
929  return functions->Int64ToObject(this, i);
930  }
931  RexxObjectPtr Int64(int64_t i)
932  {
933  return functions->Int64ToObject(this, i);
934  }
936  {
937  return functions->UnsignedInt64ToObject(this, u);
938  }
939  RexxObjectPtr UnsignedInt64(uint64_t u)
940  {
941  return functions->UnsignedInt64ToObject(this, u);
942  }
944  {
945  return functions->ObjectToInt64(this, o, i);
946  }
947  logical_t Int64(RexxObjectPtr o, int64_t *i)
948  {
949  return functions->ObjectToInt64(this, o, i);
950  }
952  {
953  return functions->ObjectToUnsignedInt64(this, o, u);
954  }
955  logical_t UnsignedInt64(RexxObjectPtr o, uint64_t *u)
956  {
957  return functions->ObjectToUnsignedInt64(this, o, u);
958  }
960  {
961  return functions->Int32ToObject(this, i);
962  }
963  RexxObjectPtr Int32(int32_t i)
964  {
965  return functions->Int32ToObject(this, i);
966  }
968  {
969  return functions->UnsignedInt32ToObject(this, u);
970  }
971  RexxObjectPtr UnsignedInt32(uint32_t u)
972  {
973  return functions->UnsignedInt32ToObject(this, u);
974  }
976  {
977  return functions->ObjectToInt32(this, o, i);
978  }
979  logical_t Int32(RexxObjectPtr o, int32_t *i)
980  {
981  return functions->ObjectToInt32(this, o, i);
982  }
984  {
985  return functions->ObjectToUnsignedInt32(this, o, u);
986  }
987  logical_t UnsignedInt32(RexxObjectPtr o, uint32_t *u)
988  {
989  return functions->ObjectToUnsignedInt32(this, o, u);
990  }
992  {
993  return functions->ObjectToUintptr(this, o, n);
994  }
995  logical_t Uintptr(RexxObjectPtr o, uintptr_t *n)
996  {
997  return functions->ObjectToUintptr(this, o, n);
998  }
1000  {
1001  return functions->ObjectToIntptr(this, o, n);
1002  }
1003  logical_t Intptr(RexxObjectPtr o, intptr_t *n)
1004  {
1005  return functions->ObjectToIntptr(this, o, n);
1006  }
1008  {
1009  return functions->ObjectToLogical(this, o, n);
1010  }
1011  logical_t Logical(RexxObjectPtr o, logical_t *n)
1012  {
1013  return functions->ObjectToLogical(this, o, n);
1014  }
1016  {
1017  return functions->LogicalToObject(this, l);
1018  }
1019  RexxObjectPtr Logical(logical_t l)
1020  {
1021  return functions->LogicalToObject(this, l);
1022  }
1023  RexxObjectPtr DoubleToObject(double d)
1024  {
1025  return functions->DoubleToObject(this, d);
1026  }
1027  RexxObjectPtr Double(double d)
1028  {
1029  return functions->DoubleToObject(this, d);
1030  }
1031  RexxObjectPtr DoubleToObjectWithPrecision(double d, size_t precision)
1032  {
1033  return functions->DoubleToObjectWithPrecision(this, d, precision);
1034  }
1035  logical_t ObjectToDouble(RexxObjectPtr o, double *d)
1036  {
1037  return functions->ObjectToDouble(this, o, d);
1038  }
1039  logical_t Double(RexxObjectPtr o, double *d)
1040  {
1041  return functions->ObjectToDouble(this, o, d);
1042  }
1044  {
1045  return functions->ValueToObject(this, v);
1046  }
1048  {
1049  return functions->ValuesToObject(this, v, c);
1050  }
1052  {
1053  return functions->ObjectToValue(this, o, v);
1054  }
1056  {
1057  return functions->ObjectToString(this, o);
1058  }
1060  {
1061  return functions->ObjectToStringValue(this, o);
1062  }
1063  CSTRING CString(RexxObjectPtr o)
1064  {
1065  return functions->ObjectToStringValue(this, o);
1066  }
1067  size_t StringGet(RexxStringObject o, size_t len1, POINTER s, size_t len2)
1068  {
1069  return functions->StringGet(this, o, len1, s, len2);
1070  }
1071  size_t StringLength(RexxStringObject o)
1072  {
1073  return functions->StringLength(this, o);
1074  }
1076  {
1077  return functions->StringData(this, o);
1078  }
1079  RexxStringObject NewString(CSTRING s, size_t len)
1080  {
1081  return functions->NewString(this, s, len);
1082  }
1084  {
1085  return functions->NewStringFromAsciiz(this, s);
1086  }
1087  RexxStringObject String(CSTRING s, size_t len)
1088  {
1089  return functions->NewString(this, s, len);
1090  }
1091  RexxStringObject String(CSTRING s)
1092  {
1093  return functions->NewStringFromAsciiz(this, s);
1094  }
1095  RexxStringObject CString(CSTRING s)
1096  {
1097  return functions->NewStringFromAsciiz(this, s);
1098  }
1100  {
1101  return functions->StringUpper(this, s);
1102  }
1104  {
1105  return functions->StringLower(this, s);
1106  }
1108  {
1109  return functions->IsString(this, o);
1110  }
1111 
1113  {
1114  return functions->NewBufferString(this, len);
1115  }
1116 
1118  {
1119  return functions->BufferStringLength(this, o);
1120  }
1121 
1123  {
1124  return functions->BufferStringData(this, o);
1125  }
1126 
1128  {
1129  return functions->FinishBufferString(this, o, l);
1130  }
1131 
1133  {
1134  functions->DirectoryPut(this, diro, o, s);
1135  }
1137  {
1138  return functions->DirectoryAt(this, to, s);
1139  }
1141  {
1142  return functions->DirectoryRemove(this, to, s);
1143  }
1145  {
1146  return functions->NewDirectory(this);
1147  }
1149  {
1150  return functions->IsDirectory(this, o);
1151  }
1152 
1153  RexxObjectPtr ArrayAt(RexxArrayObject ao, size_t n)
1154  {
1155  return functions->ArrayAt(this, ao, n);
1156  }
1157  void ArrayPut(RexxArrayObject ao, RexxObjectPtr o, size_t n)
1158  {
1159  functions->ArrayPut(this, ao, o, n);
1160  }
1162  {
1163  return functions->ArrayAppend(this, ao, o);
1164  }
1165  size_t ArrayAppendString(RexxArrayObject ao, CSTRING s, size_t l)
1166  {
1167  return functions->ArrayAppendString(this, ao, s, l);
1168  }
1169  size_t ArraySize(RexxArrayObject ao)
1170  {
1171  return functions->ArraySize(this, ao);
1172  }
1173  size_t ArrayItems(RexxArrayObject ao)
1174  {
1175  return functions->ArrayItems(this, ao);
1176  }
1177  size_t ArrayDimension(RexxArrayObject ao)
1178  {
1179  return functions->ArrayDimension(this, ao);
1180  }
1181  RexxArrayObject NewArray(size_t n)
1182  {
1183  return functions->NewArray(this, n);
1184  }
1186  {
1187  return functions->ArrayOfOne(this, o);
1188  }
1190  {
1191  return functions->ArrayOfTwo(this, o1, o2);
1192  }
1194  {
1195  return functions->ArrayOfThree(this, o1, o2, o3);
1196  }
1198  {
1199  return functions->ArrayOfFour(this, o1, o2, o3, o4);
1200  }
1202  {
1203  return functions->ArrayOfFive(this, o1, o2, o3, o4, o5);
1204  }
1206  {
1207  return functions->ArrayOfOne(this, o);
1208  }
1210  {
1211  return functions->ArrayOfTwo(this, o1, o2);
1212  }
1214  {
1215  return functions->ArrayOfThree(this, o1, o2, o3);
1216  }
1218  {
1219  return functions->ArrayOfFour(this, o1, o2, o3, o4);
1220  }
1222  {
1223  return functions->ArrayOfFive(this, o1, o2, o3, o4, o5);
1224  }
1226  {
1227  return functions->IsArray(this, o);
1228  }
1229 
1231  {
1232  return functions->BufferData(this, bo);
1233  }
1234  size_t BufferLength(RexxBufferObject bo)
1235  {
1236  return functions->BufferLength(this, bo);
1237  }
1239  {
1240  return functions->NewBuffer(this, n);
1241  }
1243  {
1244  return functions->IsBuffer(this, o);
1245  }
1246 
1248  {
1249  return functions->MutableBufferData(this, bo);
1250  }
1251 
1253  {
1254  return functions->MutableBufferLength(this, bo);
1255  }
1256 
1257  size_t SetMutableBufferLength(RexxMutableBufferObject bo, size_t l)
1258  {
1259  return functions->SetMutableBufferLength(this, bo, l);
1260  }
1261 
1263  {
1264  return functions->NewMutableBuffer(this, n);
1265  }
1266 
1268  {
1269  return functions->IsMutableBuffer(this, o);
1270  }
1271 
1273  {
1274  return functions->MutableBufferCapacity(this, bo);
1275  }
1276 
1278  {
1279  return functions->SetMutableBufferCapacity(this, bo, l);
1280  }
1281 
1283  {
1284  return functions->PointerValue(this, po);
1285  }
1287  {
1288  return functions->NewPointer(this, po);
1289  }
1291  {
1292  return functions->IsPointer(this, o);
1293  }
1294 
1296  {
1297  return functions->SupplierItem(this, so);
1298  }
1300  {
1301  return functions->SupplierIndex(this, so);
1302  }
1304  {
1305  return functions->SupplierAvailable(this, so);
1306  }
1308  {
1309  functions->SupplierNext(this, so);
1310  }
1312  {
1313  return functions->NewSupplier(this, values, names);
1314  }
1315 
1317  {
1318  return functions->NewStem(this, n);
1319  }
1321  {
1322  functions->SetStemElement(this, so, s, o);
1323  }
1325  {
1326  return functions->GetStemElement(this, so, s);
1327  }
1329  {
1330  functions->DropStemElement(this, so, s);
1331  }
1332  void SetStemArrayElement(RexxStemObject so, size_t n, RexxObjectPtr o)
1333  {
1334  functions->SetStemArrayElement(this, so, n, o);
1335  }
1337  {
1338  return functions->GetStemArrayElement(this, so, n);
1339  }
1340  void DropStemArrayElement(RexxStemObject so, size_t n)
1341  {
1342  functions->DropStemArrayElement(this, so, n);
1343  }
1345  {
1346  return functions->GetAllStemElements(this, so);
1347  }
1349  {
1350  return functions->GetStemValue(this, so);
1351  }
1353  {
1354  return functions->IsStem(this, o);
1355  }
1356  void RaiseException0(size_t n)
1357  {
1358  functions->RaiseException0(this, n);
1359  }
1360  void RaiseException1(size_t n, RexxObjectPtr o)
1361  {
1362  functions->RaiseException1(this, n, o);
1363  }
1364  void RaiseException2(size_t n, RexxObjectPtr o1, RexxObjectPtr o2)
1365  {
1366  functions->RaiseException2(this, n, o1, o2);
1367  }
1368  void RaiseException3(size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
1369  {
1370  functions->RaiseException3(this, n, o1, o2, o3);
1371  }
1373  {
1374  functions->RaiseException4(this, n, o1, o2, o3, o4);
1375  }
1377  {
1378  functions->RaiseException5(this, n, o1, o2, o3, o4, o5);
1379  }
1380  void RaiseException(size_t n, RexxArrayObject ao)
1381  {
1382  functions->RaiseException(this, n, ao);
1383  }
1385  {
1386  functions->RaiseCondition(this, s1, s2, ao, o);
1387  }
1389  {
1390  return functions->CheckCondition(this);
1391  }
1393  {
1394  return functions->DisplayCondition(this);
1395  }
1397  {
1398  return functions->GetConditionInfo(this);
1399  }
1401  {
1402  functions->DecodeConditionInfo(this, diro, c);
1403  }
1404  void ClearCondition()
1405  {
1406  functions->ClearCondition(this);
1407  }
1408 
1409  RexxObjectPtr Nil()
1410  {
1411  return functions->RexxNil;
1412  }
1413  RexxObjectPtr True()
1414  {
1415  return functions->RexxTrue;
1416  }
1417  RexxObjectPtr False()
1418  {
1419  return functions->RexxFalse;
1420  }
1421  RexxStringObject NullString()
1422  {
1423  return functions->RexxNullString;
1424  }
1425 #endif
1426 };
1427 
1429 {
1430  RexxThreadContext *threadContext; // the interpreter instance state
1431  MethodContextInterface *functions; // functions available in a method context
1432  ValueDescriptor *arguments; // the argument descriptor
1433 
1434 #ifdef __cplusplus
1435  POINTER GetApplicationData()
1436  {
1437  return threadContext->GetApplicationData();
1438  }
1439  size_t InterpreterVersion()
1440  {
1441  return threadContext->InterpreterVersion();
1442  }
1443  size_t LanguageLevel()
1444  {
1445  return threadContext->LanguageLevel();
1446  }
1448  {
1449  return threadContext->RequestGlobalReference(o);
1450  }
1452  {
1453  threadContext->ReleaseGlobalReference(o);
1454  }
1456  {
1457  threadContext->ReleaseLocalReference(o);
1458  }
1459 
1460  RexxObjectPtr SendMessage(RexxObjectPtr o, CSTRING s, RexxArrayObject ao)
1461  {
1462  return threadContext->SendMessage(o, s, ao);
1463  }
1465  {
1466  return threadContext->SendMessage0(o, s);
1467  }
1469  {
1470  return threadContext->SendMessage1(o, s, a1);
1471  }
1473  {
1474  return threadContext->SendMessage2(o, s, a1, a2);
1475  }
1476 
1478  {
1479  return threadContext->GetLocalEnvironment();
1480  }
1482  {
1483  return threadContext->GetGlobalEnvironment();
1484  }
1485 
1487  {
1488  return threadContext->IsInstanceOf(o, co);
1489  }
1491  {
1492  return threadContext->IsOfType(o, cn);
1493  }
1495  {
1496  return threadContext->FindClass(s);
1497  }
1498  RexxClassObject FindPackageClass(RexxPackageObject m, CSTRING n)
1499  {
1500  return threadContext->FindPackageClass(m, n);
1501  }
1503  {
1504  return threadContext->HasMethod(o, m);
1505  }
1506  RexxMethodObject NewMethod(CSTRING n, CSTRING s, size_t l)
1507  {
1508  return threadContext->NewMethod(n, s, l);
1509  }
1511  {
1512  return threadContext->NewRoutine(n, s, l);
1513  }
1515  {
1516  return threadContext->IsRoutine(o);
1517  }
1519  {
1520  return threadContext->IsMethod(o);
1521  }
1523  {
1524  return threadContext->GetRoutinePackage(o);
1525  }
1527  {
1528  return threadContext->GetMethodPackage(o);
1529  }
1530 
1532  {
1533  return threadContext->GetPackageRoutines(m);
1534  }
1536  {
1537  return threadContext->GetPackagePublicRoutines(m);
1538  }
1540  {
1541  return threadContext->GetPackageClasses(m);
1542  }
1544  {
1545  return threadContext->GetPackagePublicClasses(m);
1546  }
1548  {
1549  return threadContext->GetPackageMethods(m);
1550  }
1552  {
1553  return threadContext->CallRoutine(m, a);
1554  }
1556  {
1557  return threadContext->CallProgram(n, a);
1558  }
1560  {
1561  return threadContext->LoadPackage(d);
1562  }
1564  {
1565  return threadContext->LoadPackageFromData(n, d, l);
1566  }
1567  logical_t LoadLibrary(CSTRING n)
1568  {
1569  return threadContext->LoadLibrary(n);
1570  }
1572  {
1573  return threadContext->RegisterLibrary(n, e);
1574  }
1575 
1577  {
1578  return threadContext->ObjectToCSelf(o);
1579  }
1580 
1582  {
1583  return threadContext->ObjectToCSelf(o, s);
1584  }
1586  {
1587  return threadContext->WholeNumberToObject(n);
1588  }
1589  RexxObjectPtr WholeNumber(wholenumber_t n)
1590  {
1591  return threadContext->WholeNumberToObject(n);
1592  }
1594  {
1595  return threadContext->UintptrToObject(n);
1596  }
1597  RexxObjectPtr Uintptr(uintptr_t n)
1598  {
1599  return threadContext->UintptrToObject(n);
1600  }
1602  {
1603  return threadContext->IntptrToObject(n);
1604  }
1605  RexxObjectPtr Intptr(intptr_t n)
1606  {
1607  return threadContext->IntptrToObject(n);
1608  }
1610  {
1611  return threadContext->ValueToObject(v);
1612  }
1614  {
1615  return threadContext->ValuesToObject(v, c);
1616  }
1618  {
1619  return threadContext->ObjectToValue(o, v);
1620  }
1622  {
1623  return threadContext->StringSizeToObject(u);
1624  }
1625  RexxObjectPtr StringSize(size_t u)
1626  {
1627  return threadContext->StringSizeToObject(u);
1628  }
1630  {
1631  return threadContext->ObjectToWholeNumber(o, n);
1632  }
1633  logical_t WholeNumber(RexxObjectPtr o, wholenumber_t *n)
1634  {
1635  return threadContext->ObjectToWholeNumber(o, n);
1636  }
1638  {
1639  return threadContext->ObjectToStringSize(o, n);
1640  }
1641  logical_t StringSize(RexxObjectPtr o, size_t *n)
1642  {
1643  return threadContext->ObjectToStringSize(o, n);
1644  }
1646  {
1647  return threadContext->Int64ToObject(i);
1648  }
1649  RexxObjectPtr Int64(int64_t i)
1650  {
1651  return threadContext->Int64ToObject(i);
1652  }
1654  {
1655  return threadContext->UnsignedInt64ToObject(u);
1656  }
1657  RexxObjectPtr UnsignedInt64(uint64_t u)
1658  {
1659  return threadContext->UnsignedInt64ToObject(u);
1660  }
1662  {
1663  return threadContext->ObjectToInt64(o, i);
1664  }
1665  logical_t Int64(RexxObjectPtr o, int64_t *i)
1666  {
1667  return threadContext->ObjectToInt64(o, i);
1668  }
1670  {
1671  return threadContext->ObjectToUnsignedInt64(o, u);
1672  }
1673  logical_t UnsignedInt64(RexxObjectPtr o, uint64_t *u)
1674  {
1675  return threadContext->ObjectToUnsignedInt64(o, u);
1676  }
1678  {
1679  return threadContext->Int32ToObject(i);
1680  }
1681  RexxObjectPtr Int32(int32_t i)
1682  {
1683  return threadContext->Int32ToObject(i);
1684  }
1686  {
1687  return threadContext->UnsignedInt32ToObject(u);
1688  }
1689  RexxObjectPtr UnsignedInt32(uint32_t u)
1690  {
1691  return threadContext->UnsignedInt32ToObject(u);
1692  }
1694  {
1695  return threadContext->ObjectToInt32(o, i);
1696  }
1697  logical_t Int32(RexxObjectPtr o, int32_t *i)
1698  {
1699  return threadContext->ObjectToInt32(o, i);
1700  }
1702  {
1703  return threadContext->ObjectToUnsignedInt32(o, u);
1704  }
1705  logical_t UnsignedInt32(RexxObjectPtr o, uint32_t *u)
1706  {
1707  return threadContext->ObjectToUnsignedInt32(o, u);
1708  }
1710  {
1711  return threadContext->ObjectToUintptr(o, n);
1712  }
1713  logical_t Uintptr(RexxObjectPtr o, uintptr_t *n)
1714  {
1715  return threadContext->ObjectToUintptr(o, n);
1716  }
1718  {
1719  return threadContext->ObjectToIntptr(o, n);
1720  }
1721  logical_t Intptr(RexxObjectPtr o, intptr_t *n)
1722  {
1723  return threadContext->ObjectToIntptr(o, n);
1724  }
1726  {
1727  return threadContext->ObjectToLogical(o, n);
1728  }
1729  logical_t Logical(RexxObjectPtr o, logical_t *n)
1730  {
1731  return threadContext->ObjectToLogical(o, n);
1732  }
1734  {
1735  return threadContext->LogicalToObject(l);
1736  }
1737  RexxObjectPtr Logical(logical_t l)
1738  {
1739  return threadContext->LogicalToObject(l);
1740  }
1741  RexxObjectPtr DoubleToObject(double d)
1742  {
1743  return threadContext->DoubleToObject(d);
1744  }
1745  RexxObjectPtr Double(double d)
1746  {
1747  return threadContext->DoubleToObject(d);
1748  }
1749  RexxObjectPtr DoubleToObjectWithPrecision(double d, size_t precision)
1750  {
1751  return threadContext->DoubleToObjectWithPrecision(d, precision);
1752  }
1753  logical_t ObjectToDouble(RexxObjectPtr o, double *d)
1754  {
1755  return threadContext->ObjectToDouble(o, d);
1756  }
1757  logical_t Double(RexxObjectPtr o, double *d)
1758  {
1759  return threadContext->ObjectToDouble(o, d);
1760  }
1761 
1763  {
1764  return threadContext->ObjectToString(o);
1765  }
1767  {
1768  return threadContext->ObjectToStringValue(o);
1769  }
1770  CSTRING CString(RexxObjectPtr o)
1771  {
1772  return threadContext->ObjectToStringValue(o);
1773  }
1774  size_t StringGet(RexxStringObject o, size_t n1, POINTER s, size_t n2)
1775  {
1776  return threadContext->StringGet(o, n1, s, n2);
1777  }
1778  size_t StringLength(RexxStringObject o)
1779  {
1780  return threadContext->StringLength(o);
1781  }
1783  {
1784  return threadContext->StringData(o);
1785  }
1786  RexxStringObject NewString(CSTRING s, size_t len)
1787  {
1788  return threadContext->NewString(s, len);
1789  }
1791  {
1792  return threadContext->NewStringFromAsciiz(s);
1793  }
1794  RexxStringObject String(CSTRING s, size_t len)
1795  {
1796  return threadContext->NewString(s, len);
1797  }
1798  RexxStringObject String(CSTRING s)
1799  {
1800  return threadContext->NewStringFromAsciiz(s);
1801  }
1802  RexxStringObject CString(CSTRING s)
1803  {
1804  return threadContext->NewStringFromAsciiz(s);
1805  }
1807  {
1808  return threadContext->StringUpper(s);
1809  }
1811  {
1812  return threadContext->StringLower(s);
1813  }
1815  {
1816  return threadContext->IsString(o);
1817  }
1818 
1820  {
1821  return threadContext->NewBufferString(len);
1822  }
1823 
1825  {
1826  return threadContext->BufferStringLength(o);
1827  }
1828 
1830  {
1831  return threadContext->BufferStringData(o);
1832  }
1833 
1835  {
1836  return threadContext->FinishBufferString(o, l);
1837  }
1838 
1840  {
1841  threadContext->DirectoryPut(diro, o, s);
1842  }
1844  {
1845  return threadContext->DirectoryAt(to, s);
1846  }
1848  {
1849  return threadContext->DirectoryRemove(to, s);
1850  }
1852  {
1853  return threadContext->NewDirectory();
1854  }
1856  {
1857  return threadContext->IsDirectory(o);
1858  }
1859 
1860  RexxObjectPtr ArrayAt(RexxArrayObject ao, size_t n)
1861  {
1862  return threadContext->ArrayAt(ao, n);
1863  }
1864  void ArrayPut(RexxArrayObject ao, RexxObjectPtr o, size_t n)
1865  {
1866  threadContext->ArrayPut(ao, o, n);
1867  }
1869  {
1870  return threadContext->ArrayAppend(ao, o);
1871  }
1872  size_t ArrayAppendString(RexxArrayObject ao, CSTRING s, size_t l)
1873  {
1874  return threadContext->ArrayAppendString(ao, s, l);
1875  }
1876  size_t ArraySize(RexxArrayObject ao)
1877  {
1878  return threadContext->ArraySize(ao);
1879  }
1880  size_t ArrayItems(RexxArrayObject ao)
1881  {
1882  return threadContext->ArrayItems(ao);
1883  }
1884  size_t ArrayDimension(RexxArrayObject ao)
1885  {
1886  return threadContext->ArrayDimension(ao);
1887  }
1888  RexxArrayObject NewArray(size_t n)
1889  {
1890  return threadContext->NewArray(n);
1891  }
1893  {
1894  return threadContext->ArrayOfOne(o);
1895  }
1897  {
1898  return threadContext->ArrayOfTwo(o1, o2);
1899  }
1901  {
1902  return threadContext->ArrayOfThree(o1, o2, o3);
1903  }
1905  {
1906  return threadContext->ArrayOfFour(o1, o2, o3, o4);
1907  }
1909  {
1910  return threadContext->ArrayOfFive(o1, o2, o3, o4, o5);
1911  }
1913  {
1914  return threadContext->ArrayOfOne(o);
1915  }
1917  {
1918  return threadContext->ArrayOfTwo(o1, o2);
1919  }
1921  {
1922  return threadContext->ArrayOfThree(o1, o2, o3);
1923  }
1925  {
1926  return threadContext->ArrayOfFour(o1, o2, o3, o4);
1927  }
1929  {
1930  return threadContext->ArrayOfFive(o1, o2, o3, o4, o5);
1931  }
1933  {
1934  return threadContext->IsArray(o);
1935  }
1936 
1938  {
1939  return threadContext->BufferData(bo);
1940  }
1941  size_t BufferLength(RexxBufferObject bo)
1942  {
1943  return threadContext->BufferLength(bo);
1944  }
1946  {
1947  return threadContext->NewBuffer(n);
1948  }
1950  {
1951  return threadContext->IsBuffer(o);
1952  }
1953 
1955  {
1956  return threadContext->MutableBufferData(bo);
1957  }
1958 
1960  {
1961  return threadContext->MutableBufferLength(bo);
1962  }
1963 
1964  size_t SetMutableBufferLength(RexxMutableBufferObject bo, size_t l)
1965  {
1966  return threadContext->SetMutableBufferLength(bo, l);
1967  }
1968 
1970  {
1971  return threadContext->NewMutableBuffer(n);
1972  }
1973 
1975  {
1976  return threadContext->IsMutableBuffer(o);
1977  }
1978 
1979 
1981  {
1982  return threadContext->MutableBufferCapacity(bo);
1983  }
1984 
1986  {
1987  return threadContext->SetMutableBufferCapacity(bo, l);
1988  }
1989 
1991  {
1992  return threadContext->PointerValue(po);
1993  }
1995  {
1996  return threadContext->NewPointer(p);
1997  }
1999  {
2000  return threadContext->IsPointer(o);
2001  }
2002 
2004  {
2005  return threadContext->SupplierItem(so);
2006  }
2008  {
2009  return threadContext->SupplierIndex(so);
2010  }
2012  {
2013  return threadContext->SupplierAvailable(so);
2014  }
2016  {
2017  threadContext->SupplierNext(so);
2018  }
2020  {
2021  return threadContext->NewSupplier(values, names);
2022  }
2023 
2025  {
2026  return threadContext->NewStem(n);
2027  }
2029  {
2030  threadContext->SetStemElement(so, s, o);
2031  }
2033  {
2034  return threadContext->GetStemElement(so, s);
2035  }
2037  {
2038  threadContext->DropStemElement(so, s);
2039  }
2040  void SetStemArrayElement(RexxStemObject so, size_t n, RexxObjectPtr o)
2041  {
2042  threadContext->SetStemArrayElement(so, n, o);
2043  }
2045  {
2046  return threadContext->GetStemArrayElement(so, n);
2047  }
2048  void DropStemArrayElement(RexxStemObject so, size_t n)
2049  {
2050  threadContext->DropStemArrayElement(so, n);
2051  }
2053  {
2054  return threadContext->GetAllStemElements(so);
2055  }
2057  {
2058  return threadContext->GetStemValue(so);
2059  }
2061  {
2062  return threadContext->IsStem(o);
2063  }
2064 
2065  void RaiseException0(size_t n)
2066  {
2067  threadContext->RaiseException0(n);
2068  }
2069  void RaiseException1(size_t n, RexxObjectPtr o)
2070  {
2071  threadContext->RaiseException1(n, o);
2072  }
2073  void RaiseException2(size_t n, RexxObjectPtr o1, RexxObjectPtr o2)
2074  {
2075  threadContext->RaiseException2(n, o1, o2);
2076  }
2077  void RaiseException3(size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
2078  {
2079  threadContext->RaiseException3(n, o1, o2, o3);
2080  }
2082  {
2083  threadContext->RaiseException4(n, o1, o2, o3, o4);
2084  }
2086  {
2087  threadContext->RaiseException5(n, o1, o2, o3, o4, o5);
2088  }
2089  void RaiseException(size_t n, RexxArrayObject ao)
2090  {
2091  threadContext->RaiseException(n, ao);
2092  }
2094  {
2095  threadContext->RaiseCondition(s1, s2, ao, o);
2096  }
2098  {
2099  return threadContext->CheckCondition();
2100  }
2102  {
2103  return threadContext->DisplayCondition();
2104  }
2106  {
2107  return threadContext->GetConditionInfo();
2108  }
2110  {
2111  threadContext->DecodeConditionInfo(diro, c);
2112  }
2113  void ClearCondition()
2114  {
2115  threadContext->ClearCondition();
2116  }
2117 
2118  RexxObjectPtr Nil()
2119  {
2120  return threadContext->Nil();
2121  }
2122  RexxObjectPtr True()
2123  {
2124  return threadContext->True();
2125  }
2126  RexxObjectPtr False()
2127  {
2128  return threadContext->False();
2129  }
2130  RexxStringObject NullString()
2131  {
2132  return threadContext->NullString();
2133  }
2134 
2135  RexxArrayObject GetArguments()
2136  {
2137  return functions->GetArguments(this);
2138  }
2139  RexxObjectPtr GetArgument(size_t n)
2140  {
2141  return functions->GetArgument(this, n);
2142  }
2144  {
2145  return functions->GetMessageName(this);
2146  }
2147  RexxMethodObject GetMethod()
2148  {
2149  return functions->GetMethod(this);
2150  }
2152  {
2153  return functions->GetSelf(this);
2154  }
2156  {
2157  return functions->GetSuper(this);
2158  }
2160  {
2161  return functions->GetScope(this);
2162  }
2163  POINTER GetCSelf()
2164  {
2165  return functions->GetCSelf(this);
2166  }
2168  {
2169  functions->SetObjectVariable(this, s, o);
2170  }
2172  {
2173  return functions->GetObjectVariable(this, s);
2174  }
2175  void DropObjectVariable(CSTRING s)
2176  {
2177  functions->DropObjectVariable(this, s);
2178  }
2180  {
2181  return functions->ForwardMessage(this, o, s, c, a, d);
2182  }
2183  void SetGuardOn()
2184  {
2185  functions->SetGuardOn(this);
2186  }
2187  void SetGuardOff()
2188  {
2189  functions->SetGuardOff(this);
2190  }
2192  {
2193  return functions->FindContextClass(this, n);
2194  }
2195 #endif
2196 };
2197 
2199 {
2200  RexxThreadContext *threadContext; // the interpreter instance state
2201  CallContextInterface *functions; // functions available in a method context
2202  ValueDescriptor *arguments; // the argument descriptor
2203 
2204 #ifdef __cplusplus
2205  POINTER GetApplicationData()
2206  {
2207  return threadContext->GetApplicationData();
2208  }
2209  size_t InterpreterVersion()
2210  {
2211  return threadContext->InterpreterVersion();
2212  }
2213  size_t LanguageLevel()
2214  {
2215  return threadContext->LanguageLevel();
2216  }
2218  {
2219  return threadContext->RequestGlobalReference(o);
2220  }
2222  {
2223  threadContext->ReleaseGlobalReference(o);
2224  }
2226  {
2227  threadContext->ReleaseLocalReference(o);
2228  }
2229  RexxObjectPtr SendMessage(RexxObjectPtr o, CSTRING s, RexxArrayObject ao)
2230  {
2231  return threadContext->SendMessage(o, s, ao);
2232  }
2234  {
2235  return threadContext->SendMessage0(o, s);
2236  }
2238  {
2239  return threadContext->SendMessage1(o, s, a1);
2240  }
2242  {
2243  return threadContext->SendMessage2(o, s, a1, a2);
2244  }
2245 
2247  {
2248  return threadContext->GetLocalEnvironment();
2249  }
2251  {
2252  return threadContext->GetGlobalEnvironment();
2253  }
2254 
2256  {
2257  return threadContext->IsInstanceOf(o, co);
2258  }
2260  {
2261  return threadContext->IsOfType(o, cn);
2262  }
2264  {
2265  return threadContext->FindClass(s);
2266  }
2267  RexxClassObject FindPackageClass(RexxPackageObject m, CSTRING n)
2268  {
2269  return threadContext->FindPackageClass(m, n);
2270  }
2272  {
2273  return threadContext->HasMethod(o, m);
2274  }
2275 
2276  RexxMethodObject NewMethod(CSTRING n, CSTRING s, size_t l)
2277  {
2278  return threadContext->NewMethod(n, s, l);
2279  }
2280 
2282  {
2283  return threadContext->NewRoutine(n, s, l);
2284  }
2286  {
2287  return threadContext->IsRoutine(o);
2288  }
2290  {
2291  return threadContext->IsMethod(o);
2292  }
2294  {
2295  return threadContext->GetRoutinePackage(o);
2296  }
2298  {
2299  return threadContext->GetMethodPackage(o);
2300  }
2301 
2303  {
2304  return threadContext->GetPackageRoutines(m);
2305  }
2307  {
2308  return threadContext->GetPackagePublicRoutines(m);
2309  }
2311  {
2312  return threadContext->GetPackageClasses(m);
2313  }
2315  {
2316  return threadContext->GetPackagePublicClasses(m);
2317  }
2319  {
2320  return threadContext->GetPackageMethods(m);
2321  }
2323  {
2324  return threadContext->CallRoutine(m, a);
2325  }
2327  {
2328  return threadContext->CallProgram(n, a);
2329  }
2331  {
2332  return threadContext->LoadPackage(d);
2333  }
2335  {
2336  return threadContext->LoadPackageFromData(n, d, l);
2337  }
2338  logical_t LoadLibrary(CSTRING n)
2339  {
2340  return threadContext->LoadLibrary(n);
2341  }
2343  {
2344  return threadContext->RegisterLibrary(n, e);
2345  }
2347  {
2348  return threadContext->ObjectToCSelf(o);
2349  }
2350 
2352  {
2353  return threadContext->ObjectToCSelf(o, s);
2354  }
2356  {
2357  return threadContext->WholeNumberToObject(n);
2358  }
2359  RexxObjectPtr WholeNumber(wholenumber_t n)
2360  {
2361  return threadContext->WholeNumberToObject(n);
2362  }
2364  {
2365  return threadContext->UintptrToObject(n);
2366  }
2367  RexxObjectPtr Uintptr(uintptr_t n)
2368  {
2369  return threadContext->UintptrToObject(n);
2370  }
2372  {
2373  return threadContext->IntptrToObject(n);
2374  }
2375  RexxObjectPtr Intptr(intptr_t n)
2376  {
2377  return threadContext->IntptrToObject(n);
2378  }
2380  {
2381  return threadContext->ValueToObject(v);
2382  }
2384  {
2385  return threadContext->ValuesToObject(v, c);
2386  }
2388  {
2389  return threadContext->ObjectToValue(o, v);
2390  }
2392  {
2393  return threadContext->StringSizeToObject(u);
2394  }
2395  RexxObjectPtr StringSize(size_t u)
2396  {
2397  return threadContext->StringSizeToObject(u);
2398  }
2400  {
2401  return threadContext->ObjectToWholeNumber(o, n);
2402  }
2403  logical_t WholeNumber(RexxObjectPtr o, wholenumber_t *n)
2404  {
2405  return threadContext->ObjectToWholeNumber(o, n);
2406  }
2408  {
2409  return threadContext->ObjectToStringSize(o, n);
2410  }
2411  logical_t StringSize(RexxObjectPtr o, size_t *n)
2412  {
2413  return threadContext->ObjectToStringSize(o, n);
2414  }
2416  {
2417  return threadContext->Int64ToObject(i);
2418  }
2419  RexxObjectPtr Int64(int64_t i)
2420  {
2421  return threadContext->Int64ToObject(i);
2422  }
2424  {
2425  return threadContext->UnsignedInt64ToObject(u);
2426  }
2427  RexxObjectPtr UnsignedInt64(uint64_t u)
2428  {
2429  return threadContext->UnsignedInt64ToObject(u);
2430  }
2432  {
2433  return threadContext->ObjectToInt64(o, i);
2434  }
2435  logical_t Int64(RexxObjectPtr o, int64_t *i)
2436  {
2437  return threadContext->ObjectToInt64(o, i);
2438  }
2440  {
2441  return threadContext->ObjectToUnsignedInt64(o, u);
2442  }
2443  logical_t UnsignedInt64(RexxObjectPtr o, uint64_t *u)
2444  {
2445  return threadContext->ObjectToUnsignedInt64(o, u);
2446  }
2448  {
2449  return threadContext->Int32ToObject(i);
2450  }
2451  RexxObjectPtr Int32(int32_t i)
2452  {
2453  return threadContext->Int32ToObject(i);
2454  }
2456  {
2457  return threadContext->UnsignedInt32ToObject(u);
2458  }
2459  RexxObjectPtr UnsignedInt32(uint32_t u)
2460  {
2461  return threadContext->UnsignedInt32ToObject(u);
2462  }
2464  {
2465  return threadContext->ObjectToInt32(o, i);
2466  }
2467  logical_t Int32(RexxObjectPtr o, int32_t *i)
2468  {
2469  return threadContext->ObjectToInt32(o, i);
2470  }
2472  {
2473  return threadContext->ObjectToUnsignedInt32(o, u);
2474  }
2475  logical_t UnsignedInt32(RexxObjectPtr o, uint32_t *u)
2476  {
2477  return threadContext->ObjectToUnsignedInt32(o, u);
2478  }
2480  {
2481  return threadContext->ObjectToUintptr(o, n);
2482  }
2483  logical_t Uintptr(RexxObjectPtr o, uintptr_t *n)
2484  {
2485  return threadContext->ObjectToUintptr(o, n);
2486  }
2488  {
2489  return threadContext->ObjectToIntptr(o, n);
2490  }
2491  logical_t Intptr(RexxObjectPtr o, intptr_t *n)
2492  {
2493  return threadContext->ObjectToIntptr(o, n);
2494  }
2496  {
2497  return threadContext->ObjectToLogical(o, n);
2498  }
2499  logical_t Logical(RexxObjectPtr o, logical_t *n)
2500  {
2501  return threadContext->ObjectToLogical(o, n);
2502  }
2504  {
2505  return threadContext->LogicalToObject(l);
2506  }
2507  RexxObjectPtr Logical(logical_t l)
2508  {
2509  return threadContext->LogicalToObject(l);
2510  }
2511  RexxObjectPtr DoubleToObject(double d)
2512  {
2513  return threadContext->DoubleToObject(d);
2514  }
2515  RexxObjectPtr Double(double d)
2516  {
2517  return threadContext->DoubleToObject(d);
2518  }
2519  RexxObjectPtr DoubleToObjectWithPrecision(double d, size_t precision)
2520  {
2521  return threadContext->DoubleToObjectWithPrecision(d, precision);
2522  }
2523  logical_t ObjectToDouble(RexxObjectPtr o, double *d)
2524  {
2525  return threadContext->ObjectToDouble(o, d);
2526  }
2527  logical_t Double(RexxObjectPtr o, double *d)
2528  {
2529  return threadContext->ObjectToDouble(o, d);
2530  }
2531 
2533  {
2534  return threadContext->ObjectToString(o);
2535  }
2537  {
2538  return threadContext->ObjectToStringValue(o);
2539  }
2540  CSTRING CString(RexxObjectPtr o)
2541  {
2542  return threadContext->ObjectToStringValue(o);
2543  }
2544  size_t StringGet(RexxStringObject o, size_t n1, POINTER s, size_t n2)
2545  {
2546  return threadContext->StringGet(o, n1, s, n2);
2547  }
2548  size_t StringLength(RexxStringObject o)
2549  {
2550  return threadContext->StringLength(o);
2551  }
2553  {
2554  return threadContext->StringData(o);
2555  }
2556  RexxStringObject NewString(CSTRING s, size_t len)
2557  {
2558  return threadContext->NewString(s, len);
2559  }
2561  {
2562  return threadContext->NewStringFromAsciiz(s);
2563  }
2564  RexxStringObject String(CSTRING s, size_t len)
2565  {
2566  return threadContext->NewString(s, len);
2567  }
2568  RexxStringObject String(CSTRING s)
2569  {
2570  return threadContext->NewStringFromAsciiz(s);
2571  }
2572  RexxStringObject CString(CSTRING s)
2573  {
2574  return threadContext->NewStringFromAsciiz(s);
2575  }
2577  {
2578  return threadContext->StringUpper(s);
2579  }
2581  {
2582  return threadContext->StringLower(s);
2583  }
2585  {
2586  return threadContext->IsString(o);
2587  }
2588 
2590  {
2591  return threadContext->NewBufferString(len);
2592  }
2593 
2595  {
2596  return threadContext->BufferStringLength(o);
2597  }
2598 
2600  {
2601  return threadContext->BufferStringData(o);
2602  }
2603 
2605  {
2606  return threadContext->FinishBufferString(o, l);
2607  }
2608 
2610  {
2611  threadContext->DirectoryPut(diro, o, s);
2612  }
2614  {
2615  return threadContext->DirectoryAt(to, s);
2616  }
2618  {
2619  return threadContext->DirectoryRemove(to, s);
2620  }
2622  {
2623  return threadContext->NewDirectory();
2624  }
2626  {
2627  return threadContext->IsDirectory(o);
2628  }
2629 
2630  RexxObjectPtr ArrayAt(RexxArrayObject ao, size_t n)
2631  {
2632  return threadContext->ArrayAt(ao, n);
2633  }
2634  void ArrayPut(RexxArrayObject ao, RexxObjectPtr o, size_t n)
2635  {
2636  threadContext->ArrayPut(ao, o, n);
2637  }
2639  {
2640  return threadContext->ArrayAppend(ao, o);
2641  }
2642  size_t ArrayAppendString(RexxArrayObject ao, CSTRING s, size_t l)
2643  {
2644  return threadContext->ArrayAppendString(ao, s, l);
2645  }
2646  size_t ArraySize(RexxArrayObject ao)
2647  {
2648  return threadContext->ArraySize(ao);
2649  }
2650  size_t ArrayItems(RexxArrayObject ao)
2651  {
2652  return threadContext->ArrayItems(ao);
2653  }
2654  size_t ArrayDimension(RexxArrayObject ao)
2655  {
2656  return threadContext->ArrayDimension(ao);
2657  }
2658  RexxArrayObject NewArray(size_t n)
2659  {
2660  return threadContext->NewArray(n);
2661  }
2663  {
2664  return threadContext->ArrayOfOne(o);
2665  }
2667  {
2668  return threadContext->ArrayOfTwo(o1, o2);
2669  }
2671  {
2672  return threadContext->ArrayOfThree(o1, o2, o3);
2673  }
2675  {
2676  return threadContext->ArrayOfFour(o1, o2, o3, o4);
2677  }
2679  {
2680  return threadContext->ArrayOfFive(o1, o2, o3, o4, o5);
2681  }
2683  {
2684  return threadContext->ArrayOfOne(o);
2685  }
2687  {
2688  return threadContext->ArrayOfTwo(o1, o2);
2689  }
2691  {
2692  return threadContext->ArrayOfThree(o1, o2, o3);
2693  }
2695  {
2696  return threadContext->ArrayOfFour(o1, o2, o3, o4);
2697  }
2699  {
2700  return threadContext->ArrayOfFive(o1, o2, o3, o4, o5);
2701  }
2703  {
2704  return threadContext->IsArray(o);
2705  }
2706 
2708  {
2709  return threadContext->BufferData(bo);
2710  }
2711  size_t BufferLength(RexxBufferObject bo)
2712  {
2713  return threadContext->BufferLength(bo);
2714  }
2716  {
2717  return threadContext->NewBuffer(n);
2718  }
2720  {
2721  return threadContext->IsBuffer(o);
2722  }
2723 
2725  {
2726  return threadContext->MutableBufferData(bo);
2727  }
2728 
2730  {
2731  return threadContext->MutableBufferLength(bo);
2732  }
2733 
2734  size_t SetMutableBufferLength(RexxMutableBufferObject bo, size_t l)
2735  {
2736  return threadContext->SetMutableBufferLength(bo, l);
2737  }
2738 
2740  {
2741  return threadContext->NewMutableBuffer(n);
2742  }
2743 
2745  {
2746  return threadContext->IsMutableBuffer(o);
2747  }
2748 
2749 
2751  {
2752  return threadContext->MutableBufferCapacity(bo);
2753  }
2754 
2756  {
2757  return threadContext->SetMutableBufferCapacity(bo, l);
2758  }
2759 
2761  {
2762  return threadContext->PointerValue(po);
2763  }
2765  {
2766  return threadContext->NewPointer(p);
2767  }
2769  {
2770  return threadContext->IsPointer(o);
2771  }
2772 
2774  {
2775  return threadContext->SupplierItem(so);
2776  }
2778  {
2779  return threadContext->SupplierIndex(so);
2780  }
2782  {
2783  return threadContext->SupplierAvailable(so);
2784  }
2786  {
2787  threadContext->SupplierNext(so);
2788  }
2790  {
2791  return threadContext->NewSupplier(values, names);
2792  }
2793 
2795  {
2796  return threadContext->NewStem(n);
2797  }
2799  {
2800  threadContext->SetStemElement(so, s, o);
2801  }
2803  {
2804  return threadContext->GetStemElement(so, s);
2805  }
2807  {
2808  threadContext->DropStemElement(so, s);
2809  }
2810  void SetStemArrayElement(RexxStemObject so, size_t n, RexxObjectPtr o)
2811  {
2812  threadContext->SetStemArrayElement(so, n, o);
2813  }
2815  {
2816  return threadContext->GetStemArrayElement(so, n);
2817  }
2818  void DropStemArrayElement(RexxStemObject so, size_t n)
2819  {
2820  threadContext->DropStemArrayElement(so, n);
2821  }
2823  {
2824  return threadContext->GetAllStemElements(so);
2825  }
2827  {
2828  return threadContext->GetStemValue(so);
2829  }
2831  {
2832  return threadContext->IsStem(o);
2833  }
2834 
2835  void RaiseException0(size_t n)
2836  {
2837  threadContext->RaiseException0(n);
2838  }
2839  void RaiseException1(size_t n, RexxObjectPtr o)
2840  {
2841  threadContext->RaiseException1(n, o);
2842  }
2843  void RaiseException2(size_t n, RexxObjectPtr o1, RexxObjectPtr o2)
2844  {
2845  threadContext->RaiseException2(n, o1, o2);
2846  }
2847  void RaiseException3(size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
2848  {
2849  threadContext->RaiseException3(n, o1, o2, o3);
2850  }
2852  {
2853  threadContext->RaiseException4(n, o1, o2, o3, o4);
2854  }
2856  {
2857  threadContext->RaiseException5(n, o1, o2, o3, o4, o5);
2858  }
2859  void RaiseException(size_t n, RexxArrayObject ao)
2860  {
2861  threadContext->RaiseException(n, ao);
2862  }
2864  {
2865  threadContext->RaiseCondition(s1, s2, ao, o);
2866  }
2868  {
2869  return threadContext->CheckCondition();
2870  }
2872  {
2873  return threadContext->DisplayCondition();
2874  }
2876  {
2877  return threadContext->GetConditionInfo();
2878  }
2880  {
2881  threadContext->DecodeConditionInfo(diro, c);
2882  }
2883  void ClearCondition()
2884  {
2885  threadContext->ClearCondition();
2886  }
2887 
2888  RexxObjectPtr Nil()
2889  {
2890  return threadContext->Nil();
2891  }
2892  RexxObjectPtr True()
2893  {
2894  return threadContext->True();
2895  }
2896  RexxObjectPtr False()
2897  {
2898  return threadContext->False();
2899  }
2900  RexxStringObject NullString()
2901  {
2902  return threadContext->NullString();
2903  }
2904 
2905  RexxArrayObject GetArguments()
2906  {
2907  return functions->GetArguments(this);
2908  }
2909  RexxObjectPtr GetArgument(size_t n)
2910  {
2911  return functions->GetArgument(this, n);
2912  }
2914  {
2915  return functions->GetRoutineName(this);
2916  }
2917  RexxRoutineObject GetRoutine()
2918  {
2919  return functions->GetRoutine(this);
2920  }
2922  {
2923  functions->SetContextVariable(this, s, o);
2924  }
2926  {
2927  return functions->GetContextVariable(this, s);
2928  }
2930  {
2931  functions->DropContextVariable(this, s);
2932  }
2934  {
2935  return functions->ResolveStemVariable(this, v);
2936  }
2937 
2939  {
2940  return functions->GetAllContextVariables(this);
2941  }
2942  void InvalidRoutine()
2943  {
2944  functions->InvalidRoutine(this);
2945  }
2947  {
2948  return functions->GetContextDigits(this);
2949  }
2951  {
2952  return functions->GetContextFuzz(this);
2953  }
2955  {
2956  return functions->GetContextForm(this);
2957  }
2959  {
2960  return functions->GetCallerContext(this);
2961  }
2963  {
2964  return functions->FindContextClass(this, n);
2965  }
2966 
2967 #endif
2968 };
2969 
2971 {
2972  RexxThreadContext *threadContext; // the interpreter instance state
2973  ExitContextInterface *functions; // functions available in a method context
2974  ValueDescriptor *arguments; // the argument descriptor
2975 
2976 #ifdef __cplusplus
2977  POINTER GetApplicationData()
2978  {
2979  return threadContext->GetApplicationData();
2980  }
2981  size_t InterpreterVersion()
2982  {
2983  return threadContext->InterpreterVersion();
2984  }
2985  size_t LanguageLevel()
2986  {
2987  return threadContext->LanguageLevel();
2988  }
2990  {
2991  return threadContext->RequestGlobalReference(o);
2992  }
2994  {
2995  threadContext->ReleaseGlobalReference(o);
2996  }
2998  {
2999  threadContext->ReleaseLocalReference(o);
3000  }
3001 
3002  RexxObjectPtr SendMessage(RexxObjectPtr o, CSTRING s, RexxArrayObject ao)
3003  {
3004  return threadContext->SendMessage(o, s, ao);
3005  }
3007  {
3008  return threadContext->SendMessage0(o, s);
3009  }
3011  {
3012  return threadContext->SendMessage1(o, s, a1);
3013  }
3015  {
3016  return threadContext->SendMessage2(o, s, a1, a2);
3017  }
3018 
3020  {
3021  return threadContext->GetLocalEnvironment();
3022  }
3024  {
3025  return threadContext->GetGlobalEnvironment();
3026  }
3027 
3029  {
3030  return threadContext->IsInstanceOf(o, co);
3031  }
3033  {
3034  return threadContext->IsOfType(o, cn);
3035  }
3037  {
3038  return threadContext->FindClass(s);
3039  }
3040  RexxClassObject FindPackageClass(RexxPackageObject m, CSTRING n)
3041  {
3042  return threadContext->FindPackageClass(m, n);
3043  }
3045  {
3046  return threadContext->HasMethod(o, m);
3047  }
3048 
3049  RexxMethodObject NewMethod(CSTRING n, CSTRING s, size_t l)
3050  {
3051  return threadContext->NewMethod(n, s, l);
3052  }
3054  {
3055  return threadContext->NewRoutine(n, s, l);
3056  }
3058  {
3059  return threadContext->IsRoutine(o);
3060  }
3062  {
3063  return threadContext->IsMethod(o);
3064  }
3066  {
3067  return threadContext->GetRoutinePackage(o);
3068  }
3070  {
3071  return threadContext->GetMethodPackage(o);
3072  }
3073 
3075  {
3076  return threadContext->GetPackageRoutines(m);
3077  }
3079  {
3080  return threadContext->GetPackagePublicRoutines(m);
3081  }
3083  {
3084  return threadContext->GetPackageClasses(m);
3085  }
3087  {
3088  return threadContext->GetPackagePublicClasses(m);
3089  }
3091  {
3092  return threadContext->GetPackageMethods(m);
3093  }
3095  {
3096  return threadContext->CallRoutine(m, a);
3097  }
3099  {
3100  return threadContext->CallProgram(n, a);
3101  }
3103  {
3104  return threadContext->LoadPackage(d);
3105  }
3107  {
3108  return threadContext->LoadPackageFromData(n, d, l);
3109  }
3110  logical_t LoadLibrary(CSTRING n)
3111  {
3112  return threadContext->LoadLibrary(n);
3113  }
3115  {
3116  return threadContext->RegisterLibrary(n, e);
3117  }
3119  {
3120  return threadContext->ObjectToCSelf(o);
3121  }
3122 
3124  {
3125  return threadContext->ObjectToCSelf(o, s);
3126  }
3128  {
3129  return threadContext->WholeNumberToObject(n);
3130  }
3131  RexxObjectPtr WholeNumber(wholenumber_t n)
3132  {
3133  return threadContext->WholeNumberToObject(n);
3134  }
3136  {
3137  return threadContext->UintptrToObject(n);
3138  }
3139  RexxObjectPtr Uintptr(uintptr_t n)
3140  {
3141  return threadContext->UintptrToObject(n);
3142  }
3144  {
3145  return threadContext->IntptrToObject(n);
3146  }
3147  RexxObjectPtr Intptr(intptr_t n)
3148  {
3149  return threadContext->IntptrToObject(n);
3150  }
3152  {
3153  return threadContext->ValueToObject(v);
3154  }
3156  {
3157  return threadContext->ValuesToObject(v, c);
3158  }
3160  {
3161  return threadContext->ObjectToValue(o, v);
3162  }
3164  {
3165  return threadContext->StringSizeToObject(u);
3166  }
3167  RexxObjectPtr StringSize(size_t u)
3168  {
3169  return threadContext->StringSizeToObject(u);
3170  }
3172  {
3173  return threadContext->ObjectToWholeNumber(o, n);
3174  }
3175  logical_t WholeNumber(RexxObjectPtr o, wholenumber_t *n)
3176  {
3177  return threadContext->ObjectToWholeNumber(o, n);
3178  }
3180  {
3181  return threadContext->ObjectToStringSize(o, n);
3182  }
3183  logical_t StringSize(RexxObjectPtr o, size_t *n)
3184  {
3185  return threadContext->ObjectToStringSize(o, n);
3186  }
3188  {
3189  return threadContext->Int64ToObject(i);
3190  }
3191  RexxObjectPtr Int64(int64_t i)
3192  {
3193  return threadContext->Int64ToObject(i);
3194  }
3196  {
3197  return threadContext->UnsignedInt64ToObject(u);
3198  }
3199  RexxObjectPtr UnsignedInt64(uint64_t u)
3200  {
3201  return threadContext->UnsignedInt64ToObject(u);
3202  }
3204  {
3205  return threadContext->ObjectToInt64(o, i);
3206  }
3207  logical_t Int64(RexxObjectPtr o, int64_t *i)
3208  {
3209  return threadContext->ObjectToInt64(o, i);
3210  }
3212  {
3213  return threadContext->ObjectToUnsignedInt64(o, u);
3214  }
3215  logical_t UnsignedInt64(RexxObjectPtr o, uint64_t *u)
3216  {
3217  return threadContext->ObjectToUnsignedInt64(o, u);
3218  }
3220  {
3221  return threadContext->Int32ToObject(i);
3222  }
3223  RexxObjectPtr Int32(int32_t i)
3224  {
3225  return threadContext->Int32ToObject(i);
3226  }
3228  {
3229  return threadContext->UnsignedInt32ToObject(u);
3230  }
3231  RexxObjectPtr UnsignedInt32(uint32_t u)
3232  {
3233  return threadContext->UnsignedInt32ToObject(u);
3234  }
3236  {
3237  return threadContext->ObjectToInt32(o, i);
3238  }
3239  logical_t Int32(RexxObjectPtr o, int32_t *i)
3240  {
3241  return threadContext->ObjectToInt32(o, i);
3242  }
3244  {
3245  return threadContext->ObjectToUnsignedInt32(o, u);
3246  }
3247  logical_t UnsignedInt32(RexxObjectPtr o, uint32_t *u)
3248  {
3249  return threadContext->ObjectToUnsignedInt32(o, u);
3250  }
3252  {
3253  return threadContext->ObjectToUintptr(o, n);
3254  }
3255  logical_t Uintptr(RexxObjectPtr o, uintptr_t *n)
3256  {
3257  return threadContext->ObjectToUintptr(o, n);
3258  }
3260  {
3261  return threadContext->ObjectToIntptr(o, n);
3262  }
3263  logical_t Intptr(RexxObjectPtr o, intptr_t *n)
3264  {
3265  return threadContext->ObjectToIntptr(o, n);
3266  }
3268  {
3269  return threadContext->ObjectToLogical(o, n);
3270  }
3271  logical_t Logical(RexxObjectPtr o, logical_t *n)
3272  {
3273  return threadContext->ObjectToLogical(o, n);
3274  }
3276  {
3277  return threadContext->LogicalToObject(l);
3278  }
3279  RexxObjectPtr Logical(logical_t l)
3280  {
3281  return threadContext->LogicalToObject(l);
3282  }
3283  RexxObjectPtr DoubleToObject(double d)
3284  {
3285  return threadContext->DoubleToObject(d);
3286  }
3287  RexxObjectPtr Double(double d)
3288  {
3289  return threadContext->DoubleToObject(d);
3290  }
3291  RexxObjectPtr DoubleToObjectWithPrecision(double d, size_t precision)
3292  {
3293  return threadContext->DoubleToObjectWithPrecision(d, precision);
3294  }
3295  logical_t ObjectToDouble(RexxObjectPtr o, double *d)
3296  {
3297  return threadContext->ObjectToDouble(o, d);
3298  }
3299  logical_t Double(RexxObjectPtr o, double *d)
3300  {
3301  return threadContext->ObjectToDouble(o, d);
3302  }
3303 
3305  {
3306  return threadContext->ObjectToString(o);
3307  }
3309  {
3310  return threadContext->ObjectToStringValue(o);
3311  }
3312  CSTRING CString(RexxObjectPtr o)
3313  {
3314  return threadContext->ObjectToStringValue(o);
3315  }
3316  size_t StringGet(RexxStringObject o, size_t n1, POINTER s, size_t n2)
3317  {
3318  return threadContext->StringGet(o, n1, s, n2);
3319  }
3320  size_t StringLength(RexxStringObject o)
3321  {
3322  return threadContext->StringLength(o);
3323  }
3325  {
3326  return threadContext->StringData(o);
3327  }
3328  RexxStringObject NewString(CSTRING s, size_t len)
3329  {
3330  return threadContext->NewString(s, len);
3331  }
3333  {
3334  return threadContext->NewStringFromAsciiz(s);
3335  }
3336  RexxStringObject String(CSTRING s, size_t len)
3337  {
3338  return threadContext->NewString(s, len);
3339  }
3340  RexxStringObject String(CSTRING s)
3341  {
3342  return threadContext->NewStringFromAsciiz(s);
3343  }
3344  RexxStringObject CString(CSTRING s)
3345  {
3346  return threadContext->NewStringFromAsciiz(s);
3347  }
3349  {
3350  return threadContext->StringUpper(s);
3351  }
3353  {
3354  return threadContext->StringLower(s);
3355  }
3357  {
3358  return threadContext->IsString(o);
3359  }
3360 
3362  {
3363  return threadContext->NewBufferString(len);
3364  }
3365 
3367  {
3368  return threadContext->BufferStringLength(o);
3369  }
3370 
3372  {
3373  return threadContext->BufferStringData(o);
3374  }
3375 
3377  {
3378  return threadContext->FinishBufferString(o, l);
3379  }
3380 
3382  {
3383  threadContext->DirectoryPut(diro, o, s);
3384  }
3386  {
3387  return threadContext->DirectoryAt(to, s);
3388  }
3390  {
3391  return threadContext->DirectoryRemove(to, s);
3392  }
3394  {
3395  return threadContext->NewDirectory();
3396  }
3398  {
3399  return threadContext->IsDirectory(o);
3400  }
3401 
3402  RexxObjectPtr ArrayAt(RexxArrayObject ao, size_t n)
3403  {
3404  return threadContext->ArrayAt(ao, n);
3405  }
3406  void ArrayPut(RexxArrayObject ao, RexxObjectPtr o, size_t n)
3407  {
3408  threadContext->ArrayPut(ao, o, n);
3409  }
3411  {
3412  return threadContext->ArrayAppend(ao, o);
3413  }
3414  size_t ArrayAppendString(RexxArrayObject ao, CSTRING s, size_t l)
3415  {
3416  return threadContext->ArrayAppendString(ao, s, l);
3417  }
3418  size_t ArraySize(RexxArrayObject ao)
3419  {
3420  return threadContext->ArraySize(ao);
3421  }
3422  size_t ArrayItems(RexxArrayObject ao)
3423  {
3424  return threadContext->ArrayItems(ao);
3425  }
3426  size_t ArrayDimension(RexxArrayObject ao)
3427  {
3428  return threadContext->ArrayDimension(ao);
3429  }
3430  RexxArrayObject NewArray(size_t n)
3431  {
3432  return threadContext->NewArray(n);
3433  }
3435  {
3436  return threadContext->ArrayOfOne(o);
3437  }
3439  {
3440  return threadContext->ArrayOfTwo(o1, o2);
3441  }
3443  {
3444  return threadContext->ArrayOfThree(o1, o2, o3);
3445  }
3447  {
3448  return threadContext->ArrayOfFour(o1, o2, o3, o4);
3449  }
3451  {
3452  return threadContext->ArrayOfFive(o1, o2, o3, o4, o5);
3453  }
3455  {
3456  return threadContext->ArrayOfOne(o);
3457  }
3459  {
3460  return threadContext->ArrayOfTwo(o1, o2);
3461  }
3463  {
3464  return threadContext->ArrayOfThree(o1, o2, o3);
3465  }
3467  {
3468  return threadContext->ArrayOfFour(o1, o2, o3, o4);
3469  }
3471  {
3472  return threadContext->ArrayOfFive(o1, o2, o3, o4, o5);
3473  }
3475  {
3476  return threadContext->IsArray(o);
3477  }
3478 
3480  {
3481  return threadContext->BufferData(bo);
3482  }
3483  size_t BufferLength(RexxBufferObject bo)
3484  {
3485  return threadContext->BufferLength(bo);
3486  }
3488  {
3489  return threadContext->NewBuffer(n);
3490  }
3492  {
3493  return threadContext->IsBuffer(o);
3494  }
3495 
3497  {
3498  return threadContext->MutableBufferData(bo);
3499  }
3500 
3502  {
3503  return threadContext->MutableBufferLength(bo);
3504  }
3505 
3506  size_t SetMutableBufferLength(RexxMutableBufferObject bo, size_t l)
3507  {
3508  return threadContext->SetMutableBufferLength(bo, l);
3509  }
3510 
3512  {
3513  return threadContext->NewMutableBuffer(n);
3514  }
3515 
3517  {
3518  return threadContext->IsMutableBuffer(o);
3519  }
3520 
3521 
3523  {
3524  return threadContext->MutableBufferCapacity(bo);
3525  }
3526 
3528  {
3529  return threadContext->SetMutableBufferCapacity(bo, l);
3530  }
3531 
3533  {
3534  return threadContext->PointerValue(po);
3535  }
3537  {
3538  return threadContext->NewPointer(p);
3539  }
3541  {
3542  return threadContext->IsPointer(o);
3543  }
3544 
3546  {
3547  return threadContext->SupplierItem(so);
3548  }
3550  {
3551  return threadContext->SupplierIndex(so);
3552  }
3554  {
3555  return threadContext->SupplierAvailable(so);
3556  }
3558  {
3559  threadContext->SupplierNext(so);
3560  }
3562  {
3563  return threadContext->NewSupplier(values, names);
3564  }
3565 
3567  {
3568  return threadContext->NewStem(n);
3569  }
3571  {
3572  threadContext->SetStemElement(so, s, o);
3573  }
3575  {
3576  return threadContext->GetStemElement(so, s);
3577  }
3579  {
3580  threadContext->DropStemElement(so, s);
3581  }
3582  void SetStemArrayElement(RexxStemObject so, size_t n, RexxObjectPtr o)
3583  {
3584  threadContext->SetStemArrayElement(so, n, o);
3585  }
3587  {
3588  return threadContext->GetStemArrayElement(so, n);
3589  }
3590  void DropStemArrayElement(RexxStemObject so, size_t n)
3591  {
3592  threadContext->DropStemArrayElement(so, n);
3593  }
3595  {
3596  return threadContext->GetAllStemElements(so);
3597  }
3599  {
3600  return threadContext->GetStemValue(so);
3601  }
3603  {
3604  return threadContext->IsStem(o);
3605  }
3606 
3607  void RaiseException0(size_t n)
3608  {
3609  threadContext->RaiseException0(n);
3610  }
3611  void RaiseException1(size_t n, RexxObjectPtr o)
3612  {
3613  threadContext->RaiseException1(n, o);
3614  }
3615  void RaiseException2(size_t n, RexxObjectPtr o1, RexxObjectPtr o2)
3616  {
3617  threadContext->RaiseException2(n, o1, o2);
3618  }
3619  void RaiseException3(size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
3620  {
3621  threadContext->RaiseException3(n, o1, o2, o3);
3622  }
3624  {
3625  threadContext->RaiseException4(n, o1, o2, o3, o4);
3626  }
3628  {
3629  threadContext->RaiseException5(n, o1, o2, o3, o4, o5);
3630  }
3631  void RaiseException(size_t n, RexxArrayObject ao)
3632  {
3633  threadContext->RaiseException(n, ao);
3634  }
3636  {
3637  threadContext->RaiseCondition(s1, s2, ao, o);
3638  }
3640  {
3641  return threadContext->CheckCondition();
3642  }
3644  {
3645  return threadContext->DisplayCondition();
3646  }
3648  {
3649  return threadContext->GetConditionInfo();
3650  }
3652  {
3653  threadContext->DecodeConditionInfo(diro, c);
3654  }
3655  void ClearCondition()
3656  {
3657  threadContext->ClearCondition();
3658  }
3659 
3660  RexxObjectPtr Nil()
3661  {
3662  return threadContext->Nil();
3663  }
3664  RexxObjectPtr True()
3665  {
3666  return threadContext->True();
3667  }
3668  RexxObjectPtr False()
3669  {
3670  return threadContext->False();
3671  }
3672  RexxStringObject NullString()
3673  {
3674  return threadContext->NullString();
3675  }
3677  {
3678  functions->SetContextVariable(this, s, o);
3679  }
3681  {
3682  return functions->GetContextVariable(this, s);
3683  }
3685  {
3686  functions->DropContextVariable(this, s);
3687  }
3689  {
3690  return functions->GetAllContextVariables(this);
3691  }
3693  {
3694  return functions->GetCallerContext(this);
3695  }
3696 #endif
3697 };
3698 
3700 
3702 
3703 END_EXTERN_C()
3704 
3705 #define ARGUMENT_TYPE_ARGLIST RexxArrayObject
3706 #define ARGUMENT_TYPE_NAME CSTRING
3707 #define ARGUMENT_TYPE_SCOPE RexxObjectPtr
3708 #define ARGUMENT_TYPE_CSELF POINTER
3709 #define ARGUMENT_TYPE_OSELF RexxObjectPtr
3710 #define ARGUMENT_TYPE_SUPER RexxClassObject
3711 
3712 // each of the following types have an optional equivalent
3713 
3714 #define ARGUMENT_TYPE_RexxObjectPtr RexxObjectPtr
3715 #define ARGUMENT_TYPE_RexxClassObject RexxClassObject
3716 #define ARGUMENT_TYPE_int int
3717 #define ARGUMENT_TYPE_wholenumber_t wholenumber_t
3718 #define ARGUMENT_TYPE_stringsize_t stringsize_t
3719 #define ARGUMENT_TYPE_double double
3720 #define ARGUMENT_TYPE_CSTRING CSTRING
3721 #define ARGUMENT_TYPE_POINTER POINTER
3722 #define ARGUMENT_TYPE_RexxStringObject RexxStringObject
3723 #define ARGUMENT_TYPE_float float
3724 #define ARGUMENT_TYPE_int8_t int8_t
3725 #define ARGUMENT_TYPE_int16_t int16_t
3726 #define ARGUMENT_TYPE_int32_t int32_t
3727 #define ARGUMENT_TYPE_int64_t int64_t
3728 #define ARGUMENT_TYPE___int64_t int64_t
3729 #define ARGUMENT_TYPE_uint8_t uint8_t
3730 #define ARGUMENT_TYPE_uint16_t uint16_t
3731 #define ARGUMENT_TYPE_uint32_t uint32_t
3732 #define ARGUMENT_TYPE_uint64_t uint64_t
3733 #define ARGUMENT_TYPE___uint64_t uint64_t
3734 #define ARGUMENT_TYPE_size_t size_t
3735 #define ARGUMENT_TYPE_ssize_t ssize_t
3736 #define ARGUMENT_TYPE_intptr_t intptr_t
3737 #define ARGUMENT_TYPE_uintptr_t uintptr_t
3738 #define ARGUMENT_TYPE___uintptr_t uintptr_t
3739 #define ARGUMENT_TYPE_logical_t logical_t
3740 #define ARGUMENT_TYPE_RexxArrayObject RexxArrayObject
3741 #define ARGUMENT_TYPE_RexxStemObject RexxStemObject
3742 #define ARGUMENT_TYPE_POINTERSTRING POINTER
3743 #define ARGUMENT_TYPE_RexxMutableBufferObject RexxMutableBufferObject
3744 
3745 #define ARGUMENT_TYPE_OPTIONAL_RexxObjectPtr RexxObjectPtr
3746 #define ARGUMENT_TYPE_OPTIONAL_int int
3747 #define ARGUMENT_TYPE_OPTIONAL_wholenumber_t wholenumber_t
3748 #define ARGUMENT_TYPE_OPTIONAL_stringsize_t stringsize_t
3749 #define ARGUMENT_TYPE_OPTIONAL_double double
3750 #define ARGUMENT_TYPE_OPTIONAL_CSTRING CSTRING
3751 #define ARGUMENT_TYPE_OPTIONAL_POINTER POINTER
3752 #define ARGUMENT_TYPE_OPTIONAL_RexxStringObject RexxStringObject
3753 #define ARGUMENT_TYPE_OPTIONAL_float float
3754 #define ARGUMENT_TYPE_OPTIONAL_int8_t int8_t
3755 #define ARGUMENT_TYPE_OPTIONAL_int16_t int16_t
3756 #define ARGUMENT_TYPE_OPTIONAL_int32_t int32_t
3757 #define ARGUMENT_TYPE_OPTIONAL_int64_t int64_t
3758 #define ARGUMENT_TYPE_OPTIONAL_uint8_t uint8_t
3759 #define ARGUMENT_TYPE_OPTIONAL_uint16_t uint16_t
3760 #define ARGUMENT_TYPE_OPTIONAL_uint32_t uint32_t
3761 #define ARGUMENT_TYPE_OPTIONAL_uint64_t uint64_t
3762 #define ARGUMENT_TYPE_OPTIONAL_size_t size_t
3763 #define ARGUMENT_TYPE_OPTIONAL_ssize_t ssize_t
3764 #define ARGUMENT_TYPE_OPTIONAL_intptr_t intptr_t
3765 #define ARGUMENT_TYPE_OPTIONAL_uintptr_t uintptr_t
3766 #define ARGUMENT_TYPE_OPTIONAL_logical_t logical_t
3767 #define ARGUMENT_TYPE_OPTIONAL_RexxArrayObject RexxArrayObject
3768 #define ARGUMENT_TYPE_OPTIONAL_RexxStemObject RexxStemObject
3769 #define ARGUMENT_TYPE_OPTIONAL_POINTERSTRING POINTER
3770 #define ARGUMENT_TYPE_OPTIONAL_RexxClassObject RexxClassObject
3771 #define ARGUMENT_TYPE_OPTIONAL_RexxMutableBufferObject RexxMutableBufferObject
3772 
3773 #define ARGUMENT_TYPE(t) ((t) & ~REXX_OPTIONAL_ARGUMENT)
3774 #define IS_OPTIONAL_ARGUMENT(t) (((t) & REXX_OPTIONAL_ARGUMENT) != 0)
3775 
3776 
3777 #define argumentExists(i) ((context->arguments[i].flags & ARGUMENT_EXISTS) != 0)
3778 #define argumentOmitted(i) (!argumentExists(i))
3779 
3780 
3781 #define oor__type(t) ARGUMENT_TYPE_##t
3782 #define oor__arg(p, t) arguments[p].value.value_##t
3783 #define oor__ret(t, v) arguments[0].value.value_##t = (v); return NULL;
3784 #define oor__adcl(t, n) oor__type(t) n
3785 #define oor__tdcl(t) REXX_VALUE_##t
3786 
3787 #define __methodstub(name) uint16_t * RexxEntry name (RexxMethodContext *context, ValueDescriptor *arguments)
3788 
3789 #ifdef __cplusplus
3790 #define __cpp_method_proto(name) extern "C" __methodstub(name);
3791 #else
3792 #define __cpp_method_proto(name) __methodstub(name);
3793 #endif
3794 
3795 
3796 // macro to simply the process of a setting a value descriptor
3797 #define SET_REXX_VALUE(v, t, val) \
3798 { \
3799  (v).type = REXX_VALUE##t; \
3800  (v).value.value_##t = (val);\
3801 }
3802 
3803 // macro to simplify getting a value from a value descriptor
3804 #define GET_REXX_VALUE(v, t) ((v).value.value_##t)
3805 
3806 
3807 #define REXX_METHOD_PROTOTYPE(name) __cpp_method_proto(name)
3808 
3809 // zero argument method call
3810 
3811 #define RexxMethod0(returnType, name) \
3812 /* forward reference definition for method */ \
3813 oor__type(returnType) name##_impl (RexxMethodContext * context); \
3814  \
3815 /* method signature definition */ \
3816 static uint16_t name##_types[] = {oor__tdcl(returnType), REXX_ARGUMENT_TERMINATOR}; \
3817 \
3818 __cpp_method_proto(name) \
3819 /* generated calling stub function */ \
3820 __methodstub(name) \
3821 { \
3822  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3823  { \
3824  /* forward to the method implementation */ \
3825  oor__ret(returnType, (name##_impl(context))); \
3826  } \
3827  return name##_types; /* return the type signature */ \
3828 } \
3829 /* the real target method code */ \
3830 oor__type(returnType) name##_impl(RexxMethodContext *context)
3831 
3832 
3833 // method with one argument
3834 #define RexxMethod1(returnType ,name, t1, n1) \
3835 /* forward reference definition for method */ \
3836 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1)); \
3837  \
3838 /* method signature definition */ \
3839 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), REXX_ARGUMENT_TERMINATOR}; \
3840 \
3841 __cpp_method_proto(name) \
3842 /* generated calling stub function */ \
3843 __methodstub(name) \
3844 { \
3845  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3846  { \
3847  /* forward to the method implementation */ \
3848  oor__ret(returnType, name##_impl(context, oor__arg(1, t1))); \
3849  } \
3850  return name##_types; /* return the type signature */ \
3851 } \
3852 /* the real target method code */ \
3853 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1))
3854 
3855 
3856 // method with two arguments
3857 #define RexxMethod2(returnType ,name, t1, n1, t2, n2) \
3858 /* forward reference definition for method */ \
3859 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2)); \
3860  \
3861 /* method signature definition */ \
3862 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), REXX_ARGUMENT_TERMINATOR}; \
3863 \
3864 __cpp_method_proto(name) \
3865 /* generated calling stub function */ \
3866 __methodstub(name) \
3867 { \
3868  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3869  { \
3870  /* forward to the method implementation */ \
3871  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2))); \
3872  } \
3873  return name##_types; /* return the type signature */ \
3874 } \
3875 /* the real target method code */ \
3876 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2))
3877 
3878 
3879 // method with three arguments
3880 #define RexxMethod3(returnType ,name, t1, n1, t2, n2, t3, n3) \
3881 /* forward reference definition for method */ \
3882 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3)); \
3883  \
3884 /* method signature definition */ \
3885 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), REXX_ARGUMENT_TERMINATOR}; \
3886 \
3887 __cpp_method_proto(name) \
3888 /* generated calling stub function */ \
3889 __methodstub(name) \
3890 { \
3891  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3892  { \
3893  /* forward to the method implementation */ \
3894  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3))); \
3895  } \
3896  return name##_types; /* return the type signature */ \
3897 } \
3898 /* the real target method code */ \
3899 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3))
3900 
3901 
3902 // method with four arguments
3903 #define RexxMethod4(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4) \
3904 /* forward reference definition for method */ \
3905 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4)); \
3906  \
3907 /* method signature definition */ \
3908 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), REXX_ARGUMENT_TERMINATOR}; \
3909 \
3910 __cpp_method_proto(name) \
3911 /* generated calling stub function */ \
3912 __methodstub(name) \
3913 { \
3914  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3915  { \
3916  /* forward to the method implementation */ \
3917  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4))); \
3918  } \
3919  return name##_types; /* return the type signature */ \
3920 } \
3921 /* the real target method code */ \
3922 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4))
3923 
3924 
3925 // method with five arguments
3926 #define RexxMethod5(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5) \
3927 /* forward reference definition for method */ \
3928 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5)); \
3929  \
3930 /* method signature definition */ \
3931 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), REXX_ARGUMENT_TERMINATOR}; \
3932 \
3933 __cpp_method_proto(name) \
3934 /* generated calling stub function */ \
3935 __methodstub(name) \
3936 { \
3937  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3938  { \
3939  /* forward to the method implementation */ \
3940  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5))); \
3941  } \
3942  return name##_types; /* return the type signature */ \
3943 } \
3944 /* the real target method code */ \
3945 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5))
3946 
3947 
3948 // method with six arguments
3949 #define RexxMethod6(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6) \
3950 /* forward reference definition for method */ \
3951 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6)); \
3952  \
3953 /* method signature definition */ \
3954 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), REXX_ARGUMENT_TERMINATOR}; \
3955 \
3956 __cpp_method_proto(name) \
3957 /* generated calling stub function */ \
3958 __methodstub(name) \
3959 { \
3960  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3961  { \
3962  /* forward to the method implementation */ \
3963  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6))); \
3964  } \
3965  return name##_types; /* return the type signature */ \
3966 } \
3967 /* the real target method code */ \
3968 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6))
3969 
3970 
3971 // method with seven arguments
3972 #define RexxMethod7(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7) \
3973 /* forward reference definition for method */ \
3974 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7)); \
3975  \
3976 /* method signature definition */ \
3977 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), REXX_ARGUMENT_TERMINATOR}; \
3978 \
3979 __cpp_method_proto(name) \
3980 /* generated calling stub function */ \
3981 __methodstub(name) \
3982 { \
3983  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
3984  { \
3985  /* forward to the method implementation */ \
3986  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7))); \
3987  } \
3988  return name##_types; /* return the type signature */ \
3989 } \
3990 /* the real target method code */ \
3991 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7))
3992 
3993 
3994 // method with eight arguments
3995 #define RexxMethod8(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8) \
3996 /* forward reference definition for method */ \
3997 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8)); \
3998  \
3999 /* method signature definition */ \
4000 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), oor__tdcl(t8), REXX_ARGUMENT_TERMINATOR}; \
4001 \
4002 __cpp_method_proto(name) \
4003 /* generated calling stub function */ \
4004 __methodstub(name) \
4005 { \
4006  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4007  { \
4008  /* forward to the method implementation */ \
4009  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7), oor__arg(8, t8))); \
4010  } \
4011  return name##_types; /* return the type signature */ \
4012 } \
4013 /* the real target method code */ \
4014 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8))
4015 
4016 
4017 // method with nine arguments
4018 #define RexxMethod9(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9) \
4019 /* forward reference definition for method */ \
4020 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9)); \
4021  \
4022 /* method signature definition */ \
4023 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), oor__tdcl(t8), oor__tdcl(t9), REXX_ARGUMENT_TERMINATOR}; \
4024 \
4025 __cpp_method_proto(name) \
4026 /* generated calling stub function */ \
4027 __methodstub(name) \
4028 { \
4029  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4030  { \
4031  /* forward to the method implementation */ \
4032  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7), oor__arg(8, t8), oor__arg(9, t9))); \
4033  } \
4034  return name##_types; /* return the type signature */ \
4035 } \
4036 /* the real target method code */ \
4037 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9))
4038 
4039 
4040 // method with 10 arguments
4041 #define RexxMethod10(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9, t10, n10) \
4042 /* forward reference definition for method */ \
4043 oor__type(returnType) name##_impl (RexxMethodContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9), oor__adcl(t10, n10)); \
4044  \
4045 /* method signature definition */ \
4046 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), oor__tdcl(t8), oor__tdcl(t9), oor__tdcl(t10), REXX_ARGUMENT_TERMINATOR}; \
4047 \
4048 __cpp_method_proto(name) \
4049 /* generated calling stub function */ \
4050 __methodstub(name) \
4051 { \
4052  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4053  { \
4054  /* forward to the method implementation */ \
4055  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7), oor__arg(8, t8), oor__arg(9, t9), oor__arg(10, t10))); \
4056  } \
4057  return name##_types; /* return the type signature */ \
4058 } \
4059 /* the real target method code */ \
4060 oor__type(returnType) name##_impl(RexxMethodContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9), oor__adcl(t10, n10))
4061 
4062 
4063 #define __functionstub(name) uint16_t * RexxEntry name(RexxCallContext *context, ValueDescriptor *arguments)
4064 
4065 #ifdef __cplusplus
4066 #define __cpp_function_proto(name) extern "C" __functionstub(name);
4067 #else
4068 #define __cpp_function_proto(name) __functionstub(name);
4069 #endif
4070 
4071 #define REXX_TYPED_ROUTINE_PROTOTYPE(name) __cpp_function_proto(name)
4072 
4073 // zero argument function call
4074 
4075 #define RexxRoutine0(returnType, name) \
4076 /* forward reference definition for method */ \
4077 oor__type(returnType) name##_impl (RexxCallContext * context); \
4078  \
4079 /* method signature definition */ \
4080 static uint16_t name##_types[] = {oor__tdcl(returnType), REXX_ARGUMENT_TERMINATOR}; \
4081 \
4082 __cpp_function_proto(name) \
4083 /* generated calling stub function */ \
4084 __functionstub(name) \
4085 { \
4086  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4087  { \
4088  /* forward to the method implementation */ \
4089  oor__ret(returnType, name##_impl(context)); \
4090  } \
4091  return name##_types; /* return the type signature */ \
4092 } \
4093 /* the real target method code */ \
4094 oor__type(returnType) name##_impl(RexxCallContext *context)
4095 
4096 
4097 // method with one argument
4098 #define RexxRoutine1(returnType ,name, t1, n1) \
4099 /* forward reference definition for method */ \
4100 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1)); \
4101  \
4102 /* method signature definition */ \
4103 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), REXX_ARGUMENT_TERMINATOR}; \
4104 \
4105 __cpp_function_proto(name) \
4106 /* generated calling stub function */ \
4107 __functionstub(name) \
4108 { \
4109  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4110  { \
4111  /* forward to the method implementation */ \
4112  oor__ret(returnType, name##_impl(context, oor__arg(1, t1))); \
4113  } \
4114  return name##_types; /* return the type signature */ \
4115 } \
4116 /* the real target method code */ \
4117 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1))
4118 
4119 
4120 // method with two arguments
4121 #define RexxRoutine2(returnType ,name, t1, n1, t2, n2) \
4122 /* forward reference definition for method */ \
4123 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2)); \
4124  \
4125 /* method signature definition */ \
4126 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), REXX_ARGUMENT_TERMINATOR }; \
4127 \
4128 __cpp_function_proto(name) \
4129 /* generated calling stub function */ \
4130 __functionstub(name) \
4131 { \
4132  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4133  { \
4134  /* forward to the method implementation */ \
4135  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2))); \
4136  } \
4137  return name##_types; /* return the type signature */ \
4138 } \
4139 /* the real target method code */ \
4140 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2))
4141 
4142 
4143 // method with three arguments
4144 #define RexxRoutine3(returnType ,name, t1, n1, t2, n2, t3, n3) \
4145 /* forward reference definition for method */ \
4146 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3)); \
4147  \
4148 /* method signature definition */ \
4149 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), REXX_ARGUMENT_TERMINATOR}; \
4150 \
4151 __cpp_function_proto(name) \
4152 /* generated calling stub function */ \
4153 __functionstub(name) \
4154 { \
4155  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4156  { \
4157  /* forward to the method implementation */ \
4158  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3))); \
4159  } \
4160  return name##_types; /* return the type signature */ \
4161 } \
4162 /* the real target method code */ \
4163 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3))
4164 
4165 
4166 // method with four arguments
4167 #define RexxRoutine4(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4) \
4168 /* forward reference definition for method */ \
4169 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4)); \
4170  \
4171 /* method signature definition */ \
4172 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), REXX_ARGUMENT_TERMINATOR}; \
4173 \
4174 __cpp_function_proto(name) \
4175 /* generated calling stub function */ \
4176 __functionstub(name) \
4177 { \
4178  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4179  { \
4180  /* forward to the method implementation */ \
4181  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4))); \
4182  } \
4183  return name##_types; /* return the type signature */ \
4184 } \
4185 /* the real target method code */ \
4186 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4))
4187 
4188 
4189 // method with five arguments
4190 #define RexxRoutine5(returnType ,name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5) \
4191 /* forward reference definition for method */ \
4192 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5)); \
4193  \
4194 /* method signature definition */ \
4195 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), REXX_ARGUMENT_TERMINATOR}; \
4196 \
4197 __cpp_function_proto(name) \
4198 /* generated calling stub function */ \
4199 __functionstub(name) \
4200 { \
4201  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4202  { \
4203  /* forward to the method implementation */ \
4204  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5))); \
4205  } \
4206  return name##_types; /* return the type signature */ \
4207 } \
4208 /* the real target method code */ \
4209 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5))
4210 
4211 
4212 // method with six arguments
4213 #define RexxRoutine6(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6) \
4214 /* forward reference definition for method */ \
4215 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6)); \
4216  \
4217 /* method signature definition */ \
4218 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), REXX_ARGUMENT_TERMINATOR}; \
4219 \
4220 __cpp_function_proto(name) \
4221 /* generated calling stub function */ \
4222 __functionstub(name) \
4223 { \
4224  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4225  { \
4226  /* forward to the method implementation */ \
4227  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6))); \
4228  } \
4229  return name##_types; /* return the type signature */ \
4230 } \
4231 /* the real target method code */ \
4232 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6))
4233 
4234 // method with seven arguments
4235 #define RexxRoutine7(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7) \
4236 /* forward reference definition for method */ \
4237 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7)); \
4238  \
4239 /* method signature definition */ \
4240 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), REXX_ARGUMENT_TERMINATOR}; \
4241 \
4242 __cpp_function_proto(name) \
4243 /* generated calling stub function */ \
4244 __functionstub(name) \
4245 { \
4246  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4247  { \
4248  /* forward to the method implementation */ \
4249  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7))); \
4250  } \
4251  return name##_types; /* return the type signature */ \
4252 } \
4253 /* the real target method code */ \
4254 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7))
4255 
4256 
4257 // function with eight arguments
4258 #define RexxRoutine8(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8) \
4259 /* forward reference definition for method */ \
4260 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8)); \
4261  \
4262 /* method signature definition */ \
4263 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), oor__tdcl(t8), REXX_ARGUMENT_TERMINATOR}; \
4264 \
4265 __cpp_function_proto(name) \
4266 /* generated calling stub function */ \
4267 __functionstub(name) \
4268 { \
4269  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4270  { \
4271  /* forward to the method implementation */ \
4272  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7), oor__arg(8, t8))); \
4273  } \
4274  return name##_types; /* return the type signature */ \
4275 } \
4276 /* the real target method code */ \
4277 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8))
4278 
4279 
4280 // function with nine arguments
4281 #define RexxRoutine9(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9) \
4282 /* forward reference definition for method */ \
4283 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9)); \
4284  \
4285 /* method signature definition */ \
4286 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), oor__tdcl(t8), oor__tdcl(t9), REXX_ARGUMENT_TERMINATOR}; \
4287 \
4288 __cpp_function_proto(name) \
4289 /* generated calling stub function */ \
4290 __functionstub(name) \
4291 { \
4292  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4293  { \
4294  /* forward to the method implementation */ \
4295  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7), oor__arg(8, t8), oor__arg(9, t9))); \
4296  } \
4297  return name##_types; /* return the type signature */ \
4298 } \
4299 /* the real target method code */ \
4300 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9))
4301 
4302 
4303 // function with ten arguments
4304 #define RexxRoutine10(returnType, name, t1, n1, t2, n2, t3, n3, t4, n4, t5, n5, t6, n6, t7, n7, t8, n8, t9, n9, t10, n10) \
4305 /* forward reference definition for method */ \
4306 oor__type(returnType) name##_impl (RexxCallContext * context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9), oor__adcl(t10, n10)); \
4307  \
4308 /* method signature definition */ \
4309 static uint16_t name##_types[] = {oor__tdcl(returnType), oor__tdcl(t1), oor__tdcl(t2), oor__tdcl(t3), oor__tdcl(t4), oor__tdcl(t5), oor__tdcl(t6), oor__tdcl(t7), oor__tdcl(t8), oor__tdcl(t9), oor__tdcl(t10), REXX_ARGUMENT_TERMINATOR}; \
4310 \
4311 __cpp_function_proto(name) \
4312 /* generated calling stub function */ \
4313 __functionstub(name) \
4314 { \
4315  if (arguments != NULL) /* if no arguments passed, this a signature request */ \
4316  { \
4317  /* forward to the method implementation */ \
4318  oor__ret(returnType, name##_impl(context, oor__arg(1, t1), oor__arg(2, t2), oor__arg(3, t3), oor__arg(4, t4), oor__arg(5, t5), oor__arg(6, t6), oor__arg(7, t7), oor__arg(8, t8), oor__arg(9, t9), oor__arg(10, t10))); \
4319  } \
4320  return name##_types; /* return the type signature */ \
4321 } \
4322 /* the real target method code */ \
4323 oor__type(returnType) name##_impl(RexxCallContext *context, oor__adcl(t1, n1), oor__adcl(t2, n2), oor__adcl(t3, n3), oor__adcl(t4, n4), oor__adcl(t5, n5), oor__adcl(t6, n6), oor__adcl(t7, n7), oor__adcl(t8, n8), oor__adcl(t9, n9), oor__adcl(t10, n10))
4324 
4325 /******************************************************************************/
4326 /* Types (used in macro expansions and function prototypes) */
4327 /******************************************************************************/
4329 typedef void * CSELF;
4330 typedef void * BUFFER;
4334 typedef CSTRING NAME;
4335 
4336 #endif
RexxObjectPtr RexxEntry GetCallerContext(RexxCallContext *c)
void RexxEntry InvalidRoutine(RexxCallContext *c)
RexxDirectoryObject RexxEntry GetAllContextVariables(RexxCallContext *c)
RexxStemObject RexxEntry ResolveStemVariable(RexxCallContext *c, RexxObjectPtr s)
RexxObjectPtr RexxEntry GetContextVariable(RexxCallContext *c, CSTRING n)
CSTRING RexxEntry GetRoutineName(RexxCallContext *c)
void RexxEntry DropContextVariable(RexxCallContext *c, CSTRING n)
stringsize_t RexxEntry GetContextDigits(RexxCallContext *c)
logical_t RexxEntry GetContextForm(RexxCallContext *c)
stringsize_t RexxEntry GetContextFuzz(RexxCallContext *c)
void RexxEntry SetContextVariable(RexxCallContext *c, CSTRING n, RexxObjectPtr v)
logical_t RexxEntry AttachThread(RexxInstance *c, RexxThreadContext **tc)
void RexxEntry SetTrace(RexxInstance *c, logical_t setting)
size_t RexxEntry LanguageLevel(RexxInstance *)
void RexxEntry Halt(RexxInstance *c)
void RexxEntry Terminate(RexxInstance *c)
size_t RexxEntry InterpreterVersion(RexxInstance *)
void RexxEntry SetObjectVariable(RexxMethodContext *c, CSTRING n, RexxObjectPtr v)
void RexxEntry SetGuardOff(RexxMethodContext *c)
RexxObjectPtr RexxEntry GetScope(RexxMethodContext *c)
RexxObjectPtr RexxEntry GetSelf(RexxMethodContext *c)
void RexxEntry SetGuardOn(RexxMethodContext *c)
RexxObjectPtr RexxEntry GetObjectVariable(RexxMethodContext *c, CSTRING n)
POINTER RexxEntry GetCSelf(RexxMethodContext *c)
void RexxEntry DropObjectVariable(RexxMethodContext *c, CSTRING n)
RexxObjectPtr RexxEntry ForwardMessage(RexxMethodContext *c, RexxObjectPtr o, CSTRING n, RexxClassObject clazz, RexxArrayObject a, RexxDirectoryObject d)
RexxClassObject RexxEntry GetSuper(RexxMethodContext *c)
CSTRING RexxEntry GetMessageName(RexxMethodContext *c)
RexxClassObject RexxEntry FindContextClass(RexxMethodContext *c, CSTRING n)
RexxMutableBufferObject RexxEntry NewMutableBuffer(RexxThreadContext *c, size_t l)
logical_t RexxEntry IsString(RexxThreadContext *c, RexxObjectPtr o)
RexxArrayObject RexxEntry ArrayOfFour(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3, RexxObjectPtr o4)
RexxStringObject RexxEntry NewStringFromAsciiz(RexxThreadContext *c, CSTRING s)
RexxObjectPtr RexxEntry UnsignedInt64ToObject(RexxThreadContext *c, uint64_t n)
POINTER RexxEntry SetMutableBufferCapacity(RexxThreadContext *c, RexxMutableBufferObject b, size_t length)
size_t RexxEntry ArrayAppend(RexxThreadContext *c, RexxArrayObject a, RexxObjectPtr o)
RexxArrayObject RexxEntry NewArray(RexxThreadContext *c, size_t s)
void RexxEntry SetThreadTrace(RexxThreadContext *c, logical_t setting)
void RexxEntry DirectoryPut(RexxThreadContext *c, RexxDirectoryObject t, RexxObjectPtr o, CSTRING i)
logical_t RexxEntry ObjectToStringSize(RexxThreadContext *c, RexxObjectPtr o, stringsize_t *n)
RexxObjectPtr RexxEntry StringSizeToObject(RexxThreadContext *c, stringsize_t n)
RexxObjectPtr RexxEntry SupplierIndex(RexxThreadContext *c, RexxSupplierObject o)
void RexxEntry RaiseException4(RexxThreadContext *c, size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3, RexxObjectPtr o4)
logical_t RexxEntry RegisterLibrary(RexxThreadContext *c, CSTRING n, RexxPackageEntry *e)
POINTER RexxEntry MutableBufferData(RexxThreadContext *c, RexxMutableBufferObject b)
void RexxEntry RaiseException2(RexxThreadContext *c, size_t n, RexxObjectPtr o1, RexxObjectPtr o2)
logical_t RexxEntry IsBuffer(RexxThreadContext *c, RexxObjectPtr o)
RexxDirectoryObject RexxEntry GetPackageRoutines(RexxThreadContext *c, RexxPackageObject m)
logical_t RexxEntry ObjectToUnsignedInt64(RexxThreadContext *c, RexxObjectPtr o, uint64_t *n)
CSTRING RexxEntry StringData(RexxThreadContext *c, RexxStringObject s)
RexxPackageObject RexxEntry LoadPackageFromData(RexxThreadContext *c, CSTRING n, CSTRING d, size_t l)
void RexxEntry ClearCondition(RexxThreadContext *c)
RexxObjectPtr RexxEntry DoubleToObjectWithPrecision(RexxThreadContext *c, double n, size_t precision)
RexxObjectPtr RexxEntry DoubleToObject(RexxThreadContext *c, double n)
void RexxEntry RaiseException5(RexxThreadContext *c, size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3, RexxObjectPtr o4, RexxObjectPtr o5)
logical_t RexxEntry IsArray(RexxThreadContext *c, RexxObjectPtr o)
RexxArrayObject RexxEntry ArrayOfTwo(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2)
RexxArrayObject RexxEntry ArrayOfFive(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3, RexxObjectPtr o4, RexxObjectPtr o5)
size_t RexxEntry ArrayDimension(RexxThreadContext *c, RexxArrayObject a)
logical_t RexxEntry IsMethod(RexxThreadContext *c, RexxObjectPtr o)
RexxObjectPtr RexxEntry LogicalToObject(RexxThreadContext *c, logical_t n)
RexxClassObject RexxEntry FindClass(RexxThreadContext *c, CSTRING n)
RexxObjectPtr RexxEntry GetStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n)
logical_t RexxEntry ObjectToLogical(RexxThreadContext *c, RexxObjectPtr o, logical_t *n)
size_t RexxEntry StringLength(RexxThreadContext *c, RexxStringObject s)
RexxBufferStringObject RexxEntry NewBufferString(RexxThreadContext *c, size_t l)
RexxArrayObject RexxEntry ArrayOfOne(RexxThreadContext *c, RexxObjectPtr o)
RexxStringObject RexxEntry ObjectToString(RexxThreadContext *c, RexxObjectPtr o)
RexxObjectPtr RexxEntry WholeNumberToObject(RexxThreadContext *c, wholenumber_t n)
RexxPackageObject RexxEntry LoadPackage(RexxThreadContext *c, CSTRING n)
logical_t RexxEntry SupplierAvailable(RexxThreadContext *c, RexxSupplierObject o)
logical_t RexxEntry ObjectToValue(RexxThreadContext *c, RexxObjectPtr o, ValueDescriptor *d)
RexxObjectPtr RexxEntry GetStemValue(RexxThreadContext *c, RexxStemObject s)
void RexxEntry DetachThread(RexxThreadContext *c)
void RexxEntry ReleaseGlobalReference(RexxThreadContext *c, RexxObjectPtr o)
void RexxEntry SetStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n, RexxObjectPtr v)
RexxStringObject RexxEntry FinishBufferString(RexxThreadContext *c, RexxBufferStringObject s, size_t l)
logical_t RexxEntry IsRoutine(RexxThreadContext *c, RexxObjectPtr o)
size_t RexxEntry ArraySize(RexxThreadContext *c, RexxArrayObject a)
void RexxEntry HaltThread(RexxThreadContext *c)
logical_t RexxEntry ObjectToUnsignedInt32(RexxThreadContext *c, RexxObjectPtr o, uint32_t *n)
RexxBufferObject RexxEntry NewBuffer(RexxThreadContext *c, size_t l)
void RexxEntry DropStemArrayElement(RexxThreadContext *c, RexxStemObject s, size_t i)
RexxStemObject RexxEntry NewStem(RexxThreadContext *c, CSTRING n)
void RexxEntry RaiseException0(RexxThreadContext *c, size_t n)
RexxDirectoryObject RexxEntry GetLocalEnvironment(RexxThreadContext *c)
RexxDirectoryObject RexxEntry GetPackagePublicClasses(RexxThreadContext *c, RexxPackageObject m)
RexxObjectPtr RexxEntry CallProgram(RexxThreadContext *c, const char *p, RexxArrayObject a)
size_t RexxEntry StringGet(RexxThreadContext *c, RexxStringObject s, size_t o, POINTER r, size_t l)
RexxObjectPtr RexxEntry SendMessage0(RexxThreadContext *c, RexxObjectPtr o, CSTRING m)
logical_t RexxEntry ObjectToUintptr(RexxThreadContext *c, RexxObjectPtr o, uintptr_t *n)
size_t RexxEntry BufferLength(RexxThreadContext *c, RexxBufferObject b)
RexxSupplierObject RexxEntry NewSupplier(RexxThreadContext *c, RexxArrayObject values, RexxArrayObject names)
void RexxEntry ArrayPut(RexxThreadContext *c, RexxArrayObject a, RexxObjectPtr o, size_t i)
RexxArrayObject RexxEntry ValuesToObject(RexxThreadContext *c, ValueDescriptor *d, size_t count)
RexxObjectPtr RexxEntry GetStemArrayElement(RexxThreadContext *c, RexxStemObject s, size_t i)
logical_t RexxEntry IsOfType(RexxThreadContext *c, RexxObjectPtr o, CSTRING cn)
logical_t RexxEntry CheckCondition(RexxThreadContext *c)
logical_t RexxEntry IsMutableBuffer(RexxThreadContext *c, RexxObjectPtr o)
RexxDirectoryObject RexxEntry GetPackageMethods(RexxThreadContext *c, RexxPackageObject m)
logical_t RexxEntry IsDirectory(RexxThreadContext *c, RexxObjectPtr o)
RexxObjectPtr RexxEntry Int64ToObject(RexxThreadContext *c, int64_t n)
RexxPackageObject RexxEntry GetRoutinePackage(RexxThreadContext *c, RexxRoutineObject o)
POINTER RexxEntry ObjectToCSelfScoped(RexxThreadContext *c, RexxObjectPtr o, RexxObjectPtr s)
RexxDirectoryObject RexxEntry GetGlobalEnvironment(RexxThreadContext *c)
RexxMethodObject RexxEntry NewMethod(RexxThreadContext *c, CSTRING n, CSTRING source, stringsize_t length)
RexxObjectPtr RexxEntry UintptrToObject(RexxThreadContext *c, uintptr_t n)
RexxRoutineObject RexxEntry NewRoutine(RexxThreadContext *c, CSTRING n, CSTRING source, stringsize_t length)
RexxObjectPtr RexxEntry IntptrToObject(RexxThreadContext *c, intptr_t n)
CSTRING RexxEntry ObjectToStringValue(RexxThreadContext *c, RexxObjectPtr o)
size_t RexxEntry BufferStringLength(RexxThreadContext *c, RexxBufferStringObject s)
RexxDirectoryObject RexxEntry NewDirectory(RexxThreadContext *c)
wholenumber_t RexxEntry DisplayCondition(RexxThreadContext *c)
RexxObjectPtr RexxEntry SendMessage2(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxObjectPtr a1, RexxObjectPtr a2)
logical_t RexxEntry HasMethod(RexxThreadContext *c, RexxObjectPtr o, CSTRING n)
RexxStringObject RexxEntry StringUpper(RexxThreadContext *c, RexxStringObject s)
RexxObjectPtr RexxEntry DirectoryRemove(RexxThreadContext *c, RexxDirectoryObject t, CSTRING i)
logical_t RexxEntry ObjectToInt32(RexxThreadContext *c, RexxObjectPtr o, int32_t *n)
RexxObjectPtr RexxEntry RequestGlobalReference(RexxThreadContext *c, RexxObjectPtr o)
RexxObjectPtr RexxEntry ValueToObject(RexxThreadContext *c, ValueDescriptor *d)
RexxDirectoryObject RexxEntry GetAllStemElements(RexxThreadContext *c, RexxStemObject s)
RexxStringObject RexxEntry NewString(RexxThreadContext *c, CSTRING s, size_t l)
logical_t RexxEntry ObjectToWholeNumber(RexxThreadContext *c, RexxObjectPtr o, wholenumber_t *n)
void RexxEntry RaiseException3(RexxThreadContext *c, size_t n, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
size_t RexxEntry ArrayItems(RexxThreadContext *c, RexxArrayObject a)
size_t RexxEntry SetMutableBufferLength(RexxThreadContext *c, RexxMutableBufferObject b, size_t length)
logical_t RexxEntry IsPointer(RexxThreadContext *c, RexxObjectPtr o)
RexxStringObject RexxEntry StringLower(RexxThreadContext *c, RexxStringObject s)
POINTER RexxEntry PointerValue(RexxThreadContext *c, RexxPointerObject o)
void RexxEntry DecodeConditionInfo(RexxThreadContext *c, RexxDirectoryObject d, RexxCondition *cd)
RexxPackageObject RexxEntry GetMethodPackage(RexxThreadContext *c, RexxMethodObject o)
logical_t RexxEntry ObjectToInt64(RexxThreadContext *c, RexxObjectPtr o, int64_t *n)
void RexxEntry SetStemArrayElement(RexxThreadContext *c, RexxStemObject s, size_t i, RexxObjectPtr v)
logical_t RexxEntry ObjectToIntptr(RexxThreadContext *c, RexxObjectPtr o, intptr_t *n)
POINTER RexxEntry BufferData(RexxThreadContext *c, RexxBufferObject b)
POINTER RexxEntry BufferStringData(RexxThreadContext *c, RexxBufferStringObject s)
void RexxEntry SupplierNext(RexxThreadContext *c, RexxSupplierObject o)
logical_t RexxEntry ObjectToDouble(RexxThreadContext *c, RexxObjectPtr o, double *n)
RexxObjectPtr RexxEntry SupplierItem(RexxThreadContext *c, RexxSupplierObject o)
logical_t RexxEntry IsInstanceOf(RexxThreadContext *c, RexxObjectPtr o, RexxClassObject cl)
void RexxEntry RaiseCondition(RexxThreadContext *c, CSTRING n, RexxStringObject desc, RexxObjectPtr add, RexxObjectPtr result)
void RexxEntry ReleaseLocalReference(RexxThreadContext *c, RexxObjectPtr o)
size_t RexxEntry ArrayAppendString(RexxThreadContext *c, RexxArrayObject a, CSTRING s, size_t l)
RexxDirectoryObject RexxEntry GetPackageClasses(RexxThreadContext *c, RexxPackageObject m)
RexxObjectPtr RexxEntry CallRoutine(RexxThreadContext *c, RexxRoutineObject r, RexxArrayObject a)
void RexxEntry RaiseException1(RexxThreadContext *c, size_t n, RexxObjectPtr o1)
RexxDirectoryObject RexxEntry GetConditionInfo(RexxThreadContext *c)
RexxObjectPtr RexxEntry SendMessage1(RexxThreadContext *c, RexxObjectPtr o, CSTRING m, RexxObjectPtr a1)
RexxObjectPtr RexxEntry ArrayAt(RexxThreadContext *c, RexxArrayObject a, size_t i)
size_t RexxEntry MutableBufferLength(RexxThreadContext *c, RexxMutableBufferObject b)
RexxDirectoryObject RexxEntry GetPackagePublicRoutines(RexxThreadContext *c, RexxPackageObject m)
RexxObjectPtr RexxEntry DirectoryAt(RexxThreadContext *c, RexxDirectoryObject t, CSTRING i)
RexxObjectPtr RexxEntry Int32ToObject(RexxThreadContext *c, int32_t n)
POINTER RexxEntry ObjectToCSelf(RexxThreadContext *c, RexxObjectPtr o)
RexxObjectPtr RexxEntry UnsignedInt32ToObject(RexxThreadContext *c, uint32_t n)
RexxArrayObject RexxEntry ArrayOfThree(RexxThreadContext *c, RexxObjectPtr o1, RexxObjectPtr o2, RexxObjectPtr o3)
RexxPointerObject RexxEntry NewPointer(RexxThreadContext *c, POINTER p)
logical_t RexxEntry IsStem(RexxThreadContext *c, RexxObjectPtr o)
size_t RexxEntry MutableBufferCapacity(RexxThreadContext *c, RexxMutableBufferObject b)
void RexxEntry DropStemElement(RexxThreadContext *c, RexxStemObject s, CSTRING n)
#define REXX_VALUE_double
Definition: oorexxapi.h:67
void(RexxEntry * RexxPackageUnloader)(RexxThreadContext *)
Definition: oorexxapi.h:239
#define REXX_VALUE_POINTER
Definition: oorexxapi.h:69
RexxObjectPtr SCOPE
Definition: oorexxapi.h:4332
void * BUFFER
Definition: oorexxapi.h:4330
RexxObjectPtr OSELF
Definition: oorexxapi.h:4328
#define REXX_VALUE_wholenumber_t
Definition: oorexxapi.h:66
void * CSELF
Definition: oorexxapi.h:4329
int REXXENTRY RexxContextExitHandler(RexxExitContext *, int, int, PEXIT)
Definition: oorexxapi.h:165
struct _RexxMethodEntry RexxMethodEntry
const struct RexxCallContext_ * RexxCallContext
Definition: oorexxapi.h:153
#define REXX_VALUE_float
Definition: oorexxapi.h:72
void(RexxEntry * RexxPackageLoader)(RexxThreadContext *)
Definition: oorexxapi.h:238
RexxReturnCode RexxEntry RexxCreateInterpreter(RexxInstance **, RexxThreadContext **, RexxOption *)
#define REXX_VALUE_RexxMutableBufferObject
Definition: oorexxapi.h:93
RexxClassObject SUPER
Definition: oorexxapi.h:4333
const struct RexxThreadContext_ * RexxThreadContext
Definition: oorexxapi.h:139
#define REXX_VALUE_RexxStemObject
Definition: oorexxapi.h:88
CSTRING NAME
Definition: oorexxapi.h:4334
const struct RexxInstance_ * RexxInstance
Definition: oorexxapi.h:132
struct _RexxContextExit RexxContextExit
RexxArrayObject ARGLIST
Definition: oorexxapi.h:4331
const struct RexxMethodContext_ * RexxMethodContext
Definition: oorexxapi.h:146
struct _RexxPackageEntry RexxPackageEntry
const struct RexxExitContext_ * RexxExitContext
Definition: oorexxapi.h:160
struct _ValueDescriptor ValueDescriptor
#define REXX_VALUE_RexxArrayObject
Definition: oorexxapi.h:87
#define REXX_VALUE_RexxObjectPtr
Definition: oorexxapi.h:64
RexxObjectPtr REXXENTRY RexxContextCommandHandler(RexxExitContext *, RexxStringObject, RexxStringObject)
Definition: oorexxapi.h:395
#define REXX_VALUE_RexxStringObject
Definition: oorexxapi.h:70
struct _RexxRoutineEntry RexxRoutineEntry
#define REXX_VALUE_CSTRING
Definition: oorexxapi.h:68
#define END_EXTERN_C()
Definition: rexx.h:61
struct _RexxPackageObject * RexxPackageObject
Definition: rexx.h:135
struct _RexxClassObject * RexxClassObject
Definition: rexx.h:136
const char * CSTRING
Definition: rexx.h:78
size_t logical_t
Definition: rexx.h:231
struct _RexxMutableBufferObject * RexxMutableBufferObject
Definition: rexx.h:140
struct _RexxStringObject * RexxStringObject
Definition: rexx.h:128
struct _RexxArrayObject * RexxArrayObject
Definition: rexx.h:130
struct _RexxBufferStringObject * RexxBufferStringObject
Definition: rexx.h:129
struct _RexxObjectPtr * RexxObjectPtr
Definition: rexx.h:127
ssize_t wholenumber_t
Definition: rexx.h:230
struct _RexxRoutineObject * RexxRoutineObject
Definition: rexx.h:134
char * PEXIT
Definition: rexx.h:215
struct _RexxDirectoryObject * RexxDirectoryObject
Definition: rexx.h:137
struct _RexxSupplierObject * RexxSupplierObject
Definition: rexx.h:138
int RexxReturnCode
Definition: rexx.h:73
struct _RexxMethodObject * RexxMethodObject
Definition: rexx.h:133
struct _RexxBufferObject * RexxBufferObject
Definition: rexx.h:131
void * POINTER
Definition: rexx.h:79
size_t stringsize_t
Definition: rexx.h:228
struct _RexxPointerObject * RexxPointerObject
Definition: rexx.h:132
#define RexxEntry
Definition: rexx.h:235
struct _RexxStemObject * RexxStemObject
Definition: rexx.h:139
#define BEGIN_EXTERN_C()
Definition: rexx.h:60
RexxContextExitHandler * handler
Definition: oorexxapi.h:171
Definition: oorexxapi.h:198
int style
Definition: oorexxapi.h:199
int reserved3
Definition: oorexxapi.h:204
void * entryPoint
Definition: oorexxapi.h:202
int reserved1
Definition: oorexxapi.h:200
const char * name
Definition: oorexxapi.h:201
int reserved2
Definition: oorexxapi.h:203
Definition: oorexxapi.h:242
const char * packageVersion
Definition: oorexxapi.h:247
const char * packageName
Definition: oorexxapi.h:246
RexxPackageUnloader unloader
Definition: oorexxapi.h:249
struct _RexxRoutineEntry * routines
Definition: oorexxapi.h:250
int apiVersion
Definition: oorexxapi.h:244
RexxPackageLoader loader
Definition: oorexxapi.h:248
int size
Definition: oorexxapi.h:243
int requiredVersion
Definition: oorexxapi.h:245
struct _RexxMethodEntry * methods
Definition: oorexxapi.h:251
Definition: oorexxapi.h:177
int style
Definition: oorexxapi.h:178
const char * name
Definition: oorexxapi.h:180
int reserved2
Definition: oorexxapi.h:182
void * entryPoint
Definition: oorexxapi.h:181
int reserved1
Definition: oorexxapi.h:179
int reserved3
Definition: oorexxapi.h:183
CSTRING value_OPTIONAL_CSTRING
Definition: oorexxapi.h:315
int32_t value_int32_t
Definition: oorexxapi.h:288
int64_t value_int64_t
Definition: oorexxapi.h:289
uint32_t value_uint32_t
Definition: oorexxapi.h:293
RexxObjectPtr value_SCOPE
Definition: oorexxapi.h:271
RexxMutableBufferObject value_RexxMutableBufferObject
Definition: oorexxapi.h:304
uint16_t value_uint16_t
Definition: oorexxapi.h:292
uint16_t flags
Definition: oorexxapi.h:339
RexxStringObject value_RexxStringObject
Definition: oorexxapi.h:284
RexxArrayObject value_ARGLIST
Definition: oorexxapi.h:269
RexxStringObject value_OPTIONAL_RexxStringObject
Definition: oorexxapi.h:318
int64_t value___int64_t
Definition: oorexxapi.h:290
logical_t value_OPTIONAL_logical_t
Definition: oorexxapi.h:313
uintptr_t value_OPTIONAL_uintptr_t
Definition: oorexxapi.h:329
uintptr_t value_uintptr_t
Definition: oorexxapi.h:297
RexxObjectPtr value_OPTIONAL_RexxObjectPtr
Definition: oorexxapi.h:309
uint64_t value_OPTIONAL_uint64_t
Definition: oorexxapi.h:327
RexxClassObject value_OPTIONAL_RexxClassObject
Definition: oorexxapi.h:316
int8_t value_int8_t
Definition: oorexxapi.h:286
uint8_t value_uint8_t
Definition: oorexxapi.h:291
size_t value_size_t
Definition: oorexxapi.h:299
float value_OPTIONAL_float
Definition: oorexxapi.h:319
uint16_t type
Definition: oorexxapi.h:338
double value_double
Definition: oorexxapi.h:281
CSTRING value_NAME
Definition: oorexxapi.h:270
intptr_t value_intptr_t
Definition: oorexxapi.h:296
logical_t value_logical_t
Definition: oorexxapi.h:280
RexxClassObject value_OSELF
Definition: oorexxapi.h:273
POINTER value_OPTIONAL_POINTER
Definition: oorexxapi.h:317
size_t value_OPTIONAL_size_t
Definition: oorexxapi.h:331
POINTER value_POINTERSTRING
Definition: oorexxapi.h:303
RexxStemObject value_OPTIONAL_RexxStemObject
Definition: oorexxapi.h:333
RexxMutableBufferObject value_OPTIONAL_RexxMutableBufferObject
Definition: oorexxapi.h:335
intptr_t value_OPTIONAL_intptr_t
Definition: oorexxapi.h:328
wholenumber_t value_wholenumber_t
Definition: oorexxapi.h:278
RexxClassObject value_RexxClassObject
Definition: oorexxapi.h:276
RexxStemObject value_RexxStemObject
Definition: oorexxapi.h:302
uint64_t value_uint64_t
Definition: oorexxapi.h:294
wholenumber_t value_OPTIONAL_wholenumber_t
Definition: oorexxapi.h:311
uintptr_t value___uintptr_t
Definition: oorexxapi.h:298
union _ValueDescriptor::@26 value
POINTER value_CSELF
Definition: oorexxapi.h:272
uint32_t value_OPTIONAL_uint32_t
Definition: oorexxapi.h:326
int32_t value_OPTIONAL_int32_t
Definition: oorexxapi.h:322
RexxArrayObject value_OPTIONAL_RexxArrayObject
Definition: oorexxapi.h:332
int16_t value_int16_t
Definition: oorexxapi.h:287
CSTRING value_CSTRING
Definition: oorexxapi.h:282
uint16_t value_OPTIONAL_uint16_t
Definition: oorexxapi.h:325
stringsize_t value_stringsize_t
Definition: oorexxapi.h:279
double value_OPTIONAL_double
Definition: oorexxapi.h:314
stringsize_t value_OPTIONAL_stringsize_t
Definition: oorexxapi.h:312
RexxClassObject value_SUPER
Definition: oorexxapi.h:274
uint64_t value___uint64_t
Definition: oorexxapi.h:295
RexxArrayObject value_RexxArrayObject
Definition: oorexxapi.h:301
uint8_t value_OPTIONAL_uint8_t
Definition: oorexxapi.h:324
int64_t value_OPTIONAL_int64_t
Definition: oorexxapi.h:323
int value_OPTIONAL_int
Definition: oorexxapi.h:310
int16_t value_OPTIONAL_int16_t
Definition: oorexxapi.h:321
POINTER value_POINTER
Definition: oorexxapi.h:283
ssize_t value_OPTIONAL_ssize_t
Definition: oorexxapi.h:330
int8_t value_OPTIONAL_int8_t
Definition: oorexxapi.h:320
ssize_t value_ssize_t
Definition: oorexxapi.h:300
POINTER value_OPTIONAL_POINTERSTRING
Definition: oorexxapi.h:334
RexxObjectPtr value_RexxObjectPtr
Definition: oorexxapi.h:275
stringsize_t(RexxEntry *GetContextFuzz)(RexxCallContext *)
wholenumber_t interfaceVersion
Definition: oorexxapi.h:648
RexxRoutineObject(RexxEntry *GetRoutine)(RexxCallContext *)
RexxArrayObject(RexxEntry *GetArguments)(RexxCallContext *)
logical_t(RexxEntry *GetContextForm)(RexxCallContext *)
RexxObjectPtr(RexxEntry *GetContextVariable)(RexxCallContext *
RexxObjectPtr(RexxEntry *GetArgument)(RexxCallContext *
void(RexxEntry *DropContextVariable)(RexxCallContext *
RexxObjectPtr(RexxEntry *GetCallerContext)(RexxCallContext *)
void(RexxEntry *InvalidRoutine)(RexxCallContext *)
RexxDirectoryObject(RexxEntry *GetAllContextVariables)(RexxCallContext *)
RexxStemObject(RexxEntry *ResolveStemVariable)(RexxCallContext *
stringsize_t(RexxEntry *GetContextDigits)(RexxCallContext *)
CSTRING(RexxEntry *GetRoutineName)(RexxCallContext *)
RexxClassObject(RexxEntry *FindContextClass)(RexxCallContext *
void(RexxEntry *DropContextVariable)(RexxExitContext *
RexxObjectPtr(RexxEntry *GetCallerContext)(RexxExitContext *)
RexxObjectPtr(RexxEntry *GetContextVariable)(RexxExitContext *
RexxDirectoryObject(RexxEntry *GetAllContextVariables)(RexxExitContext *)
wholenumber_t interfaceVersion
Definition: oorexxapi.h:671
RexxArrayObject(RexxEntry *GetArguments)(RexxMethodContext *)
RexxObjectPtr(RexxEntry *GetSelf)(RexxMethodContext *)
void(RexxEntry *SetGuardOff)(RexxMethodContext *)
RexxMethodObject(RexxEntry *GetMethod)(RexxMethodContext *)
RexxObjectPtr(RexxEntry *GetArgument)(RexxMethodContext *
RexxClassObject(RexxEntry *FindContextClass)(RexxMethodContext *
POINTER(RexxEntry *GetCSelf)(RexxMethodContext *)
CSTRING(RexxEntry *GetMessageName)(RexxMethodContext *)
wholenumber_t interfaceVersion
Definition: oorexxapi.h:625
void(RexxEntry *SetGuardOn)(RexxMethodContext *)
void(RexxEntry *DropObjectVariable)(RexxMethodContext *
RexxClassObject(RexxEntry *GetSuper)(RexxMethodContext *)
RexxObjectPtr(RexxEntry *GetObjectVariable)(RexxMethodContext *
RexxObjectPtr(RexxEntry *GetScope)(RexxMethodContext *)
CallContextInterface * functions
Definition: oorexxapi.h:2201
RexxThreadContext * threadContext
Definition: oorexxapi.h:2200
ValueDescriptor * arguments
Definition: oorexxapi.h:2202
wholenumber_t rc
Definition: oorexxapi.h:425
RexxStringObject description
Definition: oorexxapi.h:431
wholenumber_t code
Definition: oorexxapi.h:424
size_t position
Definition: oorexxapi.h:426
RexxArrayObject additional
Definition: oorexxapi.h:432
RexxStringObject conditionName
Definition: oorexxapi.h:427
RexxStringObject message
Definition: oorexxapi.h:428
RexxStringObject errortext
Definition: oorexxapi.h:429
RexxStringObject program
Definition: oorexxapi.h:430
const char * name
Definition: oorexxapi.h:401
RexxContextCommandHandler * handler
Definition: oorexxapi.h:400
RexxThreadContext * threadContext
Definition: oorexxapi.h:2972
ExitContextInterface * functions
Definition: oorexxapi.h:2973
ValueDescriptor * arguments
Definition: oorexxapi.h:2974
void * applicationData
Definition: oorexxapi.h:684
RexxInstanceInterface * functions
Definition: oorexxapi.h:683
void(RexxEntry *Halt)(RexxInstance *)
void(RexxEntry *Terminate)(RexxInstance *)
wholenumber_t interfaceVersion
Definition: oorexxapi.h:439
size_t(RexxEntry *LanguageLevel)(RexxInstance *)
RexxThreadContext ** size_t(RexxEntry *InterpreterVersion)(RexxInstance *)
logical_t(RexxEntry *AttachThread)(RexxInstance *
RexxPackageEntry * table
Definition: oorexxapi.h:413
const char * registeredName
Definition: oorexxapi.h:412
MethodContextInterface * functions
Definition: oorexxapi.h:1431
RexxThreadContext * threadContext
Definition: oorexxapi.h:1430
ValueDescriptor * arguments
Definition: oorexxapi.h:1432
ValueDescriptor option
Definition: oorexxapi.h:419
const char * optionName
Definition: oorexxapi.h:418
const char * registeredName
Definition: oorexxapi.h:406
RexxThreadInterface * functions
Definition: oorexxapi.h:717
RexxInstance * instance
Definition: oorexxapi.h:716
int32_t * logical_t(RexxEntry *ObjectToUnsignedInt32)(RexxThreadContext *
size_t(RexxEntry *ArraySize)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetPackagePublicClasses)(RexxThreadContext *
logical_t(RexxEntry *IsRoutine)(RexxThreadContext *
logical_t(RexxEntry *CheckCondition)(RexxThreadContext *)
RexxPackageObject(RexxEntry *GetRoutinePackage)(RexxThreadContext *
logical_t(RexxEntry *IsString)(RexxThreadContext *
void(RexxEntry *SetStemArrayElement)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetConditionInfo)(RexxThreadContext *)
logical_t(RexxEntry *ObjectToValue)(RexxThreadContext *
RexxStringObject(RexxEntry *StringLower)(RexxThreadContext *
void(RexxEntry *DetachThread)(RexxThreadContext *)
RexxStemObject(RexxEntry *NewStem)(RexxThreadContext *
size_t(RexxEntry *MutableBufferLength)(RexxThreadContext *
RexxArrayObject(RexxEntry *NewArray)(RexxThreadContext *
RexxObjectPtr(RexxEntry *ArrayAt)(RexxThreadContext *
RexxObjectPtr(RexxEntry *ValueToObject)(RexxThreadContext *
int32_t uint32_t uintptr_t intptr_t * logical_t(RexxEntry *ObjectToLogical)(RexxThreadContext *
wholenumber_t interfaceVersion
Definition: oorexxapi.h:457
logical_t(RexxEntry *IsMutableBuffer)(RexxThreadContext *
void(RexxEntry *ArrayPut)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetPackagePublicRoutines)(RexxThreadContext *
RexxArrayObject(RexxEntry *ArrayOfThree)(RexxThreadContext *
logical_t(RexxEntry *HasMethod)(RexxThreadContext *
void(RexxEntry *RaiseException0)(RexxThreadContext *
RexxStringObject(RexxEntry *NewString)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetPackageClasses)(RexxThreadContext *
void(RexxEntry *DropStemElement)(RexxThreadContext *
void(RexxEntry *ReleaseGlobalReference)(RexxThreadContext *
RexxArrayObject(RexxEntry *ArrayOfFive)(RexxThreadContext *
logical_t(RexxEntry *IsStem)(RexxThreadContext *
CSTRING RexxPackageEntry CSTRING
Definition: oorexxapi.h:482
size_t(RexxEntry *ArrayAppend)(RexxThreadContext *
RexxObjectPtr(RexxEntry *SupplierItem)(RexxThreadContext *
POINTER(RexxEntry *SetMutableBufferCapacity)(RexxThreadContext *
void(RexxEntry *RaiseException2)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *NewDirectory)(RexxThreadContext *)
RexxObjectPtr(RexxEntry *UintptrToObject)(RexxThreadContext *
void(RexxEntry *RaiseException4)(RexxThreadContext *
logical_t(RexxEntry *ObjectToWholeNumber)(RexxThreadContext *
void(RexxEntry *SupplierNext)(RexxThreadContext *
size_t(RexxEntry *MutableBufferCapacity)(RexxThreadContext *
logical_t(RexxEntry *RegisterLibrary)(RexxThreadContext *
RexxMethodObject(RexxEntry *NewMethod)(RexxThreadContext *
void(RexxEntry *DropStemArrayElement)(RexxThreadContext *
RexxStringObject RexxNullString
Definition: oorexxapi.h:604
logical_t(RexxEntry *IsBuffer)(RexxThreadContext *
RexxObjectPtr RexxFalse
Definition: oorexxapi.h:603
RexxObjectPtr(RexxEntry *DirectoryRemove)(RexxThreadContext *
CSTRING CSTRING d
Definition: oorexxapi.h:479
void(RexxEntry *RaiseException1)(RexxThreadContext *
POINTER(RexxEntry *MutableBufferData)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetLocalEnvironment)(RexxThreadContext *)
RexxObjectPtr(RexxEntry *SendMessage1)(RexxThreadContext *
POINTER(RexxEntry *PointerValue)(RexxThreadContext *
RexxObjectPtr(RexxEntry *CallRoutine)(RexxThreadContext *
POINTER(RexxEntry *ObjectToCSelfScoped)(RexxThreadContext *
RexxObjectPtr(RexxEntry *UnsignedInt32ToObject)(RexxThreadContext *
RexxStringObject(RexxEntry *StringUpper)(RexxThreadContext *
size_t(RexxEntry *ArrayItems)(RexxThreadContext *
logical_t(RexxEntry *LoadLibrary)(RexxThreadContext *
RexxArrayObject RexxArrayObject names
Definition: oorexxapi.h:575
void(RexxEntry *RaiseCondition)(RexxThreadContext *
logical_t(RexxEntry *IsOfType)(RexxThreadContext *
size_t(RexxEntry *ArrayAppendString)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetPackageRoutines)(RexxThreadContext *
int32_t uint32_t uintptr_t intptr_t logical_t logical_t
Definition: oorexxapi.h:520
logical_t(RexxEntry *IsArray)(RexxThreadContext *
int64_t * logical_t(RexxEntry *ObjectToUnsignedInt64)(RexxThreadContext *
RexxObjectPtr(RexxEntry *GetStemArrayElement)(RexxThreadContext *
CSTRING(RexxEntry *ObjectToStringValue)(RexxThreadContext *
RexxArrayObject(RexxEntry *ArrayOfFour)(RexxThreadContext *
void(RexxEntry *HaltThread)(RexxThreadContext *)
RexxRoutineObject(RexxEntry *NewRoutine)(RexxThreadContext *
RexxObjectPtr(RexxEntry *WholeNumberToObject)(RexxThreadContext *
RexxObjectPtr RexxTrue
Definition: oorexxapi.h:602
RexxObjectPtr(RexxEntry *CallProgram)(RexxThreadContext *
size_t(RexxEntry *SetMutableBufferLength)(RexxThreadContext *
RexxObjectPtr(RexxEntry *GetStemValue)(RexxThreadContext *
RexxArrayObject(RexxEntry *ArrayOfOne)(RexxThreadContext *
void(RexxEntry *RaiseException)(RexxThreadContext *
POINTER(RexxEntry *BufferStringData)(RexxThreadContext *
wholenumber_t * logical_t(RexxEntry *ObjectToStringSize)(RexxThreadContext *
RexxPointerObject(RexxEntry *NewPointer)(RexxThreadContext *
RexxObjectPtr(RexxEntry *DirectoryAt)(RexxThreadContext *
RexxArrayObject(RexxEntry *ArrayOfTwo)(RexxThreadContext *
wholenumber_t(RexxEntry *DisplayCondition)(RexxThreadContext *)
void(RexxEntry *RaiseException5)(RexxThreadContext *
RexxObjectPtr(RexxEntry *SendMessage2)(RexxThreadContext *
void(RexxEntry *DecodeConditionInfo)(RexxThreadContext *
logical_t(RexxEntry *ObjectToInt64)(RexxThreadContext *
RexxObjectPtr RexxNil
Definition: oorexxapi.h:601
RexxCondition * void(RexxEntry *ClearCondition)(RexxThreadContext *)
RexxStringObject(RexxEntry *NewStringFromAsciiz)(RexxThreadContext *
logical_t(RexxEntry *ObjectToDouble)(RexxThreadContext *
POINTER(RexxEntry *BufferData)(RexxThreadContext *
size_t(RexxEntry *BufferLength)(RexxThreadContext *
logical_t(RexxEntry *SupplierAvailable)(RexxThreadContext *
RexxObjectPtr(RexxEntry *SupplierIndex)(RexxThreadContext *
RexxBufferStringObject(RexxEntry *NewBufferString)(RexxThreadContext *
logical_t(RexxEntry *IsDirectory)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetPackageMethods)(RexxThreadContext *
RexxStringObject(RexxEntry *FinishBufferString)(RexxThreadContext *
logical_t(RexxEntry *IsInstanceOf)(RexxThreadContext *
POINTER(RexxEntry *ObjectToCSelf)(RexxThreadContext *
void(RexxEntry *ReleaseLocalReference)(RexxThreadContext *
RexxObjectPtr(RexxEntry *SendMessage0)(RexxThreadContext *
logical_t(RexxEntry *ObjectToInt32)(RexxThreadContext *
int64_t uint64_t int32_t
Definition: oorexxapi.h:513
logical_t(RexxEntry *IsMethod)(RexxThreadContext *
logical_t(RexxEntry *IsPointer)(RexxThreadContext *
RexxClassObject(RexxEntry *FindPackageClass)(RexxThreadContext *
ValueDescriptor ValueDescriptor size_t count
Definition: oorexxapi.h:504
int32_t uint32_t * logical_t(RexxEntry *ObjectToUintptr)(RexxThreadContext *
CSTRING(RexxEntry *StringData)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetAllStemElements)(RexxThreadContext *
wholenumber_t stringsize_t int64_t
Definition: oorexxapi.h:509
size_t(RexxEntry *StringLength)(RexxThreadContext *
void(RexxEntry *RaiseException3)(RexxThreadContext *
int32_t uint32_t uintptr_t * logical_t(RexxEntry *ObjectToIntptr)(RexxThreadContext *
RexxMutableBufferObject(RexxEntry *NewMutableBuffer)(RexxThreadContext *
RexxObjectPtr(RexxEntry *GetStemElement)(RexxThreadContext *
RexxObjectPtr(RexxEntry *UnsignedInt64ToObject)(RexxThreadContext *
size_t(RexxEntry *ArrayDimension)(RexxThreadContext *
ValueDescriptor * RexxObjectPtr(RexxEntry *StringSizeToObject)(RexxThreadContext *
RexxDirectoryObject(RexxEntry *GetGlobalEnvironment)(RexxThreadContext *)
RexxBufferObject(RexxEntry *NewBuffer)(RexxThreadContext *
#define REXXENTRY
unsigned short uint16_t
UINT_PTR uintptr_t
int int32_t
signed __int64 int64_t
unsigned int uint32_t
SSIZE_T ssize_t
short int16_t
INT_PTR intptr_t
unsigned char uint8_t
char int8_t
unsigned __int64 uint64_t