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 #include "SourceFile.hpp"
47 
48 
49 /**
50  * Allocate a new CPP code object.
51  *
52  * @param size the allocation size.
53  *
54  * @return A pointer to the newly allocated object.
55  */
56 void *CPPCode::operator new(size_t size)
57 {
58  // just allocate ane return
59  return new_object(size, T_CPPCode);
60 }
61 
62 
63 /**
64  * Constructor for a CPPCode object.
65  *
66  * @param index The index of the method used to restore unflattened internal method.
67  * @param entry The entry point address.
68  * @param argcount The number of arguments this method expects.
69  * @param passNamedArgs True if the named arguments must be passed.
70  */
71 CPPCode::CPPCode(size_t index, PCPPM entry, size_t argcount, bool passNamedArgs)
72 {
73  methodIndex = (uint16_t)index;
74  cppEntry = entry;
75  argumentCount = (uint16_t)argcount;
76  passNamedArguments = passNamedArgs;
77 }
78 
79 
80 void CPPCode::liveGeneral(int reason)
81 /******************************************************************************/
82 /* Function: Generalized object marking */
83 /******************************************************************************/
84 {
85  // Inspired by ooRexx5, but the approach is different...
86  // Instead of assigning package = TheRexxPackage when reason == PREPARINGIMAGE (unsupported by ooRexx4)
87  // I mark the CPPCode instance as belonging to the RexxPackage, and will return TheRexxPackage when asking its package.
88  if (reason == SAVINGIMAGE) this->setInRexxPackage();
89 
90  if (reason == RESTORINGIMAGE) /* restoring the image? */
91  {
92  this->cppEntry = exportedMethods[this->methodIndex];
93  }
94 }
95 
96 
98 /******************************************************************************/
99 /* Function: unflatten an object */
100 /******************************************************************************/
101 {
102  this->cppEntry = exportedMethods[this->methodIndex];
103  return (RexxObject *)this;
104 }
105 
106 
107 /**
108  * Run (or call) a CPPMethod.
109  *
110  * @param activity The activity we're running under.
111  * @param method The method to run.
112  * @param receiver The receiver object.
113  * @param messageName
114  * The name used to invoke the message.
115  * @param argPtr The actual arguments.
116  * @param count The argument count.
117  * @param result The returned result.
118  */
119 void CPPCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
120  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
121 {
122  InternalActivationFrame frame(activity, messageName, receiver, method, argPtr, count, named_count);
123  PCPPM methodEntry = this->cppEntry; /* get the entry point */
124  /* expecting an array? */
125  /* expecting a pointer/count pair? */
126  if (this->argumentCount == A_COUNT)
127  {
128  // Here, named arguments are automatically supported
129  /* we can pass this right on */
130  result = (receiver->*((PCPPMC1)methodEntry))(argPtr, count, named_count);
131  }
132  else
133  {
134  if (count > argumentCount)
135  {
137  }
138 
139  // JLF: example with UNKNOWN method
140  // RexxObject::processUnknown : put all the positional arguments in the 2nd arg, put all the named arguments in the named argument NAMEDARGUMENT
141  // calls RexxMethod::run : forward the 2 positional args + 1 named arg to the code object
142  // calls CPPCode::run : call a CPP method by passing the positional & named args as C++ parameters,
143  // calls RexxObject::unknownRexx : forward to the virtual function (message, arguments, namedArguments)
144  // calls RexxInteger::unknown : just reissue to the string value (message, arguments, namedArguments)
145  // calls RexxObject::sendMessage(RexxString *message, RexxArray *args, RexxDirectory *namedArgs)
146  // calls RexxObject::sendMessage(RexxString *message, RexxArray *arguments, ProtectedObject &result
147  // Now we are back to the standard way to pass arguments:
148  // passing arguments->data(), arguments->size()
149  // where the named arguments are after the positional arguments.
150 
151  // Get the start of the named arguments now, because argPtr may be assigned to the temporary list argument_list.
152  // For the moment, the named arguments are passed as a pointer + count
153  // Declaration on callee side:
154  // If one positional arg: (RexxObject *positional1, RexxObject **named_arglist, size_t named_argcount)
155  // If two positional args: (RexxObject *positional1, RexxObject *positional2, RexxObject **named_arglist, size_t named_argcount)
156  // etc. up to 7 positional arguments.
157  RexxObject **named_argPtr = argPtr + count;
158 
159  // JLF: I don't understand why this temporary list is needed...
160  // ah, yes: it's to pass NULL for the omitted parameters at the end.
161  // Not needed when count == argumentCount, because here no omitted paramaters.
162 
163  // This is the temporary list of positional arguments
164  RexxObject * argument_list[7];
165  if (count < argumentCount) /* need to pad these out? */
166  {
167  // null out the argument list
168  memset(argument_list, 0, sizeof(argument_list));
169  // and copy over the provided argument pointers
170  memcpy(argument_list, argPtr, count * sizeof(RexxObject *));
171  // now switch the argument pointer to the temporary
172  argPtr = &argument_list[0];
173  }
174 
175  // now we make the actual call
176 
177  if (passNamedArguments == false) // if no need to pass named arguments
178  {
179  switch (argumentCount)
180  {
181  case 0: /* zero */
182  result = (receiver->*((PCPPM0)methodEntry))();
183  break;
184 
185  case 1:
186  result = (receiver->*((PCPPM1)methodEntry))(argPtr[0]);
187  break;
188 
189  case 2:
190  result = (receiver->*((PCPPM2)methodEntry))(argPtr[0], argPtr[1]);
191  break;
192 
193  case 3:
194  result = (receiver->*((PCPPM3)methodEntry))(argPtr[0], argPtr[1], argPtr[2]);
195  break;
196 
197  case 4:
198  result = (receiver->*((PCPPM4)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3]);
199  break;
200 
201  case 5:
202  result = (receiver->*((PCPPM5)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4]);
203  break;
204 
205  case 6:
206  result = (receiver->*((PCPPM6)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5]);
207  break;
208 
209  case 7:
210  result = (receiver->*((PCPPM7)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5], argPtr[6]);
211  break;
212  }
213  }
214  else
215  {
216  switch (argumentCount)
217  {
218  case 0: /* zero */
219  result = (receiver->*((PCPPM0N)methodEntry))(named_argPtr, named_count);
220  break;
221 
222  case 1:
223  result = (receiver->*((PCPPM1N)methodEntry))(argPtr[0],
224  named_argPtr, named_count);
225  break;
226 
227  case 2:
228  result = (receiver->*((PCPPM2N)methodEntry))(argPtr[0], argPtr[1],
229  named_argPtr, named_count);
230  break;
231 
232  case 3:
233  result = (receiver->*((PCPPM3N)methodEntry))(argPtr[0], argPtr[1], argPtr[2],
234  named_argPtr, named_count);
235  break;
236 
237  case 4:
238  result = (receiver->*((PCPPM4N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3],
239  named_argPtr, named_count);
240  break;
241 
242  case 5:
243  result = (receiver->*((PCPPM5N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4],
244  named_argPtr, named_count);
245  break;
246 
247  case 6:
248  result = (receiver->*((PCPPM6N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5],
249  named_argPtr, named_count);
250  break;
251 
252  case 7:
253  result = (receiver->*((PCPPM7N)methodEntry))(argPtr[0], argPtr[1], argPtr[2], argPtr[3], argPtr[4], argPtr[5], argPtr[6],
254  named_argPtr, named_count);
255  break;
256  }
257  }
258  }
259 }
260 
261 
262 /**
263  * Allocate a new attribute getter code object.
264  *
265  * @param size the allocation size.
266  *
267  * @return A pointer to the newly allocated object.
268  */
269 void *AttributeGetterCode::operator new(size_t size)
270 {
271  // just allocate ane return
272  return new_object(size, T_AttributeGetterCode);
273 }
274 
275 void AttributeGetterCode::live(size_t liveMark)
276 /******************************************************************************/
277 /* Function: Normal garbage collection live marking */
278 /******************************************************************************/
279 {
280  memory_mark(this->attribute);
281  memory_mark(this->source);
282 }
283 
285 /******************************************************************************/
286 /* Function: Generalized object marking */
287 /******************************************************************************/
288 {
289  // Inspired by ooRexx5, but the approach is different...
290  // Instead of assigning package = TheRexxPackage when reason == PREPARINGIMAGE (unsupported by ooRexx4)
291  // I mark the AttributeGetterCode instance as belonging to the RexxPackage, and will return TheRexxPackage when asking its package.
292  if (reason == SAVINGIMAGE) this->setInRexxPackage();
293 
296 }
297 
299 /******************************************************************************/
300 /* Function: Flatten an object */
301 /******************************************************************************/
302 {
304 
305  flatten_reference(newThis->attribute, envelope);
306  flatten_reference(newThis->source, envelope);
307 
309 }
310 
311 
312 /**
313  * Execute an attribute-get operation.
314  *
315  * @param activity The current activity.
316  * @param method The method we're invoking.
317  * @param receiver The receiver object.
318  * @param messageName
319  * The name of the message used to invoke the method.
320  * @param argPtr The pointer to the arguments.
321  * @param count The argument count.
322  * @param result The returned result.
323  */
324 void AttributeGetterCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
325  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
326 {
327  // validate the number of arguments
328  if (count > 0)
329  {
331  }
332  // this is simplier if the method is not guarded
333  if (!method->isGuarded())
334  {
335  result = attribute->getValue(receiver->getObjectVariables(method->getScope()));
336  }
337  else {
338  // get the variable pool and get the guard lock
339  RexxVariableDictionary *objectVariables = receiver->getObjectVariables(method->getScope());
340  objectVariables->reserve(activity);
341  result = attribute->getValue(objectVariables);
342  // and ensure we release this afterwards
343  objectVariables->release(activity);
344  }
345 }
346 
347 
348 /**
349  * Allocate a new attribute setter code object.
350  *
351  * @param size the allocation size.
352  *
353  * @return A pointer to the newly allocated object.
354  */
355 void *AttributeSetterCode::operator new(size_t size)
356 {
357  // just allocate ane return
358  return new_object(size, T_AttributeSetterCode);
359 }
360 
361 
362 /**
363  * Execute an attribute-set operation.
364  *
365  * @param activity The current activity.
366  * @param method The method we're invoking.
367  * @param receiver The receiver object.
368  * @param messageName
369  * The name of the message used to invoke the method.
370  * @param argPtr The pointer to the arguments.
371  * @param count The argument count.
372  * @param result The returned result.
373  */
374 void AttributeSetterCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
375  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
376 {
377  // validate the number of arguments
378  if (count > 1)
379  {
380  reportException(Error_Incorrect_method_maxarg, OREF_positional, 1);
381  }
382 
383  if (count == 0 || *argPtr == OREF_NULL)
384  {
385  missingArgument(OREF_positional, 1);
386  }
387  // this is simplier if the method is not guarded
388  if (!method->isGuarded())
389  {
390  // go set the attribue
391  attribute->set(receiver->getObjectVariables(method->getScope()), argPtr[0]);
392  }
393  else {
394  // get the variable pool and get the guard lock
395  RexxVariableDictionary *objectVariables = receiver->getObjectVariables(method->getScope());
396  objectVariables->reserve(activity);
397  // go set the attribue
398  attribute->set(objectVariables, argPtr[0]);
399  // and ensure we release this afterwards
400  objectVariables->release(activity);
401  }
402 }
403 
404 
405 /**
406  * Allocate a new constant getter code object.
407  *
408  * @param size the allocation size.
409  *
410  * @return A pointer to the newly allocated object.
411  */
412 void *ConstantGetterCode::operator new(size_t size)
413 {
414  // just allocate ane return
415  return new_object(size, T_AttributeGetterCode);
416 }
417 
418 
419 void ConstantGetterCode::live(size_t liveMark)
420 /******************************************************************************/
421 /* Function: Normal garbage collection live marking */
422 /******************************************************************************/
423 {
424  memory_mark(this->constantValue);
425  memory_mark(this->source);
426 }
427 
429 /******************************************************************************/
430 /* Function: Generalized object marking */
431 /******************************************************************************/
432 {
433  // Inspired by ooRexx5, but the approach is different...
434  // Instead of assigning package = TheRexxPackage when reason == PREPARINGIMAGE (unsupported by ooRexx4)
435  // I mark the ConstantGetterCode instance as belonging to the RexxPackage, and will return TheRexxPackage when asking its package.
436  if (reason == SAVINGIMAGE) this->setInRexxPackage();
437 
440 }
441 
443 /******************************************************************************/
444 /* Function: Flatten an object */
445 /******************************************************************************/
446 {
448 
449  flatten_reference(newThis->constantValue, envelope);
450  flatten_reference(newThis->source, envelope);
451 
453 }
454 
455 
456 /**
457  * Execute a constant get operation
458  *
459  * @param activity The current activity.
460  * @param method The method we're invoking.
461  * @param receiver The receiver object.
462  * @param messageName
463  * The name of the message used to invoke the method.
464  * @param argPtr The pointer to the arguments.
465  * @param count The argument count.
466  * @param result The returned result.
467  */
468 void ConstantGetterCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
469  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
470 {
471  // validate the number of arguments
472  if (count > 0)
473  {
475  }
476  result = constantValue;
477 }
478 
479 
480 /**
481  * Allocate a new abstract code object.
482  *
483  * @param size the allocation size.
484  *
485  * @return A pointer to the newly allocated object.
486  */
487 void *AbstractCode::operator new(size_t size)
488 {
489  // just allocate ane return
490  return new_object(size, T_AbstractCode);
491 }
492 
493 void AbstractCode::live(size_t liveMark)
494 /******************************************************************************/
495 /* Function: Normal garbage collection live marking */
496 /******************************************************************************/
497 {
498  memory_mark(this->source);
499 }
500 
502 /******************************************************************************/
503 /* Function: Generalized object marking */
504 /******************************************************************************/
505 {
506  // Inspired by ooRexx5, but the approach is different...
507  // Instead of assigning package = TheRexxPackage when reason == PREPARINGIMAGE (unsupported by ooRexx4)
508  // I mark the AbstractCode instance as belonging to the RexxPackage, and will return TheRexxPackage when asking its package.
509  if (reason == SAVINGIMAGE) this->setInRexxPackage();
510 
512 }
513 
515 /******************************************************************************/
516 /* Function: Flatten an object */
517 /******************************************************************************/
518 {
520 
521  flatten_reference(newThis->source, envelope);
522 
524 }
525 
526 
527 /**
528  * Execute a constant get operation
529  *
530  * @param activity The current activity.
531  * @param method The method we're invoking.
532  * @param receiver The receiver object.
533  * @param messageName
534  * The name of the message used to invoke the method.
535  * @param argPtr The pointer to the arguments.
536  * @param count The argument count.
537  * @param result The returned result.
538  */
539 void AbstractCode::run(RexxActivity *activity, RexxMethod *method, RexxObject *receiver, RexxString *messageName,
540  RexxObject **argPtr, size_t count, size_t named_count, ProtectedObject &result)
541 {
543 }
544 
545 
546 #include "RexxCore.h"
547 #include "TableClass.hpp"
548 #include "RexxMemory.hpp"
549 #include "RexxBehaviour.hpp"
550 #include "ClassClass.hpp"
551 #include "NumberStringClass.hpp"
552 #include "IntegerClass.hpp"
553 #include "StringClass.hpp"
554 #include "MutableBufferClass.hpp"
555 #include "ArrayClass.hpp"
556 #include "DirectoryClass.hpp"
557 #include "RelationClass.hpp"
558 #include "ListClass.hpp"
559 #include "QueueClass.hpp"
560 #include "SupplierClass.hpp"
561 #include "MethodClass.hpp"
562 #include "RoutineClass.hpp"
563 #include "PackageClass.hpp"
564 #include "RexxEnvelope.hpp"
565 #include "MessageClass.hpp"
566 #include "StemClass.hpp"
567 #include "RexxMisc.hpp"
568 #include "RexxNativeCode.hpp"
569 #include "RexxActivity.hpp"
570 #include "ActivityManager.hpp"
571 #include "RexxNativeActivation.hpp"
573 #include "ExpressionVariable.hpp"
574 #include "RexxLocalVariables.hpp"
575 #include "ProtectedObject.hpp"
576 #include "PointerClass.hpp"
577 #include "BufferClass.hpp"
578 #include "WeakReferenceClass.hpp"
579 #include "ContextClass.hpp"
580 #include "StackFrameClass.hpp"
581 #include "BlockClass.hpp"
582 #include "TextClass.hpp"
583 
584 PCPPM CPPCode::exportedMethods[] = /* start of exported methods table */
585 {
619 
621 
622 CPPM(RexxClass::setRexxDefined), /* Class methods */
625 CPPM(RexxClass::isMetaClassRexx), // ooRexx5
626 CPPM(RexxClass::isAbstractRexx), // ooRexx5
651 
653 
654 CPPM(RexxArray::sizeRexx), /* Array methods */
684 
688 
689 CPPM(RexxDirectory::atRexx), /* Directory methods */
707 
709 
710 CPPM(RexxInteger::plus), /* Integer methods */
746 
747 CPPM(RexxList::value), /* list methods */
769 
772 
773 CPPM(RexxMessage::notify), /* Message methods */
783 
785 
786 CPPM(RexxMethod::setUnguardedRexx), /* Method methods */
796 CPPM(RexxMethod::isPackageRexx), // ooRexx5
797 CPPM(RexxMethod::isAbstractRexx), // ooRexx5
798 CPPM(RexxMethod::isConstantRexx), // ooRexx5
800 CPPM(RexxMethod::getScopeRexx), // ooRexx5
801 
805 
809 
813 
842 
844 
845 CPPM(RexxNumberString::formatRexx), /* NumberString methods */
883 
884 CPPM(RexxQueue::supplier), /* Queue methods */
902 
905 
906 CPPM(RexxStem::bracket), /* Stem methods */
921 
923 
924 CPPM(RexxString::lengthRexx), /* String methods */
961 
962  /* All BIF methods start here. They */
963  /* will be arranged according to the*/
964  /* they are defined in. */
965 
966  /* following methods are in OKBSUBS */
978 
979  /* following methods are in OKBWORD */
990 
991  /* following methods are in OKBMISC */
992 
1009 
1010  /* following methods are in OKBBITS */
1014 
1015  /* following methods are in OKBCONV */
1016 
1033 
1042  /* End of BIF methods */
1044 
1086 
1087 CPPM(RexxSupplier::available), /* Supplier methods */
1092 
1094 
1095  /* Table methods */
1112 
1115 
1117 
1118 CPPM(RexxRelation::put), /* Relation methods */
1125 
1127 
1128 CPPM(RexxLocal::local), /* the .local environment methods */
1129 
1134 
1136 
1139 
1158 
1167 
1175 
1177 
1181 
1199 
1201 
1202 NULL /* final terminating method */
1203 };
1204 
1205 
1206 /**
1207  * Resolve the entry point of a CPP method into a CPPCode wrapper
1208  * for that method.
1209  *
1210  * @param name The name of the method (used for error reporting)
1211  * @param targetMethod
1212  * The method to wrapper
1213  * @param argumentCount
1214  * The argument descriptor.
1215  *
1216  * @return A CPPCode object for the wrappered method.
1217  */
1218 CPPCode *CPPCode::resolveExportedMethod(const char *name, PCPPM targetMethod, size_t argumentCount, bool passNamedArgs)
1219 {
1220  for (size_t i = 0; exportedMethods[i] != NULL; i++)
1221  {
1222  // found the one we need? Wrap a CPPCode object around it
1223  if (exportedMethods[i] == targetMethod)
1224  {
1225  return new CPPCode(i, targetMethod, argumentCount, passNamedArgs);
1226  }
1227  }
1228 
1229  char buffer[256];
1230  snprintf(buffer, sizeof buffer, "Unresolved exported method: %s", name);
1231  /* this is a bad error */
1232  Interpreter::logicError(buffer);
1233  return NULL; /* needs a return value */
1234 }
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:262
#define OREF_NULL
Definition: RexxCore.h:61
#define Error_Incorrect_method_abstract
#define Error_Incorrect_method_maxarg
#define memory_mark(oref)
Definition: RexxMemory.hpp:450
RexxObject * new_object(size_t s)
Definition: RexxMemory.hpp:436
#define flatten_reference(oref, envel)
Definition: RexxMemory.hpp:498
#define memory_mark_general(oref)
Definition: RexxMemory.hpp:451
@ SAVINGIMAGE
Definition: RexxMemory.hpp:117
@ RESTORINGIMAGE
Definition: RexxMemory.hpp:116
#define cleanUpFlatten
Definition: RexxMemory.hpp:484
#define setUpFlatten(type)
Definition: RexxMemory.hpp:478
void live(size_t)
Definition: CPPCode.cpp:493
void liveGeneral(int reason)
Definition: CPPCode.cpp:501
RexxSource * source
Definition: CPPCode.hpp:164
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:539
void flatten(RexxEnvelope *)
Definition: CPPCode.cpp:514
void liveGeneral(int reason)
Definition: CPPCode.cpp:284
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:324
RexxSource * source
Definition: CPPCode.hpp:96
void live(size_t)
Definition: CPPCode.cpp:275
RexxVariableBase * attribute
Definition: CPPCode.hpp:95
void flatten(RexxEnvelope *)
Definition: CPPCode.cpp:298
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:374
PackageClass * getPackage()
RexxArray * source()
static CPPCode * resolveExportedMethod(const char *, PCPPM targetMethod, size_t argcount, bool passNamedArgs)
Definition: CPPCode.cpp:1218
uint16_t methodIndex
Definition: CPPCode.hpp:67
bool passNamedArguments
Definition: CPPCode.hpp:69
CPPCode(size_t, PCPPM, size_t, bool)
Definition: CPPCode.cpp:71
uint16_t argumentCount
Definition: CPPCode.hpp:68
RexxObject * unflatten(RexxEnvelope *envelope)
Definition: CPPCode.cpp:97
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:119
PCPPM cppEntry
Definition: CPPCode.hpp:70
static PCPPM exportedMethods[]
Definition: CPPCode.hpp:64
void liveGeneral(int reason)
Definition: CPPCode.cpp:80
void run(RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
Definition: CPPCode.cpp:468
void liveGeneral(int reason)
Definition: CPPCode.cpp:428
void live(size_t)
Definition: CPPCode.cpp:419
void flatten(RexxEnvelope *)
Definition: CPPCode.cpp:442
RexxSource * source
Definition: CPPCode.hpp:139
RexxObject * constantValue
Definition: CPPCode.hpp:138
static void logicError(const char *desc, const char *info1=NULL, size_t info2=0)
RexxString * getSourceLineRexx(RexxObject *)
RexxObject * loadLibrary(RexxString *name)
RexxObject * setEncodingRexx(RexxObject *e)
RexxObject * addClass(RexxString *name, RexxClass *clazz)
RexxObject * findProgramRexx(RexxObject *name)
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:254
RexxObject * getVariables()
Definition: BlockClass.hpp:104
RexxObject * getRawExecutable()
Definition: BlockClass.hpp:106
PackageClass * getPackage()
Definition: BlockClass.hpp:103
RexxObject * copyRexx()
Definition: BlockClass.cpp:268
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:821
RexxClass * getSuperClass()
Definition: ClassClass.cpp:333
RexxClass * subclassRexx(RexxString *, RexxClass *, RexxObject *)
PackageClass * getPackage()
RexxMethod * method(RexxString *)
Definition: ClassClass.cpp:850
RexxClass * getMetaClass()
Definition: ClassClass.cpp:309
RexxObject * inherit(RexxClass *, RexxClass *)
void defmeths(RexxTable *)
Definition: ClassClass.cpp:378
RexxString * defaultNameRexx()
RexxObject * isMetaClassRexx()
Definition: ClassClass.cpp:267
RexxObject * notEqual(RexxObject *)
Definition: ClassClass.cpp:231
RexxArray * getSubClasses()
Definition: ClassClass.cpp:358
void removeClassMethod(RexxString *method_name)
Definition: ClassClass.cpp:803
RexxClass * getBaseClass()
Definition: ClassClass.cpp:301
RexxObject * defineMethod(RexxString *, RexxMethod *)
Definition: ClassClass.cpp:653
RexxArray * getSuperClasses()
Definition: ClassClass.cpp:348
RexxObject * isAbstractRexx()
Definition: ClassClass.cpp:278
RexxObject * isSubclassOf(RexxClass *other)
RexxObject * enhanced(RexxObject **, size_t, size_t)
RexxInteger * queryMixinClass()
Definition: ClassClass.cpp:253
RexxObject * equal(RexxObject *)
Definition: ClassClass.cpp:209
RexxObject * defineMethods(RexxTable *)
Definition: ClassClass.cpp:725
RexxObject * setRexxDefined()
Definition: ClassClass.cpp:292
RexxObject * defineClassMethod(RexxString *method_name, RexxMethod *newMethod)
Definition: ClassClass.cpp:772
RexxSupplier * methods(RexxClass *)
Definition: ClassClass.cpp:869
RexxClass * mixinClassRexx(RexxString *, RexxClass *, RexxObject *)
RexxObject * strictEqual(RexxObject *)
Definition: ClassClass.cpp:172
RexxObject * uninherit(RexxClass *)
RexxString * getId()
Definition: ClassClass.cpp:284
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:1261
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:1226
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 * isAttributeRexx()
RexxObject * setUnguardedRexx()
RexxObject * setProtectedRexx()
RexxObject * setSecurityManager(RexxObject *)
RexxObject * isProtectedRexx()
RexxObject * isAbstractRexx()
RexxMethod * newFileRexx(RexxString *)
RexxObject * getScopeRexx()
RexxObject * isGuardedRexx()
RexxMethod * loadExternalMethod(RexxString *name, RexxString *descriptor)
RexxObject * isPackageRexx()
bool isGuarded()
RexxObject * isConstantRexx()
RexxClass * getScope()
RexxObject * setGuardedRexx()
RexxMutableBuffer * newRexx(RexxObject **, size_t, size_t)
RexxInteger * isASCIIRexx()
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 *)
RexxObject * setEncodingRexx(RexxObject *e)
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 * dynamicTargetRexx(RexxObject **arguments, size_t argCount, size_t named_argCount)
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 * isNilRexx()
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:611
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:999
RexxObject * index(RexxObject *)
Definition: StemClass.cpp:368
RexxArray * allItems()
Definition: StemClass.cpp:913
RexxSupplier * supplier()
Definition: StemClass.cpp:1023
RexxObject * bracketEqual(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:390
RexxObject * empty()
Definition: StemClass.cpp:987
RexxObject * bracket(RexxObject **, size_t, size_t)
Definition: StemClass.cpp:236
RexxDirectory * toDirectory()
Definition: StemClass.cpp:1066
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:1011
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 *)
RexxObject * setTextRexx(RexxObject *t)
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 * setEncodingRexx(RexxObject *e)
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
RexxObject * newRexx(RexxObject **, size_t, size_t)
Definition: TextClass.cpp:126
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 * copyRexx()
Definition: TextClass.cpp:330
RexxObject * utf8proc_transform(RexxString *str, RexxObject **named_arglist, size_t named_argcount)
Definition: TextClass.cpp:681
RexxInteger * utf8proc_graphemeBreak(RexxArray *)
Definition: TextClass.cpp:410
RexxInteger * utf8proc_codepointCharWidth(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:573
RexxInteger * utf8proc_codepointCategory(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:422
RexxInteger * utf8proc_codepointBidiClass(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:473
RexxInteger * utf8proc_codepointToTitleSimple(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:639
RexxString * utf8proc_version()
Definition: TextClass.cpp:393
RexxInteger * utf8proc_codepointControlBoundary(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:565
RexxInteger * utf8proc_codepointToUpperSimple(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:632
RexxInteger * utf8proc_codepointIsLower(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:646
RexxString * unialgo_version()
Definition: TextClass.cpp:800
RexxInteger * utf8proc_codepointToLowerSimple(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:625
RexxInteger * utf8proc_codepointDecompositionType(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:517
RexxInteger * systemIsLittleEndian()
Definition: TextClass.cpp:359
RexxInteger * utf8proc_codepointBoundClass(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:585
RexxInteger * utf8proc_codepointIsUpper(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:654
RexxInteger * utf8proc_codepointIgnorable(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:557
RexxInteger * utf8proc_codepointBidiMirrored(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:509
RexxObject * newRexx(RexxObject **, size_t, size_t)
Definition: TextClass.cpp:323
RexxInteger * utf8proc_codepointCombiningClass(RexxObject *rexxCodepoint)
Definition: TextClass.cpp:465
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