CPPCode.cpp
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.oorexx.org/license.html */
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 #include "RexxCore.h"
40 #include "CPPCode.hpp"
41 #include "ActivityManager.hpp"
42 #include "ProtectedObject.hpp"
43 #include "Interpreter.hpp"
45 #include "ActivationFrame.hpp"
46 
47 
48 /**
49  * Allocate a new CPP code object.
50  *
51  * @param size the allocation size.
52  *
53  * @return A pointer to the newly allocated object.
54  */
55 void *CPPCode::operator new(size_t size)
56 {
57  // just allocate ane return
58  return new_object(size, T_CPPCode);
59 }
60 
61 
62 /**
63  * Constructor for a CPPCode object.
64  *
65  * @param index The index of the method used to restore unflattened internal method.
66  * @param entry The entry point address.
67  * @param argcount The number of arguments this method expects.
68  * @param passNamedArgs True if the named arguments must be passed.
69  */
70 CPPCode::CPPCode(size_t index, PCPPM entry, size_t argcount, bool passNamedArgs)
71 {
72  methodIndex = (uint16_t)index;
73  cppEntry = entry;
74  argumentCount = (uint16_t)argcount;
75  passNamedArguments = passNamedArgs;
76 }
77 
78 
79 void CPPCode::liveGeneral(int reason)
80 /******************************************************************************/
81 /* Function: Generalized object marking */
82 /******************************************************************************/
83 {
84  if (reason == RESTORINGIMAGE) /* restoring the image? */
85  {
86  this->cppEntry = exportedMethods[this->methodIndex];
87  }
88 }
89 
90 
92 /******************************************************************************/
93 /* Function: unflatten an object */
94 /******************************************************************************/
95 {
96  this->cppEntry = exportedMethods[this->methodIndex];
97  return (RexxObject *)this;
98 }
99 
100 
101 /**
102  * Run (or call) a CPPMethod.
103  *
104  * @param activity The activity we're running under.
105  * @param method The method to run.
106  * @param receiver The receiver object.
107  * @param messageName
108  * The name used to invoke the message.
109  * @param argPtr The actual arguments.
110  * @param count The argument count.
111  * @param result The returned result.
112  */
113 void CPPCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
114  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
115 {
116  InternalActivationFrame frame(activity, messageName, receiver, method, argPtr, count, named_count);
117  PCPPM methodEntry = this->cppEntry; /* get the entry point */
118  /* expecting an array? */
119  /* expecting a pointer/count pair? */
120  if (this->argumentCount == A_COUNT)
121  {
122  // Here, named arguments are automatically supported
123  /* we can pass this right on */
124  result = (receiver->*((PCPPMC1)methodEntry))(argPtr, count, named_count);
125  }
126  else
127  {
128  if (count > argumentCount)
129  {
131  }
132 
133  // JLF: example with UNKNOWN method
134  // RexxObject::processUnknown : put all the positional arguments in the 2nd arg, put all the named arguments in the named argument NAMEDARGUMENT
135  // calls RexxMethod::run : forward the 2 positional args + 1 named arg to the code object
136  // calls CPPCode::run : call a CPP method by passing the positional & named args as C++ parameters,
137  // calls RexxObject::unknownRexx : forward to the virtual function (message, arguments, namedArguments)
138  // calls RexxInteger::unknown : just reissue to the string value (message, arguments, namedArguments)
139  // calls RexxObject::sendMessage(RexxString *message, RexxArray *args, RexxDirectory *namedArgs)
140  // calls RexxObject::sendMessage(RexxString *message, RexxArray *arguments, ProtectedObject &result
141  // Now we are back to the standard way to pass arguments:
142  // passing arguments->data(), arguments->size()
143  // where the named arguments are after the positional arguments.
144 
145  // JLF: I don't understand why this temporary list is needed...
146  // ha, yes: it's to pass NULL for the omitted parameters at the end.
147  // Not needed when count == argumentCount, because here no omitted paramaters.
148 
149  // This is the temporary list of positional arguments
150  RexxObject * argument_list[7];
151  if (count < argumentCount) /* need to pad these out? */
152  {
153  // null out the argument list
154  memset(argument_list, 0, sizeof(argument_list));
155  // and copy over the provided argument pointers
156  memcpy(argument_list, argPtr, count * sizeof(RexxObject *));
157  // now switch the argument pointer to the temporary
158  argPtr = &argument_list[0];
159  }
160 
161  // now we make the actual call
162 
163  if (passNamedArguments == false) // if no need to pass named arguments
164  {
165  switch (argumentCount)
166  {
167  case 0: /* zero */
168  result = (receiver->*((PCPPM0)methodEntry))();
169  break;
170 
171  case 1:
172  result = (receiver->*((PCPPM1)methodEntry))(argPtr[0]);
173  break;
174 
175  case 2:
176  result = (receiver->*((PCPPM2)methodEntry))(argPtr[0], argPtr[1]);
177  break;
178 
179  case 3:
180  result = (receiver->*((PCPPM3)methodEntry))(argPtr[0], argPtr[1], argPtr[2]);
181  break;
182 
183  case 4:
184  result = (receiver->*((PCPPM4)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3]);
185  break;
186 
187  case 5:
188  result = (receiver->*((PCPPM5)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4]);
189  break;
190 
191  case 6:
192  result = (receiver->*((PCPPM6)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5]);
193  break;
194 
195  case 7:
196  result = (receiver->*((PCPPM7)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5], argPtr[6]);
197  break;
198  }
199  }
200  else
201  {
202  RexxObject **named_argPtr = argPtr + count;
203  switch (argumentCount)
204  {
205  case 0: /* zero */
206  result = (receiver->*((PCPPM0N)methodEntry))(named_argPtr, named_count);
207  break;
208 
209  case 1:
210  result = (receiver->*((PCPPM1N)methodEntry))(argPtr[0],
211  named_argPtr, named_count);
212  break;
213 
214  case 2:
215  result = (receiver->*((PCPPM2N)methodEntry))(argPtr[0], argPtr[1],
216  named_argPtr, named_count);
217  break;
218 
219  case 3:
220  result = (receiver->*((PCPPM3N)methodEntry))(argPtr[0], argPtr[1], argPtr[2],
221  named_argPtr, named_count);
222  break;
223 
224  case 4:
225  result = (receiver->*((PCPPM4N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3],
226  named_argPtr, named_count);
227  break;
228 
229  case 5:
230  result = (receiver->*((PCPPM5N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4],
231  named_argPtr, named_count);
232  break;
233 
234  case 6:
235  result = (receiver->*((PCPPM6N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5],
236  named_argPtr, named_count);
237  break;
238 
239  case 7:
240  result = (receiver->*((PCPPM7N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5], argPtr[6],
241  named_argPtr, named_count);
242  break;
243  }
244  }
245  }
246 }
247 
248 
249 /**
250  * Allocate a new attribute getter code object.
251  *
252  * @param size the allocation size.
253  *
254  * @return A pointer to the newly allocated object.
255  */
256 void *AttributeGetterCode::operator new(size_t size)
257 {
258  // just allocate ane return
259  return new_object(size, T_AttributeGetterCode);
260 }
261 
262 void AttributeGetterCode::live(size_t liveMark)
263 /******************************************************************************/
264 /* Function: Normal garbage collection live marking */
265 /******************************************************************************/
266 {
267  memory_mark(this->attribute);
268 }
269 
271 /******************************************************************************/
272 /* Function: Generalized object marking */
273 /******************************************************************************/
274 {
276 }
277 
279 /******************************************************************************/
280 /* Function: Flatten an object */
281 /******************************************************************************/
282 {
284 
285  flatten_reference(newThis->attribute, envelope);
286 
288 }
289 
290 
291 /**
292  * Execute an attribute-get operation.
293  *
294  * @param activity The current activity.
295  * @param method The method we're invoking.
296  * @param receiver The receiver object.
297  * @param messageName
298  * The name of the message used to invoke the method.
299  * @param argPtr The pointer to the arguments.
300  * @param count The argument count.
301  * @param result The returned result.
302  */
303 void AttributeGetterCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
304  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
305 {
306  // validate the number of arguments
307  if (count > 0)
308  {
310  }
311  // this is simplier if the method is not guarded
312  if (!method->isGuarded())
313  {
314  result = attribute->getValue(receiver->getObjectVariables(method->getScope()));
315  }
316  else {
317  // get the variable pool and get the guard lock
318  RexxVariableDictionary *objectVariables = receiver->getObjectVariables(method->getScope());
319  objectVariables->reserve(activity);
320  result = attribute->getValue(objectVariables);
321  // and ensure we release this afterwards
322  objectVariables->release(activity);
323  }
324 }
325 
326 
327 /**
328  * Allocate a new attribute setter code object.
329  *
330  * @param size the allocation size.
331  *
332  * @return A pointer to the newly allocated object.
333  */
334 void *AttributeSetterCode::operator new(size_t size)
335 {
336  // just allocate ane return
337  return new_object(size, T_AttributeSetterCode);
338 }
339 
340 
341 /**
342  * Execute an attribute-set operation.
343  *
344  * @param activity The current activity.
345  * @param method The method we're invoking.
346  * @param receiver The receiver object.
347  * @param messageName
348  * The name of the message used to invoke the method.
349  * @param argPtr The pointer to the arguments.
350  * @param count The argument count.
351  * @param result The returned result.
352  */
353 void AttributeSetterCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
354  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
355 {
356  // validate the number of arguments
357  if (count > 1)
358  {
359  reportException(Error_Incorrect_method_maxarg, OREF_positional, 1);
360  }
361 
362  if (count == 0 || *argPtr == OREF_NULL)
363  {
364  missingArgument(OREF_positional, 1);
365  }
366  // this is simplier if the method is not guarded
367  if (!method->isGuarded())
368  {
369  // go set the attribue
370  attribute->set(receiver->getObjectVariables(method->getScope()), argPtr[0]);
371  }
372  else {
373  // get the variable pool and get the guard lock
374  RexxVariableDictionary *objectVariables = receiver->getObjectVariables(method->getScope());
375  objectVariables->reserve(activity);
376  // go set the attribue
377  attribute->set(objectVariables, argPtr[0]);
378  // and ensure we release this afterwards
379  objectVariables->release(activity);
380  }
381 }
382 
383 
384 /**
385  * Allocate a new constant getter code object.
386  *
387  * @param size the allocation size.
388  *
389  * @return A pointer to the newly allocated object.
390  */
391 void *ConstantGetterCode::operator new(size_t size)
392 {
393  // just allocate ane return
394  return new_object(size, T_AttributeGetterCode);
395 }
396 
397 
398 void ConstantGetterCode::live(size_t liveMark)
399 /******************************************************************************/
400 /* Function: Normal garbage collection live marking */
401 /******************************************************************************/
402 {
403  memory_mark(this->constantValue);
404 }
405 
407 /******************************************************************************/
408 /* Function: Generalized object marking */
409 /******************************************************************************/
410 {
412 }
413 
415 /******************************************************************************/
416 /* Function: Flatten an object */
417 /******************************************************************************/
418 {
420 
421  flatten_reference(newThis->constantValue, envelope);
422 
424 }
425 
426 
427 /**
428  * Execute a constant get operation
429  *
430  * @param activity The current activity.
431  * @param method The method we're invoking.
432  * @param receiver The receiver object.
433  * @param messageName
434  * The name of the message used to invoke the method.
435  * @param argPtr The pointer to the arguments.
436  * @param count The argument count.
437  * @param result The returned result.
438  */
439 void ConstantGetterCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
440  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
441 {
442  // validate the number of arguments
443  if (count > 0)
444  {
446  }
447  result = constantValue;
448 }
449 
450 
451 /**
452  * Allocate a new abstract code object.
453  *
454  * @param size the allocation size.
455  *
456  * @return A pointer to the newly allocated object.
457  */
458 void *AbstractCode::operator new(size_t size)
459 {
460  // just allocate ane return
461  return new_object(size, T_AbstractCode);
462 }
463 
464 
465 /**
466  * Execute a constant get operation
467  *
468  * @param activity The current activity.
469  * @param method The method we're invoking.
470  * @param receiver The receiver object.
471  * @param messageName
472  * The name of the message used to invoke the method.
473  * @param argPtr The pointer to the arguments.
474  * @param count The argument count.
475  * @param result The returned result.
476  */
477 void AbstractCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
478  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
479 {
481 }
482 
483 
484 #include "RexxCore.h"
485 #include "TableClass.hpp"
486 #include "RexxMemory.hpp"
487 #include "RexxBehaviour.hpp"
488 #include "ClassClass.hpp"
489 #include "NumberStringClass.hpp"
490 #include "IntegerClass.hpp"
491 #include "StringClass.hpp"
492 #include "MutableBufferClass.hpp"
493 #include "ArrayClass.hpp"
494 #include "DirectoryClass.hpp"
495 #include "RelationClass.hpp"
496 #include "ListClass.hpp"
497 #include "QueueClass.hpp"
498 #include "SupplierClass.hpp"
499 #include "MethodClass.hpp"
500 #include "RoutineClass.hpp"
501 #include "PackageClass.hpp"
502 #include "RexxEnvelope.hpp"
503 #include "MessageClass.hpp"
504 #include "StemClass.hpp"
505 #include "RexxMisc.hpp"
506 #include "RexxNativeCode.hpp"
507 #include "RexxActivity.hpp"
508 #include "ActivityManager.hpp"
509 #include "RexxNativeActivation.hpp"
511 #include "ExpressionVariable.hpp"
512 #include "RexxLocalVariables.hpp"
513 #include "ProtectedObject.hpp"
514 #include "PointerClass.hpp"
515 #include "BufferClass.hpp"
516 #include "WeakReferenceClass.hpp"
517 #include "ContextClass.hpp"
518 #include "StackFrameClass.hpp"
519 #include "BlockClass.hpp"
520 
521 PCPPM CPPCode::exportedMethods[] = /* start of exported methods table */
522 {
554 
556 
557 CPPM(RexxClass::setRexxDefined), /* Class methods */
583 
585 
586 CPPM(RexxArray::sizeRexx), /* Array methods */
616 
620 
621 CPPM(RexxDirectory::atRexx), /* Directory methods */
639 
641 
642 CPPM(RexxInteger::plus), /* Integer methods */
678 
679 CPPM(RexxList::value), /* list methods */
701 
704 
705 CPPM(RexxMessage::notify), /* Message methods */
715 
717 
718 CPPM(RexxMethod::setUnguardedRexx), /* Method methods */
728 
732 
736 
740 
767 
769 
770 CPPM(RexxNumberString::formatRexx), /* NumberString methods */
808 
809 CPPM(RexxQueue::supplier), /* Queue methods */
827 
830 
831 CPPM(RexxStem::bracket), /* Stem methods */
846 
848 
849 CPPM(RexxString::lengthRexx), /* String methods */
884 
885  /* All BIF methods start here. They */
886  /* will be arranged according to the*/
887  /* they are defined in. */
888 
889  /* following methods are in OKBSUBS */
901 
902  /* following methods are in OKBWORD */
913 
914  /* following methods are in OKBMISC */
915 
932 
933  /* following methods are in OKBBITS */
937 
938  /* following methods are in OKBCONV */
939 
956 
965  /* End of BIF methods */
967 
1007 
1008 CPPM(RexxSupplier::available), /* Supplier methods */
1013 
1015 
1016  /* Table methods */
1033 
1036 
1038 
1039 CPPM(RexxRelation::put), /* Relation methods */
1046 
1048 
1049 CPPM(RexxLocal::local), /* the .local environment methods */
1050 
1055 
1057 
1060 
1079 
1088 
1096 
1097 NULL /* final terminating method */
1098 };
1099 
1100 
1101 /**
1102  * Resolve the entry point of a CPP method into a CPPCode wrapper
1103  * for that method.
1104  *
1105  * @param name The name of the method (used for error reporting)
1106  * @param targetMethod
1107  * The method to wrapper
1108  * @param argumentCount
1109  * The argument descriptor.
1110  *
1111  * @return A CPPCode object for the wrappered method.
1112  */
1113 CPPCode *CPPCode::resolveExportedMethod(const char *name, PCPPM targetMethod, size_t argumentCount, bool passNamedArgs)
1114 {
1115  for (size_t i = 0; exportedMethods[i] != NULL; i++)
1116  {
1117  // found the one we need? Wrap a CPPCode object around it
1118  if (exportedMethods[i] == targetMethod)
1119  {
1120  return new CPPCode(i, targetMethod, argumentCount, passNamedArgs);
1121  }
1122  }
1123 
1124  char buffer[256];
1125  sprintf(buffer,"Unresolved exported method: %s", name);
1126  /* this is a bad error */
1127  Interpreter::logicError(buffer);
1128  return NULL; /* needs a return value */
1129 }
void reportException(wholenumber_t error)
void missingArgument(RexxString *kind, size_t argumentPosition)
@ T_CPPCode
@ T_AttributeSetterCode
@ T_AttributeGetterCode
@ T_AbstractCode
RexxObject *(RexxObject::* PCPPM7)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxObject *(RexxObject::* PCPPM5N)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM7N)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM2N)(RexxObject *, RexxObject *, RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM1N)(RexxObject *, RexxObject **, size_t)
#define CPPM(n)
RexxObject *(RexxObject::* PCPPM4N)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM1)(RexxObject *)
RexxObject *(RexxObject::* PCPPM3)(RexxObject *, RexxObject *, RexxObject *)
RexxObject *(RexxObject::* PCPPM5)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxObject *(RexxObject::* PCPPM2)(RexxObject *, RexxObject *)
RexxObject *(RexxObject::* PCPPMC1)(RexxObject **, size_t, size_t)
RexxObject *(RexxObject::* PCPPM)()
RexxObject *(RexxObject::* PCPPM6)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxObject *(RexxObject::* PCPPM4)(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxObject *(RexxObject::* PCPPM6N)(RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject *, RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM3N)(RexxObject *, RexxObject *, RexxObject *, RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM0N)(RexxObject **, size_t)
RexxObject *(RexxObject::* PCPPM0)()
const size_t A_COUNT
Definition: RexxCore.h:250
#define OREF_NULL
Definition: RexxCore.h:60
#define Error_Incorrect_method_abstract
#define Error_Incorrect_method_maxarg
#define memory_mark(oref)
Definition: RexxMemory.hpp:445
RexxObject * new_object(size_t s)
Definition: RexxMemory.hpp:431
#define flatten_reference(oref, envel)
Definition: RexxMemory.hpp:493
#define memory_mark_general(oref)
Definition: RexxMemory.hpp:446
@ RESTORINGIMAGE
Definition: RexxMemory.hpp:116
#define cleanUpFlatten
Definition: RexxMemory.hpp:479
#define setUpFlatten(type)
Definition: RexxMemory.hpp:473
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:477
void liveGeneral(int reason)
Definition: CPPCode.cpp:270
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:303
void live(size_t)
Definition: CPPCode.cpp:262
RexxVariableBase * attribute
Definition: CPPCode.hpp:93
void flatten(RexxEnvelope *)
Definition: CPPCode.cpp:278
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:353
PackageClass * getPackage()
RexxArray * source()
static CPPCode * resolveExportedMethod(const char *, PCPPM targetMethod, size_t argcount, bool passNamedArgs)
Definition: CPPCode.cpp:1113
uint16_t methodIndex
Definition: CPPCode.hpp:67
bool passNamedArguments
Definition: CPPCode.hpp:69
CPPCode(size_t, PCPPM, size_t, bool)
Definition: CPPCode.cpp:70
uint16_t argumentCount
Definition: CPPCode.hpp:68
RexxObject * unflatten(RexxEnvelope *envelope)
Definition: CPPCode.cpp:91
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:113
PCPPM cppEntry
Definition: CPPCode.hpp:70
static PCPPM exportedMethods[]
Definition: CPPCode.hpp:64
void liveGeneral(int reason)
Definition: CPPCode.cpp:79
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:439
void liveGeneral(int reason)
Definition: CPPCode.cpp:406
void live(size_t)
Definition: CPPCode.cpp:398
void flatten(RexxEnvelope *)
Definition: CPPCode.cpp:414
RexxObject * constantValue
Definition: CPPCode.hpp:133
static void logicError(const char *desc)
RexxString * getSourceLineRexx(RexxObject *)
RexxObject * loadLibrary(RexxString *name)
RexxObject * addClass(RexxString *name, RexxClass *clazz)
RexxArray * getImportedPackages()
RexxObject * form()
RexxObject * addPublicClass(RexxString *name, RexxClass *clazz)
RexxObject * trace()
RexxObject * digits()
RexxDirectory * getImportedRoutines()
RexxClass * findClassRexx(RexxString *name)
RexxDirectory * getRoutines()
RexxDirectory * getMethods()
PackageClass * loadPackage(RexxString *name, RexxArray *source)
RexxObject * addPackage(PackageClass *package)
RoutineClass * findRoutineRexx(RexxString *name)
RexxObject * fuzz()
RexxDirectory * getClasses()
RexxObject * addRoutine(RexxString *name, RoutineClass *routine)
RexxDirectory * getPublicClasses()
RexxString * getName()
PackageClass * newRexx(RexxObject **init_args, size_t argCount, size_t named_argCount)
RexxArray * getSource()
RexxInteger * getSourceSize()
RexxObject * setSecurityManager(RexxObject *)
RexxObject * addPublicRoutine(RexxString *name, RoutineClass *routine)
RexxDirectory * getImportedClasses()
RexxDirectory * getPublicRoutines()
RexxObject * lastItem()
RexxObject * isEmpty()
Definition: ArrayClass.cpp:301
RexxObject * getRexx(RexxObject **, size_t, size_t)
Definition: ArrayClass.cpp:506
RexxObject * insertRexx(RexxObject *_value, RexxObject *index)
Definition: ArrayClass.cpp:344
RexxObject * of(RexxObject **, size_t, size_t)
RexxObject * supplier(RexxObject *maxItems=OREF_NULL)
Definition: ArrayClass.cpp:786
RexxObject * firstRexx()
RexxInteger * sizeRexx()
RexxObject * putRexx(RexxObject **, size_t, size_t)
Definition: ArrayClass.cpp:228
RexxObject * newRexx(RexxObject **, size_t, size_t)
RexxArray * allItems(RexxObject *maxItems=OREF_NULL)
RexxObject * nextRexx(RexxObject **, size_t, size_t)
RexxArray * allIndexes(RexxObject *maxIndexes=OREF_NULL)
RexxObject * deleteRexx(RexxObject *index)
Definition: ArrayClass.cpp:385
RexxObject * appendRexx(RexxObject *)
Definition: ArrayClass.cpp:314
RexxObject * itemsRexx()
Definition: ArrayClass.cpp:685
RexxObject * empty()
Definition: ArrayClass.cpp:273
RexxObject * index(RexxObject *)
RexxArray * stableSortRexx()
RexxObject * removeItem(RexxObject *)
RexxObject * hasItem(RexxObject *)
RexxObject * removeRexx(RexxObject **, size_t, size_t)
Definition: ArrayClass.cpp:626
RexxObject * lastRexx()
RexxObject * fill(RexxObject *)
Definition: ArrayClass.cpp:253
RexxObject * getDimensions()
Definition: ArrayClass.cpp:714
RexxArray * stableSortWithRexx(RexxObject *comparator)
RexxObject * dimension(RexxObject *)
Definition: ArrayClass.cpp:729
RexxObject * hasIndexRexx(RexxObject **, size_t, size_t)
RexxObject * sectionRexx(RexxObject *, RexxObject *)
RexxObject * previousRexx(RexxObject **, size_t, size_t)
RexxString * toString(RexxString *, RexxString *)
RexxObject * firstItem()
RexxString * getKind()
Definition: BlockClass.hpp:105
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
Definition: BlockClass.cpp:230
RexxObject * getVariables()
Definition: BlockClass.hpp:104
RexxObject * getRawExecutable()
Definition: BlockClass.hpp:106
PackageClass * getPackage()
Definition: BlockClass.hpp:103
RexxObject * copyRexx()
Definition: BlockClass.cpp:244
RexxArray * getSource()
Definition: BlockClass.hpp:102
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxClass * newRexx(RexxObject **args, size_t argCount, size_t named_argCount)
RexxObject * deleteMethod(RexxString *)
Definition: ClassClass.cpp:783
RexxClass * getSuperClass()
Definition: ClassClass.cpp:303
RexxMethod * method(RexxString *)
Definition: ClassClass.cpp:812
RexxClass * getMetaClass()
Definition: ClassClass.cpp:279
RexxObject * inherit(RexxClass *, RexxClass *)
void defmeths(RexxTable *)
Definition: ClassClass.cpp:348
RexxString * defaultNameRexx()
RexxObject * notEqual(RexxObject *)
Definition: ClassClass.cpp:223
RexxArray * getSubClasses()
Definition: ClassClass.cpp:328
void removeClassMethod(RexxString *method_name)
Definition: ClassClass.cpp:769
RexxClass * getBaseClass()
Definition: ClassClass.cpp:271
RexxObject * defineMethod(RexxString *, RexxMethod *)
Definition: ClassClass.cpp:623
RexxArray * getSuperClasses()
Definition: ClassClass.cpp:318
RexxObject * isSubclassOf(RexxClass *other)
RexxObject * enhanced(RexxObject **, size_t, size_t)
RexxInteger * queryMixinClass()
Definition: ClassClass.cpp:245
RexxObject * equal(RexxObject *)
Definition: ClassClass.cpp:201
RexxObject * defineMethods(RexxTable *)
Definition: ClassClass.cpp:695
RexxObject * setRexxDefined()
Definition: ClassClass.cpp:262
RexxObject * defineClassMethod(RexxString *method_name, RexxMethod *newMethod)
Definition: ClassClass.cpp:742
RexxSupplier * methods(RexxClass *)
Definition: ClassClass.cpp:831
RexxObject * strictEqual(RexxObject *)
Definition: ClassClass.cpp:164
RexxObject * uninherit(RexxClass *)
RexxClass * mixinclass(RexxString *, RexxClass *, RexxTable *)
RexxString * getId()
Definition: ClassClass.cpp:254
RexxClass * subclass(RexxString *, RexxClass *, RexxTable *)
RexxObject * getFuzz()
RexxObject * copyRexx()
RexxObject * getDigits()
RexxObject * getForm()
RexxObject * getArgs()
RexxObject * getLine()
RexxObject * setArgs(RexxObject *, RexxObject **, size_t)
RexxObject * getRS()
PackageClass * getPackage()
RexxObject * getName()
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxObject * getExecutable()
RexxObject * getDigitsPropagate()
RexxObject * getVariables()
RexxObject * getParentContextObject()
RexxObject * getStackFrames()
RexxObject * getCondition()
RexxObject * getNamedArgs()
RexxObject * hasItem(RexxObject *)
RexxArray * allIndexes()
RexxObject * setMethod(RexxString *, RexxMethod *)
RexxObject * indexRexx(RexxObject *)
RexxArray * allItems()
RexxObject * setEntry(RexxString *, RexxObject *)
RexxObject * removeItem(RexxObject *)
RexxObject * hasEntry(RexxString *)
RexxObject * put(RexxObject *, RexxString *)
RexxObject * isEmpty()
RexxObject * newRexx(RexxObject **init_args, size_t, size_t)
RexxSupplier * supplier()
RexxObject * empty()
RexxObject * atRexx(RexxString *)
RexxObject * entryRexx(RexxString *)
RexxObject * itemsRexx()
RexxObject * hasIndex(RexxString *)
RexxObject * removeRexx(RexxString *)
RexxObject * removeRexx(RexxObject *)
RexxObject * getRexx(RexxObject *)
RexxObject * hasItemRexx(RexxObject *)
RexxObject * merge(RexxHashTableCollection *)
RexxObject * allAt(RexxObject *)
RexxObject * indexRexx(RexxObject *value)
RexxSupplier * supplier()
RexxObject * hasIndexRexx(RexxObject *)
RexxObject * putRexx(RexxObject *, RexxObject *)
RexxObject * addRexx(RexxObject *, RexxObject *)
RexxObject * removeItemRexx(RexxObject *value)
RexxObject * newRexx(RexxObject **, size_t, size_t)
RexxInteger * isLessOrEqual(RexxObject *)
RexxObject * xorOp(RexxObject *)
RexxInteger * equal(RexxObject *)
RexxInteger * isLessThan(RexxObject *)
RexxInteger * strictGreaterOrEqual(RexxObject *)
RexxInteger * isGreaterThan(RexxObject *)
RexxInteger * notEqual(RexxObject *)
RexxObject * power(RexxObject *)
RexxObject * plus(RexxInteger *)
RexxObject * remainder(RexxInteger *)
RexxObject * minus(RexxInteger *)
RexxObject * notOp()
RexxObject * ceiling()
RexxObject * Max(RexxObject **, size_t, size_t)
RexxObject * round()
RexxObject * d2x(RexxObject *)
RexxInteger * strictGreaterThan(RexxObject *)
RexxInteger * strictLessOrEqual(RexxObject *)
RexxInteger * strictLessThan(RexxObject *)
RexxObject * trunc(RexxObject *)
RexxObject * Min(RexxObject **, size_t, size_t)
RexxInteger * isGreaterOrEqual(RexxObject *)
RexxObject * d2c(RexxObject *)
RexxClass * classObject()
RexxObject * andOp(RexxObject *)
RexxObject * multiply(RexxInteger *)
RexxInteger * strictNotEqual(RexxObject *)
RexxObject * orOp(RexxObject *)
RexxObject * hashCode()
RexxObject * sign()
RexxObject * abs()
RexxObject * format(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxInteger * strictEqual(RexxObject *)
RexxObject * integerDivide(RexxInteger *)
RexxObject * floor()
RexxObject * divide(RexxInteger *)
virtual RexxObject * getValue(RexxActivation *)
RexxObject * lastRexx()
Definition: ListClass.cpp:728
RexxObject * append(RexxObject *)
Definition: ListClass.cpp:538
RexxObject * value(RexxObject *)
Definition: ListClass.cpp:246
RexxArray * allIndexes()
Definition: ListClass.cpp:938
RexxArray * allItems()
Definition: ListClass.cpp:888
RexxObject * next(RexxObject *)
Definition: ListClass.cpp:744
RexxObject * hasIndex(RexxObject *)
Definition: ListClass.cpp:845
RexxObject * lastItem()
Definition: ListClass.cpp:697
RexxObject * previous(RexxObject *)
Definition: ListClass.cpp:769
RexxObject * removeItem(RexxObject *)
Definition: ListClass.cpp:1023
RexxList * classOf(RexxObject **, size_t, size_t)
Definition: ListClass.cpp:1242
RexxObject * hasItem(RexxObject *)
Definition: ListClass.cpp:994
RexxObject * put(RexxObject *, RexxObject *)
Definition: ListClass.cpp:289
RexxObject * itemsRexx()
Definition: ListClass.cpp:1148
RexxObject * index(RexxObject *)
Definition: ListClass.cpp:964
RexxObject * firstRexx()
Definition: ListClass.cpp:712
RexxObject * remove(RexxObject *)
Definition: ListClass.cpp:630
RexxList * newRexx(RexxObject **, size_t, size_t)
Definition: ListClass.cpp:1215
RexxObject * isEmpty()
Definition: ListClass.cpp:926
RexxObject * section(RexxObject *, RexxObject *)
Definition: ListClass.cpp:309
RexxObject * empty()
Definition: ListClass.cpp:908
RexxObject * insertRexx(RexxObject *, RexxObject *)
Definition: ListClass.cpp:518
RexxObject * firstItem()
Definition: ListClass.cpp:682
RexxSupplier * supplier()
Definition: ListClass.cpp:1131
RexxDirectory * local()
Definition: RexxMisc.cpp:63
RexxString * messageName()
RexxObject * completed()
RexxObject * messageTarget()
RexxObject * result()
RexxObject * newRexx(RexxObject **, size_t, size_t)
RexxObject * notify(RexxMessage *)
RexxObject * start(RexxObject *)
RexxArray * arguments()
RexxObject * send(RexxObject *)
RexxObject * hasError()
RexxObject * errorCondition()
RexxMethod * newRexx(RexxObject **, size_t, size_t)
RexxObject * isPrivateRexx()
RexxObject * setPrivateRexx()
RexxObject * setUnguardedRexx()
RexxObject * setProtectedRexx()
RexxObject * setSecurityManager(RexxObject *)
RexxObject * isProtectedRexx()
RexxMethod * newFileRexx(RexxString *)
RexxObject * isGuardedRexx()
RexxMethod * loadExternalMethod(RexxString *name, RexxString *descriptor)
bool isGuarded()
RexxClass * getScope()
RexxObject * setGuardedRexx()
RexxMutableBuffer * newRexx(RexxObject **, size_t, size_t)
RexxInteger * caselessLastPos(RexxString *needle, RexxInteger *_start, RexxInteger *_range)
RexxMutableBuffer * caselessChangeStr(RexxString *needle, RexxString *newNeedle, RexxInteger *countArg)
RexxMutableBuffer * translate(RexxString *tableo, RexxString *tablei, RexxString *pad, RexxInteger *, RexxInteger *)
RexxString * subchar(RexxInteger *startPosition)
RexxMutableBuffer * mydelete(RexxObject *, RexxObject *)
RexxArray * subWords(RexxInteger *, RexxInteger *)
RexxMutableBuffer * changeStr(RexxString *needle, RexxString *newNeedle, RexxInteger *countArg)
RexxInteger * verify(RexxString *, RexxString *, RexxInteger *, RexxInteger *)
RexxMutableBuffer * lower(RexxInteger *_start, RexxInteger *_length)
RexxMutableBuffer * append(RexxObject *)
RexxInteger * posRexx(RexxString *needle, RexxInteger *_start, RexxInteger *_range)
RexxMutableBuffer * space(RexxInteger *space_count, RexxString *pad)
RexxMutableBuffer * delWord(RexxInteger *position, RexxInteger *plength)
RexxInteger * wordPos(RexxString *, RexxInteger *)
RexxInteger * caselessWordPos(RexxString *, RexxInteger *)
RexxInteger * caselessMatch(RexxInteger *start_, RexxString *other, RexxInteger *offset_, RexxInteger *len_)
RexxMutableBuffer * upper(RexxInteger *_start, RexxInteger *_length)
RexxInteger * countStrRexx(RexxString *needle)
RexxInteger * matchChar(RexxInteger *position_, RexxString *matchSet)
RexxObject * lengthRexx()
RexxInteger * caselessCountStrRexx(RexxString *needle)
RexxInteger * getBufferSize()
RexxInteger * wordLength(RexxInteger *)
RexxInteger * wordIndex(RexxInteger *)
RexxObject * setBufferSize(RexxInteger *)
RexxInteger * lastPos(RexxString *needle, RexxInteger *_start, RexxInteger *_range)
RexxMutableBuffer * overlay(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxInteger * caselessMatchChar(RexxInteger *position_, RexxString *matchSet)
RexxMutableBuffer * replaceAt(RexxObject *str, RexxObject *pos, RexxObject *len, RexxObject *pad)
RexxString * subWord(RexxInteger *, RexxInteger *)
RexxInteger * match(RexxInteger *start_, RexxString *other, RexxInteger *offset_, RexxInteger *len_)
RexxInteger * caselessPos(RexxString *needle, RexxInteger *_start, RexxInteger *_range)
RexxString * word(RexxInteger *)
RexxString * substr(RexxInteger *startPosition, RexxInteger *len, RexxString *pad)
RexxMutableBuffer * insert(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxInteger * strictGreaterThan(RexxObject *)
RexxObject * xorOp(RexxObject *)
RexxInteger * isLessThan(RexxObject *)
RexxInteger * strictEqual(RexxObject *)
RexxInteger * strictLessThan(RexxObject *)
RexxInteger * isGreaterThan(RexxObject *)
RexxNumberString * multiply(RexxObject *)
RexxNumberString * minus(RexxObject *)
RexxNumberString * Max(RexxObject **, size_t, size_t)
RexxString * formatRexx(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxClass * classObject()
RexxInteger * Sign()
RexxNumberString * Min(RexxObject **, size_t, size_t)
RexxString * d2xD2c(RexxObject *, bool)
RexxNumberString * abs()
RexxString * d2c(RexxObject *)
RexxInteger * strictLessOrEqual(RexxObject *)
RexxObject * ceiling()
RexxObject * hashCode()
RexxObject * andOp(RexxObject *)
RexxNumberString * integerDivide(RexxObject *)
RexxObject * orOp(RexxObject *)
RexxObject * trunc(RexxObject *)
RexxInteger * strictNotEqual(RexxObject *)
RexxNumberString * power(RexxObject *)
RexxNumberString * remainder(RexxObject *)
RexxObject * isInteger()
RexxInteger * strictGreaterOrEqual(RexxObject *)
RexxInteger * equal(RexxObject *)
RexxInteger * isGreaterOrEqual(RexxObject *)
RexxString * d2x(RexxObject *)
RexxInteger * isLessOrEqual(RexxObject *)
RexxNumberString * plus(RexxObject *)
RexxNumberString * divide(RexxObject *)
RexxInteger * notEqual(RexxObject *)
RexxObject * isInstanceOfRexx(RexxClass *)
RexxString * stringRexx()
RexxString * defaultNameRexx()
RexxMessage * start(RexxObject **, size_t, size_t)
RexxString * objectName()
RexxVariableDictionary * getObjectVariables(RexxObject *)
RexxObject * requestRexx(RexxString *)
RexxObject * sendWith(RexxObject *, RexxArray *, RexxObject **, size_t)
RexxString * concatRexx(RexxObject *)
RexxObject * unknownRexx(RexxString *, RexxArray *, RexxObject **, size_t)
RexxObject * hasMethodRexx(RexxString *)
RexxMethod * instanceMethodRexx(RexxString *)
RexxObject * unsetMethod(RexxString *)
RexxObject * strictEqual(RexxObject *)
RexxMessage * startWith(RexxObject *, RexxArray *, RexxObject **, size_t)
RexxObject * setMethod(RexxString *, RexxMethod *, RexxString *a=OREF_NULL)
RexxString * makeString()
RexxObject * send(RexxObject **, size_t, size_t)
RexxObject * objectNameEquals(RexxObject *)
RexxObject * equal(RexxObject *)
RexxObject * notEqual(RexxObject *other)
RexxInteger * identityHashRexx()
RexxObject * makeStringRexx()
RexxObject * newRexx(RexxObject **arguments, size_t argCount, size_t named_argCount)
RexxString * concatBlank(RexxObject *)
RexxSupplier * instanceMethodsRexx(RexxClass *)
RexxClass * classObject()
RexxObject * copyRexx()
RexxObject * run(RexxObject **, size_t, size_t)
RexxObject * makeArrayRexx()
RexxObject * strictNotEqual(RexxObject *other)
RexxObject * hashCode()
RexxObject * init()
RexxObject * notEqual(RexxObject *other)
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxObject * equal(RexxObject *)
RexxObject * isNull()
RexxObject * next(RexxObject *)
Definition: QueueClass.cpp:427
RexxObject * insert(RexxObject *, RexxObject *)
Definition: QueueClass.cpp:211
RexxObject * peek()
Definition: QueueClass.cpp:317
RexxObject * remove(RexxObject *)
Definition: QueueClass.cpp:294
RexxObject * lastRexx()
Definition: QueueClass.cpp:410
RexxObject * index(RexxObject *)
Definition: QueueClass.cpp:370
RexxObject * firstRexx()
Definition: QueueClass.cpp:393
RexxObject * pushRexx(RexxObject *)
Definition: QueueClass.cpp:78
RexxObject * hasindex(RexxObject *)
Definition: QueueClass.cpp:305
RexxObject * supplier()
Definition: QueueClass.cpp:326
RexxObject * at(RexxObject *)
Definition: QueueClass.cpp:181
RexxObject * previous(RexxObject *)
Definition: QueueClass.cpp:453
RexxObject * section(RexxObject *, RexxObject *)
Definition: QueueClass.cpp:512
RexxObject * pullRexx()
Definition: QueueClass.cpp:64
RexxArray * allIndexes()
Definition: QueueClass.cpp:345
RexxObject * put(RexxObject *, RexxObject *)
Definition: QueueClass.cpp:162
RexxObject * newRexx(RexxObject **, size_t, size_t)
Definition: QueueClass.cpp:586
RexxQueue * ofRexx(RexxObject **, size_t, size_t)
Definition: QueueClass.cpp:604
RexxObject * append(RexxObject *)
Definition: QueueClass.cpp:99
RexxObject * queueRexx(RexxObject *)
Definition: QueueClass.cpp:109
RexxObject * hasItem(RexxObject *, RexxObject *)
RexxObject * removeItemRexx(RexxObject *, RexxObject *)
RexxObject * removeAll(RexxObject *)
RexxObject * put(RexxObject *, RexxObject *)
RexxObject * allIndex(RexxObject *)
RexxObject * newRexx(RexxObject **, size_t, size_t)
RexxObject * itemsRexx()
Definition: StemClass.cpp:384
RexxObject * remove(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:296
RexxObject * newRexx(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:538
RexxObject * isEmpty()
Definition: StemClass.cpp:992
RexxObject * index(RexxObject *)
Definition: StemClass.cpp:368
RexxArray * allItems()
Definition: StemClass.cpp:906
RexxSupplier * supplier()
Definition: StemClass.cpp:1016
RexxObject * bracketEqual(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:390
RexxObject * empty()
Definition: StemClass.cpp:980
RexxObject * bracket(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:236
RexxDirectory * toDirectory()
Definition: StemClass.cpp:1059
RexxObject * removeItem(RexxObject *)
Definition: StemClass.cpp:345
RexxObject * request(RexxString *)
Definition: StemClass.cpp:509
RexxObject * hasIndex(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:265
RexxObject * hasItem(RexxObject *)
Definition: StemClass.cpp:330
RexxArray * allIndexes()
Definition: StemClass.cpp:1004
RexxInteger * isLessOrEqual(RexxObject *)
RexxArray * subWords(RexxInteger *, RexxInteger *)
RexxInteger * isLessThan(RexxObject *)
RexxString * concatRexx(RexxObject *)
RexxInteger * strictEqual(RexxObject *)
RexxString * c2x()
RexxInteger * caselessEquals(RexxString *other)
RexxObject * trunc(RexxInteger *decimals)
RexxString * changeStr(RexxString *, RexxString *, RexxInteger *)
RexxInteger * caselessLastPosRexx(RexxString *, RexxInteger *, RexxInteger *)
RexxObject * xorOp(RexxObject *)
RexxString * translate(RexxString *, RexxString *, RexxString *, RexxInteger *, RexxInteger *)
RexxObject * Min(RexxObject **args, size_t argCount, size_t named_argCount)
RexxString * bitOr(RexxString *, RexxString *)
RexxInteger * strictGreaterThan(RexxObject *)
RexxString * delstr(RexxInteger *, RexxInteger *)
RexxString * upperRexx(RexxInteger *, RexxInteger *)
RexxString * bitAnd(RexxString *, RexxString *)
RexxInteger * wordIndex(RexxInteger *)
RexxInteger * notEqual(RexxObject *)
RexxInteger * strictLessOrEqual(RexxObject *)
RexxString * overlay(RexxString *, RexxInteger *, RexxInteger *, RexxString *)
RexxObject * lengthRexx()
RexxInteger * abbrev(RexxString *, RexxInteger *)
RexxObject * format(RexxObject *Integers, RexxObject *Decimals, RexxObject *MathExp, RexxObject *ExpTrigger)
RexxString * b2x()
RexxInteger * caselessMatchChar(RexxInteger *position_, RexxString *matchSet)
RexxString * subWord(RexxInteger *, RexxInteger *)
RexxInteger * verify(RexxString *, RexxString *, RexxInteger *, RexxInteger *)
RexxInteger * caselessMatch(RexxInteger *start_, RexxString *other, RexxInteger *offset_, RexxInteger *len_)
RexxString * caselessChangeStr(RexxString *, RexxString *, RexxInteger *)
RexxString * space(RexxInteger *, RexxString *)
RexxString * encodeBase64()
RexxInteger * caselessPosRexx(RexxString *, RexxInteger *, RexxInteger *)
RexxObject * integerDivide(RexxObject *right)
RexxObject * remainder(RexxObject *right)
RexxString * d2x(RexxInteger *)
RexxObject * Max(RexxObject **args, size_t argCount, size_t named_argCount)
RexxObject * ceiling()
RexxInteger * match(RexxInteger *start_, RexxString *other, RexxInteger *offset_, RexxInteger *len_)
RexxString * concatBlank(RexxObject *)
RexxInteger * caselessCountStrRexx(RexxString *)
RexxString * d2c(RexxInteger *)
RexxInteger * lastPosRexx(RexxString *, RexxInteger *, RexxInteger *)
RexxString * x2dC2d(RexxInteger *, bool)
RexxInteger * compareToRexx(RexxString *other, RexxInteger *start_, RexxInteger *len_)
RexxInteger * compare(RexxString *, RexxString *)
RexxObject * plus(RexxObject *right)
RexxInteger * caselessCompare(RexxString *, RexxString *)
RexxInteger * strictLessThan(RexxObject *)
RexxInteger * strictGreaterOrEqual(RexxObject *)
RexxString * bitXor(RexxString *, RexxString *)
RexxString * word(RexxInteger *)
RexxString * x2d(RexxInteger *)
RexxString * left(RexxInteger *, RexxString *)
RexxInteger * words()
RexxInteger * matchChar(RexxInteger *position_, RexxString *matchSet)
RexxObject * notOp()
RexxInteger * equal(RexxObject *)
RexxObject * multiply(RexxObject *right)
RexxString * subchar(RexxInteger *)
RexxString * substr(RexxInteger *, RexxInteger *, RexxString *)
RexxString * replaceAt(RexxString *, RexxInteger *, RexxInteger *, RexxString *)
RexxObject * dataType(RexxString *)
RexxObject * andOp(RexxObject *)
RexxInteger * caselessWordPos(RexxString *, RexxInteger *)
RexxString * concatWith(RexxString *, char)
RexxString * c2d(RexxInteger *)
RexxInteger * caselessCompareToRexx(RexxString *other, RexxInteger *start_, RexxInteger *len_)
RexxObject * round()
RexxInteger * posRexx(RexxString *, RexxInteger *, RexxInteger *)
RexxInteger * wordLength(RexxInteger *)
RexxString * copies(RexxInteger *)
RexxString * right(RexxInteger *, RexxString *)
RexxString * x2b()
RexxString * x2c()
RexxString * reverse()
RexxObject * isInteger()
RexxInteger * isASCIIRexx()
RexxInteger * countStrRexx(RexxString *)
RexxInteger * wordPos(RexxString *, RexxInteger *)
RexxObject * floor()
RexxInteger * caselessAbbrev(RexxString *, RexxInteger *)
RexxInteger * isGreaterOrEqual(RexxObject *)
RexxObject * orOp(RexxObject *)
RexxString * newRexx(RexxObject **, size_t, size_t)
RexxObject * divide(RexxObject *right)
RexxString * insert(RexxString *, RexxInteger *, RexxInteger *, RexxString *)
RexxString * strip(RexxString *, RexxString *)
RexxString * delWord(RexxInteger *, RexxInteger *)
RexxInteger * equals(RexxString *other)
RexxObject * abs()
RexxInteger * isGreaterThan(RexxObject *)
RexxObject * power(RexxObject *right)
RexxString * decodeBase64()
RexxString * lowerRexx(RexxInteger *, RexxInteger *)
RexxInteger * strictNotEqual(RexxObject *)
RexxString * center(RexxInteger *, RexxString *)
RexxObject * sign()
RexxObject * minus(RexxObject *right)
RexxObject * newRexx(RexxObject **, size_t, size_t)
RexxObject * next()
RexxInteger * available()
RexxObject * value()
RexxObject * index()
RexxObject * initRexx(RexxArray *values, RexxArray *indexes)
RexxObject * newRexx(RexxObject **, size_t, size_t)
Definition: TableClass.cpp:187
RexxObject * itemsRexx()
Definition: TableClass.cpp:147
virtual void set(RexxActivation *, RexxObject *)
RexxObject * callRexx(RexxObject **, size_t, size_t)
RexxObject * setSecurityManager(RexxObject *)
RoutineClass * loadExternalRoutine(RexxString *name, RexxString *descriptor)
RexxObject * callWithRexx(RexxArray *, RexxObject **, size_t)
RoutineClass * newRexx(RexxObject **, size_t, size_t)
RoutineClass * newFileRexx(RexxString *)
RexxString * getType()
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxString * getTraceLine()
RexxArray * getArguments()
RexxObject * getLine()
RexxString * getName()
RexxObject * getTarget()
RexxObject * getExecutable()
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxObject * value()
ssize_t wholenumber_t
Definition: rexx.h:230
unsigned short uint16_t