Setup.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 /* REXX Kernel */
40 /* */
41 /* Setup initial class definitions during an image build */
42 /* */
43 /* NOTE: The methods contained here are part of the RexxMemory class, but */
44 /* are in a separate file because of the extensive #include requirements */
45 /* for these particular methods and tables. */
46 /* */
47 /******************************************************************************/
48 #include <string.h>
49 #include "RexxCore.h"
50 #include "TableClass.hpp"
51 #include "RexxMemory.hpp"
52 #include "RexxBehaviour.hpp"
53 #include "ClassClass.hpp"
54 #include "NumberStringClass.hpp"
55 #include "IntegerClass.hpp"
56 #include "StringClass.hpp"
57 #include "MutableBufferClass.hpp"
58 #include "ArrayClass.hpp"
59 #include "DirectoryClass.hpp"
60 #include "RelationClass.hpp"
61 #include "ListClass.hpp"
62 #include "QueueClass.hpp"
63 #include "SupplierClass.hpp"
64 #include "MethodClass.hpp"
65 #include "RoutineClass.hpp"
66 #include "RexxEnvelope.hpp"
67 #include "MessageClass.hpp"
68 #include "StemClass.hpp"
69 #include "RexxMisc.hpp"
70 #include "RexxNativeCode.hpp"
71 #include "RexxActivity.hpp"
72 #include "ActivityManager.hpp"
73 #include "RexxNativeActivation.hpp"
75 #include "ExpressionVariable.hpp"
76 #include "RexxLocalVariables.hpp"
77 #include "ProtectedObject.hpp"
78 #include "PointerClass.hpp"
79 #include "BufferClass.hpp"
80 #include "WeakReferenceClass.hpp"
81 #include "CPPCode.hpp"
82 #include "Interpreter.hpp"
83 #include "SystemInterpreter.hpp"
84 #include "InterpreterInstance.hpp"
85 #include "PackageManager.hpp"
86 #include "PackageClass.hpp"
87 #include "ContextClass.hpp"
88 #include "StackFrameClass.hpp"
89 #include "BlockClass.hpp"
90 
91 
93  const char * name, /* ASCII-Z name for the method */
94  RexxBehaviour * behaviour, /* behaviour to use */
95  PCPPM entryPoint, /* method's entry point */
96  size_t arguments, /* count of arguments */
97  bool passNamedArgs /* pass the named arguments? */
98 )
99 /******************************************************************************/
100 /* Function: Add a C++ method to an object's behaviour */
101 /******************************************************************************/
102 {
103  behaviour->define(name, entryPoint, arguments, passNamedArgs);
104 }
105 
107  const char * name, /* ASCII-Z name for the method */
108  RexxBehaviour * behaviour, /* behaviour to use */
109  PCPPM entryPoint, /* method's entry point */
110  size_t arguments, /* count of arguments */
111  bool passNamedArgs /* pass the named arguments? */
112 )
113 /******************************************************************************/
114 /* Function: Add a C++ method to an object's behaviour */
115 /******************************************************************************/
116 {
117  RexxMethod *method = behaviour->define(name, entryPoint, arguments, passNamedArgs);
118  method->setProtected(); /* make this protected */
119 }
120 
121 
123  const char * name, /* ASCII-Z name for the method */
124  RexxBehaviour * behaviour, /* behaviour to use */
125  PCPPM entryPoint, /* method's entry point */
126  size_t arguments, /* count of arguments */
127  bool passNamedArgs /* pass the named arguments? */
128 )
129 /******************************************************************************/
130 /* Function: Add a C++ method to an object's behaviour */
131 /******************************************************************************/
132 {
133  RexxMethod *method = behaviour->define(name, entryPoint, arguments, passNamedArgs);
134  // On 20/07/2014 rev 10318, official ooRexx was updated to no longer declare protected
135  //method->setProtected(); /* make this protected */
136  method->setPrivate(); /* make this protected */
137 }
138 
139 
140 /**
141  * Initialize the Rexx memory environment during an image built.
142  *
143  * @param imageTarget
144  * The location to save the created image file.
145  */
146 void RexxMemory::createImage(const char *imageTarget)
147 /******************************************************************************/
148 /* Function: Initialize the kernel on image build */
149 /******************************************************************************/
150 {
151  RexxMemory::create(); /* create initial memory stuff */
152 
153  Interpreter::init(); // the interpreter subsystem first
154  ActivityManager::init(); /* Initialize the activity managers */
155  // Get an instance. This also gives the root activity of the instance
156  // the kernel lock.
158  memoryObject.createStrings(); /* create all of the OREF_ strings */
159  // initializer for native libraries
161 
162  /* avoid that through caching */
163  /* TheTrueObject == IntegerOne etc. */
164  TheTrueObject = new RexxInteger(1);
165  TheFalseObject = new RexxInteger(0);
166 
167 
169  /* We don't move the NIL object, we */
170  /*will use the remote systems NIL */
171  /*object. */
172  TheNilObject->makeProxiedObject();
173 
174  /* create string first */
180 
182 
183  /* If first one through, generate all */
184  IntegerZero = new_integer(0); /* static integers we want to use... */
185  IntegerOne = new_integer(1); /* This will allow us to use the static */
186  IntegerTwo = new_integer(2); /* integers instead of having to do a */
187  IntegerThree = new_integer(3); /* new_integer every time.... */
190  IntegerSix = new_integer(6);
195 
196 
197  /* RexxNumberString */
198  // NOTE: The number string class lies about its identity
201 
202  // The pointer class needs to be created early because other classes
203  // use the instances to store information.
205 
207  CLASS_CREATE(Directory, "Directory", RexxClass); /* RexxDirectory */
208  TheEnvironment = new_directory(); /* create the environment directory */
209  /* setup OREF_ENV as the mark start */
210  /* point */
212  TheKernel = new_directory(); /* now add the kernel and system */
213  TheSystem = new_directory(); /* directories */
214  /* Indicate these objects will not be*/
215  /* moved to another system, rather */
216  /* will re-establish themselves on */
217  /* the remote system. */
218  TheEnvironment->makeProxiedObject();
219  TheKernel->makeProxiedObject();
220  TheSystem->makeProxiedObject();
221 
222  /* RexxMethod */
233 
239 
240  /* build the common retriever tables */
242  /* add all of the special variables */
243  TheCommonRetrievers->put((RexxObject *)new RexxParseVariable(OREF_SELF, VARIABLE_SELF), OREF_SELF);
244  TheCommonRetrievers->put((RexxObject *)new RexxParseVariable(OREF_SUPER, VARIABLE_SUPER), OREF_SUPER);
245  TheCommonRetrievers->put((RexxObject *)new RexxParseVariable(OREF_SIGL, VARIABLE_SIGL), OREF_SIGL);
246  TheCommonRetrievers->put((RexxObject *)new RexxParseVariable(OREF_RC, VARIABLE_RC), OREF_RC);
247  TheCommonRetrievers->put((RexxObject *)new RexxParseVariable(OREF_RESULT, VARIABLE_RESULT), OREF_RESULT);
248  memoryObject.enableOrefChecks(); /* enable setCheckOrefs... */
249 
250 /******************************************************************************/
251 /* The following Rexx classes that are exposed to the users are set up as */
252 /* subclassable classes. */
253 /*****************************************************************************/
254 
255  /* The NEW method is exposed for the CLASS class behaviour. */
256  /* The CLASS class needs the methods of the CLASS instance behaviour */
257  /* so the instance behaviour methods are also in the CLASS class mdict. */
258  /* */
259  /* Also Since the CLASS class needs OBJECT instance methods the */
260  /* OBJECT class is setup. Then the class method SUBCLASSABLE can be */
261  /* invoked on OBJECT then CLASS and then all the subclassable classes. */
262 
263  /* add the Rexx class NEW method */
265 
266  /* set the scope of the method to */
267  /* the CLASS scope */
268  TheClassClassBehaviour->setMethodDictionaryScope(TheClassClass);
269 
270  /* add the instance methods to the */
271  /* class's instance mdict */
290  /* Class operator methods.... */
293  defineKernelMethod(CHAR_BACKSLASH_EQUAL ,TheClassBehaviour, CPPM(RexxClass::notEqual), 1);
294  defineKernelMethod(CHAR_LESSTHAN_GREATERTHAN ,TheClassBehaviour, CPPM(RexxClass::notEqual), 1);
295  defineKernelMethod(CHAR_GREATERTHAN_LESSTHAN ,TheClassBehaviour, CPPM(RexxClass::notEqual), 1);
296  defineKernelMethod(CHAR_STRICT_BACKSLASH_EQUAL ,TheClassBehaviour, CPPM(RexxClass::notEqual), 1);
300  // this is explicitly inserted into the class behaviour because it gets used
301  // prior to the instance behavior merges.
303  // this is a NOP by default, so we'll just use the object init method as a fill in.
305 
306  /* set the scope of the methods to */
307  /* the CLASS scope */
308  TheClassBehaviour->setMethodDictionaryScope(TheClassClass);
309 
310  /************************************************************************/
311  /* */
312  /* The OBJECT class and instance behaviour mdict's are needed next */
313  /* */
314  /************************************************************************/
315 
316  /* add the NEW method to the OBJECT */
317  /* behaviour mdict */
319 
320  /* set the scope of the method to */
321  /* the OBJECT scope */
322  TheObjectClassBehaviour->setMethodDictionaryScope(TheObjectClass);
323 
324  /* now set up the instance behaviour */
325  /* mdict */
331  defineKernelMethod(CHAR_LESSTHAN_GREATERTHAN ,TheObjectBehaviour, CPPM(RexxObject::notEqual), 1);
332  defineKernelMethod(CHAR_GREATERTHAN_LESSTHAN ,TheObjectBehaviour, CPPM(RexxObject::notEqual), 1);
333  defineKernelMethod(CHAR_STRICT_BACKSLASH_EQUAL ,TheObjectBehaviour, CPPM(RexxObject::strictNotEqual), 1);
345  defineKernelMethod("STARTWITH" ,TheObjectBehaviour, CPPM(RexxObject::startWith), 2, true); // pass named arguments
347  defineKernelMethod("SENDWITH" ,TheObjectBehaviour, CPPM(RexxObject::sendWith), 2, true); // pass named arguments
357  /* set the scope of the methods to */
358  /* the OBJECT scope */
359  TheObjectBehaviour->setMethodDictionaryScope(TheObjectClass);
360  /* Now call the class subclassable */
361  /* method for OBJECT then CLASS */
362  TheObjectClass->subClassable(true);
363  TheClassClass->subClassable(true);
364 
365  /************************************** The rest of the classes can now be */
366  /************************************** set up. */
367 
368  /***************************************************************************/
369  /* ARRAY */
370  /***************************************************************************/
371 
374  /* set the scope of the methods to */
375  /* this classes oref */
376  TheArrayClassBehaviour->setMethodDictionaryScope(TheArrayClass);
377 
410  // there have been some problems with the quick sort used as the default sort, so map everything
411  // to the stable sort. The stable sort, in theory, uses more memory, but in practice, this is not true.
416  /* set the scope of the methods to */
417  /* this classes oref */
418  TheArrayBehaviour->setMethodDictionaryScope(TheArrayClass);
419 
420  /* Now call the class subclassable */
421  /* method */
422  TheArrayClass->subClassable(false);
423 
424  /***************************************************************************/
425  /* DIRECTORY */
426  /***************************************************************************/
427 
429 
430  /* set the scope of the method to */
431  /* this classes oref */
432  TheDirectoryClassBehaviour->setMethodDictionaryScope(TheDirectoryClass);
433 
434  /* add the instance methods */
452  defineKernelMethod(CHAR_UNKNOWN , TheDirectoryBehaviour, CPPM(RexxObject::unknownRexx), 2, true); // pass named arguments
457 
458  /* set the scope of the methods to */
459  /* this classes oref */
460  TheDirectoryBehaviour->setMethodDictionaryScope(TheDirectoryClass);
461 
462  /* Now call the class subclassable */
463  /* method */
464  TheDirectoryClass->subClassable(false);
465 
466 
467  /***************************************************************************/
468  /* LIST */
469  /***************************************************************************/
470 
471  /* add the class behaviour methods */
474 
475  /* set the scope of the methods to */
476  /* this classes oref */
477  TheListClassBehaviour->setMethodDictionaryScope(TheListClass);
478 
479  /* add the instance behaviour methods*/
481  defineKernelMethod(CHAR_BRACKETSEQUAL,TheListBehaviour, CPPM(RexxList::put), 2);
495  // DELETE is the same as REMOVE for the List class
507  /* set the scope of the methods to */
508  /* this classes oref */
509  TheListBehaviour->setMethodDictionaryScope(TheListClass);
510 
511  /* Now call the class subclassable */
512  /* method */
513  TheListClass->subClassable(false);
514 
515  /***************************************************************************/
516  /* MESSAGE */
517  /***************************************************************************/
518 
519  /* Define the NEW method in the */
520  /* class behaviour mdict */
522 
523  /* set the scope of the methods to */
524  /* this classes oref */
525  TheMessageClassBehaviour->setMethodDictionaryScope(TheMessageClass);
526 
527  /* Add the instance methods to the */
528  /* instance behaviour mdict */
529 
540 
541  /* set the scope of the methods to */
542  /* this classes oref */
543  TheMessageBehaviour->setMethodDictionaryScope(TheMessageClass);
544 
545  /* Now call the class subclassable */
546  /* method */
547  TheMessageClass->subClassable(true);
548 
549  /***************************************************************************/
550  /* METHOD */
551  /***************************************************************************/
552 
553  /* Add the NEW methods to the */
554  /* class behaviour */
558  /* set the scope of the methods to */
559  /* this classes oref */
560  TheMethodClassBehaviour->setMethodDictionaryScope(TheMethodClass);
561 
562  /* Add the instance methods to the */
563  /* instance behaviour mdict */
574  /* set the scope of the methods to */
575  /* this classes oref */
576  TheMethodBehaviour->setMethodDictionaryScope(TheMethodClass);
577 
578  /* Now call the class subclassable */
579  /* method */
580  TheMethodClass->subClassable(true);
581 
582  /***************************************************************************/
583  /* ROUTINE */
584  /***************************************************************************/
585 
586  /* Add the NEW methods to the */
587  /* class behaviour */
591  /* set the scope of the methods to */
592  /* this classes oref */
593  TheRoutineClassBehaviour->setMethodDictionaryScope(TheRoutineClass);
594 
595  /* Add the instance methods to the */
596  /* instance behaviour mdict */
601  defineKernelMethod(CHAR_CALLWITH ,TheRoutineBehaviour, CPPM(RoutineClass::callWithRexx), 1, true); // pass named arguments
602  /* set the scope of the methods to */
603  /* this classes oref */
604  TheRoutineBehaviour->setMethodDictionaryScope(TheRoutineClass);
605 
606  /* Now call the class subclassable */
607  /* method */
608  TheRoutineClass->subClassable(true);
609 
610 
611  /***************************************************************************/
612  /* Package */
613  /***************************************************************************/
614 
615  /* Add the NEW methods to the */
616  /* class behaviour */
618  /* set the scope of the methods to */
619  /* this classes oref */
620  ThePackageClassBehaviour->setMethodDictionaryScope(ThePackageClass);
621 
622  /* Add the instance methods to the */
623  /* instance behaviour mdict */
650  /* set the scope of the methods to */
651  /* this classes oref */
652  ThePackageBehaviour->setMethodDictionaryScope(ThePackageClass);
653 
654  /* Now call the class subclassable */
655  /* method */
656  ThePackageClass->subClassable(true);
657 
658 
659  /***************************************************************************/
660  /* RexxContext */
661  /***************************************************************************/
662 
663  /* Add the NEW methods to the */
664  /* class behaviour */
666  /* set the scope of the methods to */
667  /* this classes oref */
668  TheRexxContextClassBehaviour->setMethodDictionaryScope(TheRexxContextClass);
669 
679  defineKernelMethod(CHAR_SETARGS ,TheRexxContextBehaviour, CPPM(RexxContext::setArgs), 1, true); // pass named arguments
687 
688  /* Add the instance methods to the */
689  /* instance behaviour mdict */
690  /* set the scope of the methods to */
691  /* this classes oref */
692  TheRexxContextBehaviour->setMethodDictionaryScope(TheRexxContextClass);
693 
694  /* Now call the class subclassable */
695  /* method */
696  TheRexxContextClass->subClassable(true);
697 
698  /***************************************************************************/
699  /* QUEUE */
700  /***************************************************************************/
701 
702  /* Add the NEW method to the class */
703  /* behaviour mdict */
706 
707  /* set the scope of the methods to */
708  /* this classes oref */
709  TheQueueClassBehaviour->setMethodDictionaryScope(TheQueueClass);
710 
711  /* Add the instance methods to the */
712  /* instance method mdict */
713 
722  defineKernelMethod(CHAR_BRACKETSEQUAL ,TheQueueBehaviour, CPPM(RexxQueue::put), 2);
727  // REMOVE and DELETE are synonyms for the QUEUE class
745 
746  /* set the scope of the methods to */
747  /* this classes oref */
748  TheQueueBehaviour->setMethodDictionaryScope(TheQueueClass);
749 
750  /* Now call the class subclassable */
751  /* method */
752  TheQueueClass->subClassable(false);
753 
754  /***************************************************************************/
755  /* RELATION */
756  /***************************************************************************/
757 
758  /* Add the NEW method to the */
759  /* class behaviour mdict */
761 
762  /* set the scope of the methods to */
763  /* this classes oref */
764  TheRelationClassBehaviour->setMethodDictionaryScope(TheRelationClass);
765 
766  /* Add the instance methods to the */
767  /* instance behaviour mdict */
788 
789  /* set the scope of the methods to */
790  /* this classes oref */
791  TheRelationBehaviour->setMethodDictionaryScope(TheRelationClass);
792 
793  /* Now call the class subclassable */
794  /* method */
795  TheRelationClass->subClassable(false);
796 
797  /***************************************************************************/
798  /* STEM */
799  /***************************************************************************/
800 
801  /* Add the NEW method to the class */
802  /* behaviour mdict */
804  /* set the scope of the methods to */
805  /* this classes oref */
806  TheStemClassBehaviour->setMethodDictionaryScope(TheStemClass);
807 
808  /* Add the instance methods to the */
809  /* instance behaviour mdict */
821  defineKernelMethod(CHAR_UNKNOWN ,TheStemBehaviour, CPPM(RexxObject::unknownRexx), 2, true); // pass named arguments
822 
830 
831  /* set the scope of the methods to */
832  /* this classes oref */
833  TheStemBehaviour->setMethodDictionaryScope(TheStemClass);
834 
835  /* delete these methods from stems by*/
836  /* using .nil as the methobj */
837  TheStemBehaviour->define(getGlobalName(CHAR_STRICT_EQUAL) , OREF_NULL);
838  TheStemBehaviour->define(getGlobalName(CHAR_EQUAL) , OREF_NULL);
839  TheStemBehaviour->define(getGlobalName(CHAR_STRICT_BACKSLASH_EQUAL), OREF_NULL);
840  TheStemBehaviour->define(getGlobalName(CHAR_BACKSLASH_EQUAL) , OREF_NULL);
841  TheStemBehaviour->define(getGlobalName(CHAR_LESSTHAN_GREATERTHAN) , OREF_NULL);
842  TheStemBehaviour->define(getGlobalName(CHAR_GREATERTHAN_LESSTHAN) , OREF_NULL);
843 
844  /* Now call the class subclassable */
845  /* method */
846  TheStemClass->subClassable(false);
847 
848  /***************************************************************************/
849  /* STRING */
850  /***************************************************************************/
851 
852  /* Add the NEW method to the class */
853  /* behaviour mdict */
855 
856  /* set the scope of the methods to */
857  /* this classes oref */
858  TheStringClassBehaviour->setMethodDictionaryScope(TheStringClass);
859 
860  /* Add the instance methods to the */
861  /* instance behaviour mdict */
929  defineKernelMethod(CHAR_LESSTHAN_GREATERTHAN ,TheStringBehaviour, CPPM(RexxString::notEqual), 1);
930  defineKernelMethod(CHAR_GREATERTHAN_LESSTHAN ,TheStringBehaviour, CPPM(RexxString::notEqual), 1);
936  defineKernelMethod(CHAR_BACKSLASH_GREATERTHAN ,TheStringBehaviour, CPPM(RexxString::isLessOrEqual), 1);
938  defineKernelMethod(CHAR_STRICT_BACKSLASH_EQUAL ,TheStringBehaviour, CPPM(RexxString::strictNotEqual), 1);
941  defineKernelMethod(CHAR_STRICT_GREATERTHAN_EQUAL ,TheStringBehaviour, CPPM(RexxString::strictGreaterOrEqual), 1);
942  defineKernelMethod(CHAR_STRICT_BACKSLASH_LESSTHAN ,TheStringBehaviour, CPPM(RexxString::strictGreaterOrEqual), 1);
944  defineKernelMethod(CHAR_STRICT_BACKSLASH_GREATERTHAN ,TheStringBehaviour, CPPM(RexxString::strictLessOrEqual), 1);
968  /* set the scope of the methods to */
969  /* this classes oref */
970  TheStringBehaviour->setMethodDictionaryScope(TheStringClass);
971 
972  /* Now call the class subclassable */
973  /* method */
974  TheStringClass->subClassable(false);
975 
976 
977  /***************************************************************************/
978  /* MUTABLEBUFFER */
979  /***************************************************************************/
980 
981  /* Add the NEW method to the class */
982  /* behaviour mdict */
984 
985  /* set the scope of the methods to */
986  /* this classes oref */
987  TheMutableBufferClassBehaviour->setMethodDictionaryScope(TheMutableBufferClass);
988 
989  /* Add the instance methods to the */
990  /* instance behaviour mdict */
1005 
1031 
1032  /* set the scope of the methods to */
1033  /* this classes oref */
1034  TheMutableBufferBehaviour->setMethodDictionaryScope(TheMutableBufferClass);
1035  /* Now call the class subclassable */
1036  /* method */
1037  TheMutableBufferClass->subClassable(true);
1038 
1039  /***************************************************************************/
1040  /* INTEGER */
1041  /***************************************************************************/
1042 
1043  /* If the integer class was set up correctly it would have the */
1044  /* class_id method in its own class but instead it points to the one */
1045  /* in the string class. .*/
1046 
1048 
1049  /* set the scope of the methods to */
1050  /* this classes oref */
1051  TheIntegerClassBehaviour->setMethodDictionaryScope(TheIntegerClass);
1052 
1053  /* Add the instance methods to the */
1054  /* instance behaviour mdict */
1066  defineKernelMethod(CHAR_UNKNOWN ,TheIntegerBehaviour, CPPM(RexxObject::unknownRexx), 2, true); // pass named arguments
1075  defineKernelMethod(CHAR_LESSTHAN_GREATERTHAN ,TheIntegerBehaviour, CPPM(RexxInteger::notEqual), 1);
1076  defineKernelMethod(CHAR_GREATERTHAN_LESSTHAN ,TheIntegerBehaviour, CPPM(RexxInteger::notEqual), 1);
1082  defineKernelMethod(CHAR_BACKSLASH_GREATERTHAN ,TheIntegerBehaviour, CPPM(RexxInteger::isLessOrEqual), 1);
1085  defineKernelMethod(CHAR_STRICT_BACKSLASH_EQUAL ,TheIntegerBehaviour, CPPM(RexxInteger::strictNotEqual), 1);
1089  defineKernelMethod(CHAR_STRICT_BACKSLASH_LESSTHAN ,TheIntegerBehaviour, CPPM(RexxInteger::strictGreaterOrEqual), 1);
1091  defineKernelMethod(CHAR_STRICT_BACKSLASH_GREATERTHAN ,TheIntegerBehaviour, CPPM(RexxInteger::strictLessOrEqual), 1);
1099 
1100  /* set the scope of the methods to */
1101  /* this classes oref */
1102  TheIntegerBehaviour->setMethodDictionaryScope(TheIntegerClass);
1103 
1104  /* Now call the class subclassable */
1105  /* method */
1106  TheIntegerClass->subClassable(true);
1107 
1108  /***************************************************************************/
1109  /* NUMBERSTRING */
1110  /***************************************************************************/
1111 
1112  /* If the numberstring class was set up correctly it should have the */
1113  /* class_id method in its own class but instead it points to the one */
1114  /* in the string class. */
1115 
1117 
1118  /* set the scope of the methods to */
1119  /* this classes oref */
1120  TheNumberStringClassBehaviour->setMethodDictionaryScope(TheNumberStringClass);
1121 
1122  /* Add the instance methods to this */
1123  /* instance behaviour mdict */
1124  defineKernelMethod(CHAR_UNKNOWN ,TheNumberStringBehaviour, CPPM(RexxObject::unknownRexx), 2, true); // pass named arguments
1168 
1169  /* set the scope of the methods to */
1170  /* this classes oref */
1171  TheNumberStringBehaviour->setMethodDictionaryScope(TheNumberStringClass);
1172 
1173  /* Now call the class subclassable */
1174  /* method */
1175  TheNumberStringClass->subClassable(true);
1176 
1177 
1178  /***************************************************************************/
1179  /* SUPPLIER */
1180  /***************************************************************************/
1181  /* Add the NEW methods to the class */
1182  /* behaviour mdict */
1184  /* set the scope of the methods to */
1185  /* this classes oref */
1186  TheSupplierClassBehaviour->setMethodDictionaryScope(TheSupplierClass);
1187 
1188 
1189  /* Add the instance methods to the */
1190  /* instance behaviour mdict */
1191 
1197 
1198  /* set the scope of the methods to */
1199  /* this classes oref */
1200  TheSupplierBehaviour->setMethodDictionaryScope(TheSupplierClass);
1201 
1202  /* Now call the class subclassable */
1203  /* method */
1204  TheSupplierClass->subClassable(false);
1205 
1206  /***************************************************************************/
1207  /* TABLE */
1208  /***************************************************************************/
1209 
1210  /* Add the NEW methods to the class */
1211  /* behaviour mdict */
1213 
1214  /* set the scope of the methods to */
1215  /* this classes oref */
1216  TheTableClassBehaviour->setMethodDictionaryScope(TheTableClass);
1217 
1218  /* Add the instance methods to the */
1219  /* instance behaviour mdict */
1236 
1237  /* set the scope of the methods to */
1238  /* this classes oref */
1239  TheTableBehaviour->setMethodDictionaryScope(TheTableClass);
1240 
1241  /* Now call the class subclassable */
1242  /* method */
1243  TheTableClass->subClassable(false);
1244 
1245  /***************************************************************************/
1246  /* IDENTITYTABLE */
1247  /***************************************************************************/
1248 
1249  /* Add the NEW methods to the class */
1250  /* behaviour mdict */
1252 
1253  /* set the scope of the methods to */
1254  /* this classes oref */
1255  TheIdentityTableClassBehaviour->setMethodDictionaryScope(TheIdentityTableClass);
1256 
1257  /* Add the instance methods to the */
1258  /* instance behaviour mdict */
1275 
1276  /* set the scope of the methods to */
1277  /* this classes oref */
1278  TheIdentityTableBehaviour->setMethodDictionaryScope(TheIdentityTableClass);
1279 
1280  /* Now call the class subclassable */
1281  /* method */
1282  TheIdentityTableClass->subClassable(false);
1283 
1284 
1285  /***************************************************************************/
1286  /* POINTER */
1287  /***************************************************************************/
1288  /* Add the NEW methods to the class */
1289  /* behaviour mdict */
1291  /* set the scope of the methods to */
1292  /* this classes oref */
1293  ThePointerClassBehaviour->setMethodDictionaryScope(ThePointerClass);
1294 
1295 
1296  /* Add the instance methods to the */
1297  /* instance behaviour mdict */
1301  defineKernelMethod(CHAR_STRICT_BACKSLASH_EQUAL ,ThePointerBehaviour, CPPM(RexxPointer::notEqual), 1);
1303 
1304  /* set the scope of the methods to */
1305  /* this classes oref */
1306  ThePointerBehaviour->setMethodDictionaryScope(ThePointerClass);
1307 
1308  /* Now call the class subclassable */
1309  /* method */
1310  ThePointerClass->subClassable(false);
1311 
1312 
1313  /***************************************************************************/
1314  /* BUFFER */
1315  /***************************************************************************/
1316  /* Add the NEW methods to the class */
1317  /* behaviour mdict */
1319  /* set the scope of the methods to */
1320  /* this classes oref */
1321  TheBufferClassBehaviour->setMethodDictionaryScope(TheBufferClass);
1322 
1323 
1324  /* Add the instance methods to the */
1325  /* instance behaviour mdict */
1326 
1327  // NO instance methods on buffer
1328 
1329  /* set the scope of the methods to */
1330  /* this classes oref */
1331  TheBufferBehaviour->setMethodDictionaryScope(TheBufferClass);
1332 
1333  /* Now call the class subclassable */
1334  /* method */
1335  TheBufferClass->subClassable(false);
1336 
1337 
1338  /***************************************************************************/
1339  /* WEAKREFERENCE */
1340  /***************************************************************************/
1341  /* Add the NEW methods to the class */
1342  /* behaviour mdict */
1344  /* set the scope of the methods to */
1345  /* this classes oref */
1346  TheWeakReferenceClassBehaviour->setMethodDictionaryScope(TheWeakReferenceClass);
1347 
1348 
1349  /* Add the instance methods to the */
1350  /* instance behaviour mdict */
1352  /* set the scope of the methods to */
1353  /* this classes oref */
1354  TheWeakReferenceBehaviour->setMethodDictionaryScope(TheWeakReferenceClass);
1355 
1356  /* Now call the class subclassable */
1357  /* method */
1358  TheWeakReferenceClass->subClassable(false);
1359 
1360 
1361  /***************************************************************************/
1362  /* STACKFRAME */
1363  /***************************************************************************/
1364  /* Add the NEW methods to the class */
1365  /* behaviour mdict */
1367  /* set the scope of the methods to */
1368  /* this classes oref */
1369  TheStackFrameClassBehaviour->setMethodDictionaryScope(TheStackFrameClass);
1370 
1371 
1372  /* Add the instance methods to the */
1373  /* instance behaviour mdict */
1381  // the string method just maps to TRACELINE
1384 
1385  /* set the scope of the methods to */
1386  /* this classes oref */
1387  TheStackFrameBehaviour->setMethodDictionaryScope(TheStackFrameClass);
1388 
1389  /* Now call the class subclassable */
1390  /* method */
1391  TheStackFrameClass->subClassable(false);
1392 
1393  /***************************************************************************/
1394  /* RexxBlock */
1395  /***************************************************************************/
1396 
1397  /* Add the NEW methods to the */
1398  /* class behaviour */
1400  /* set the scope of the methods to */
1401  /* this classes oref */
1402  TheRexxBlockClassBehaviour->setMethodDictionaryScope(TheRexxBlockClass);
1403 
1410 
1411  /* Add the instance methods to the */
1412  /* instance behaviour mdict */
1413  /* set the scope of the methods to */
1414  /* this classes oref */
1415  TheRexxBlockBehaviour->setMethodDictionaryScope(TheRexxBlockClass);
1416 
1417  /* Now call the class subclassable */
1418  /* method */
1419  TheRexxBlockClass->subClassable(true);
1420 
1421  /***************************************************************************/
1422  /* RexxText */
1423  /***************************************************************************/
1424 
1426  /* set the scope of the methods to */
1427  /* this classes oref */
1428  TheRexxTextClassBehaviour->setMethodDictionaryScope(TheRexxTextClass);
1429 
1430  /* set the scope of the methods to */
1431  /* this classes oref */
1432  TheRexxTextBehaviour->setMethodDictionaryScope(TheRexxTextClass);
1433 
1434  /* Now call the class subclassable */
1435  /* method */
1436  TheRexxTextClass->subClassable(true);
1437 
1438  /***************************************************************************/
1439  /***************************************************************************/
1440  /***************************************************************************/
1441  /* These classes don't have any class methods */
1442  /* and are not subclassed from object */
1443 
1444 #define kernel_public(name, object, dir) ((RexxDirectory *)dir)->setEntry(getGlobalName(name), (RexxObject *)object)
1445 
1446  /* put the kernel-provided public objects in the environment directory */
1450  kernel_public(CHAR_ENVIRONMENT ,TheEnvironment ,TheEnvironment);
1452  kernel_public(CHAR_KERNEL ,TheKernel ,TheEnvironment);
1458  kernel_public(CHAR_REXXCONTEXT ,TheRexxContextClass ,TheEnvironment);
1466  kernel_public(CHAR_MUTABLEBUFFER ,TheMutableBufferClass ,TheEnvironment);
1469  kernel_public(CHAR_SYSTEM ,TheSystem ,TheEnvironment);
1471  kernel_public(CHAR_IDENTITYTABLE ,TheIdentityTableClass,TheEnvironment);
1474  kernel_public(CHAR_WEAKREFERENCE ,TheWeakReferenceClass ,TheEnvironment);
1477 
1478  /* set up the kernel directory (MEMORY done elsewhere) */
1479  kernel_public(CHAR_INTEGER ,TheIntegerClass , TheKernel);
1480  kernel_public(CHAR_NUMBERSTRING ,TheNumberStringClass, TheKernel);
1481 
1482  // TODO: Make the kernel directory part of the memory object, but not in the
1483  // environment.
1484 
1485  kernel_public(CHAR_FUNCTIONS ,TheFunctionsDirectory ,TheKernel);
1486  kernel_public(CHAR_NULLARRAY ,TheNullArray ,TheKernel);
1487  kernel_public(CHAR_NULLPOINTER ,TheNullPointer ,TheKernel);
1488  kernel_public(CHAR_COMMON_RETRIEVERS,TheCommonRetrievers ,TheKernel);
1489  kernel_public(CHAR_ENVIRONMENT ,TheEnvironment ,TheKernel);
1490 
1491  /* set Oryx version */
1493  /* set the system name */
1495  /* set the internal system name */
1497  /* and the system version info */
1499  // initialize our thread vector for external calls.
1501 
1502 /******************************************************************************/
1503 /* Complete the image build process, calling BaseClasses to establish */
1504 /* the rest of the REXX image. */
1505 /******************************************************************************/
1506 
1507  /* set up the kernel methods that will be defined on OBJECT classes in */
1508  /* BaseClasses.ORX and ORYXJ.ORX. */
1509  {
1510  /* create a kernel methods directory */
1511  RexxDirectory *kernel_methods = new_directory();
1512  ProtectedObject p1(kernel_methods); // protect from GC
1513  kernel_methods->put(new RexxMethod(getGlobalName(CHAR_LOCAL), CPPCode::resolveExportedMethod(CHAR_LOCAL, CPPM(RexxLocal::local), 0, -1)), getGlobalName(CHAR_LOCAL));
1514 
1515  /* create the BaseClasses method and run it*/
1516  RexxString *symb = getGlobalName(BASEIMAGELOAD); /* get a name version of the string */
1517  /* go resolve the program name */
1519  // create a new stack frame to run under
1521  try
1522  {
1523  /* create a method object out of this*/
1524  RoutineClass *loader = new RoutineClass(programName);
1525 
1526 
1527  // RexxObject *args = kernel_methods; // temporary to avoid type-punning warnings
1528  RexxObject *args[1];
1529  args[0] = kernel_methods; // 1 positional argument
1530  ProtectedObject result;
1531  /* now call BaseClasses to finish the image*/
1532  loader->runProgram(ActivityManager::currentActivity, OREF_PROGRAM, OREF_NULL, (RexxObject **)&args, 1, 0, result);
1533  }
1534  catch (ActivityException )
1535  {
1536  ActivityManager::currentActivity->error(); /* do error cleanup */
1537  Interpreter::logicError("Error building kernel image. Image not saved.");
1538  }
1539 
1540  }
1541 
1542  /* define and suppress methods in the nil object */
1543  TheNilObject->defMethod(getGlobalName(CHAR_COPY), (RexxMethod *)TheNilObject);
1544  TheNilObject->defMethod(getGlobalName(CHAR_START), (RexxMethod *)TheNilObject);
1545  TheNilObject->defMethod(getGlobalName(CHAR_OBJECTNAMEEQUALS), (RexxMethod *)TheNilObject);
1546 
1547  // ok, .NIL has been constructed. As a last step before saving the image, we need to change
1548  // the type identifier in the behaviour so that this will get the correct virtual function table
1549  // restored when the image reloads.
1550  TheNilObject->behaviour->setClassType(T_NilObject);
1551 
1552  RexxClass *ordered = (RexxClass *)TheEnvironment->get(getGlobalName(CHAR_ORDEREDCOLLECTION));
1553 
1554  TheArrayClass->inherit(ordered, OREF_NULL);
1555  TheArrayClass->setRexxDefined();
1556 
1557  TheQueueClass->inherit(ordered, OREF_NULL);
1558  TheQueueClass->setRexxDefined();
1559 
1560  TheListClass->inherit(ordered, OREF_NULL);
1561  TheListClass->setRexxDefined();
1562 
1563  RexxClass *map = (RexxClass *)TheEnvironment->get(getGlobalName(CHAR_MAPCOLLECTION));
1564 
1565  TheTableClass->inherit(map, OREF_NULL);
1566  TheTableClass->setRexxDefined();
1567 
1568  TheIdentityTableClass->inherit(map, OREF_NULL);
1569  TheIdentityTableClass->setRexxDefined();
1570 
1571  TheRelationClass->inherit(map, OREF_NULL);
1572  TheRelationClass->setRexxDefined();
1573 
1574  TheDirectoryClass->inherit(map, OREF_NULL);
1575  TheDirectoryClass->setRexxDefined();
1576 
1577  TheStemClass->inherit(map, OREF_NULL);
1578  TheStemClass->setRexxDefined();
1579 
1580  RexxClass *comparable = (RexxClass *)TheEnvironment->get(getGlobalName(CHAR_COMPARABLE));
1581 
1582  TheStringClass->inherit(comparable, OREF_NULL);
1583  TheStringClass->setRexxDefined();
1584 
1585  // disable the special class methods we only use during the image build phase.
1586  // this removes this from all of the subclasses as well
1587  TheObjectClass->removeClassMethod(new_string(CHAR_DEFINE_METHODS));
1588  TheObjectClass->removeClassMethod(new_string(CHAR_SHRIEKREXXDEFINED));
1589  TheObjectClass->removeClassMethod(new_string("!DEFINE_CLASS_METHOD"));
1590 
1591  // now save the image
1592  memoryObject.saveImage(imageTarget);
1594  exit(RC_OK); // successful build
1595 }
@ T_NilObject
RexxDirectory * new_directory()
RexxInteger * new_integer(wholenumber_t v)
#define CPPM(n)
RexxObject *(RexxObject::* PCPPM)()
#define TheStackFrameClassBehaviour
#define TheStringBehaviour
#define TheObjectClassBehaviour
#define TheRexxTextClassBehaviour
#define ThePointerClassBehaviour
#define TheNumberStringBehaviour
#define ThePointerBehaviour
#define TheStemBehaviour
#define TheMutableBufferBehaviour
#define TheIdentityTableClassBehaviour
#define TheNumberStringClassBehaviour
#define TheBufferBehaviour
#define TheIntegerBehaviour
#define TheListClassBehaviour
#define TheRexxContextClassBehaviour
#define TheRexxBlockClassBehaviour
#define TheWeakReferenceBehaviour
#define TheRoutineBehaviour
#define TheRelationBehaviour
#define TheArrayBehaviour
#define TheMessageBehaviour
#define TheWeakReferenceClassBehaviour
#define TheIdentityTableBehaviour
#define TheMethodClassBehaviour
#define TheRexxBlockBehaviour
#define TheListBehaviour
#define TheSupplierBehaviour
#define TheClassBehaviour
#define ThePackageBehaviour
#define TheIntegerClassBehaviour
#define TheRoutineClassBehaviour
#define TheStackFrameBehaviour
#define TheMessageClassBehaviour
#define TheDirectoryClassBehaviour
#define TheTableBehaviour
#define TheBufferClassBehaviour
#define TheRexxContextBehaviour
#define TheClassClassBehaviour
#define TheMutableBufferClassBehaviour
#define TheQueueBehaviour
#define TheStringClassBehaviour
#define ThePackageClassBehaviour
#define TheRelationClassBehaviour
#define TheObjectBehaviour
#define TheQueueClassBehaviour
#define TheSupplierClassBehaviour
#define TheTableClassBehaviour
#define TheRexxTextBehaviour
#define TheArrayClassBehaviour
#define TheStemClassBehaviour
#define TheMethodBehaviour
#define TheDirectoryBehaviour
ActivityException
const size_t A_COUNT
Definition: RexxCore.h:250
#define ThePackageClass
Definition: RexxCore.h:155
#define TheWeakReferenceClass
Definition: RexxCore.h:169
#define OREF_NULL
Definition: RexxCore.h:60
#define TheStackFrameClass
Definition: RexxCore.h:170
#define IntegerThree
Definition: RexxCore.h:192
#define TheObjectClass
Definition: RexxCore.h:158
#define IntegerSeven
Definition: RexxCore.h:196
#define TheStemClass
Definition: RexxCore.h:160
#define TheSystem
Definition: RexxCore.h:179
#define TheKernel
Definition: RexxCore.h:178
#define IntegerFour
Definition: RexxCore.h:193
#define TheTableClass
Definition: RexxCore.h:164
#define TheRexxTextClass
Definition: RexxCore.h:172
#define IntegerFive
Definition: RexxCore.h:194
#define TheNullArray
Definition: RexxCore.h:183
#define IntegerOne
Definition: RexxCore.h:190
#define TheEnvironment
Definition: RexxCore.h:174
#define TheClassClass
Definition: RexxCore.h:148
#define TheStringClass
Definition: RexxCore.h:161
#define IntegerEight
Definition: RexxCore.h:197
#define TheSupplierClass
Definition: RexxCore.h:163
#define TheCommonRetrievers
Definition: RexxCore.h:177
#define TheTrueObject
Definition: RexxCore.h:186
#define TheRelationClass
Definition: RexxCore.h:166
#define TheIntegerClass
Definition: RexxCore.h:150
#define TheListClass
Definition: RexxCore.h:151
#define TheNullPointer
Definition: RexxCore.h:187
#define TheBufferClass
Definition: RexxCore.h:168
#define TheFunctionsDirectory
Definition: RexxCore.h:176
#define IntegerTwo
Definition: RexxCore.h:191
#define IntegerSix
Definition: RexxCore.h:195
#define TheRexxContextClass
Definition: RexxCore.h:156
#define TheArrayClass
Definition: RexxCore.h:147
#define ThePointerClass
Definition: RexxCore.h:167
#define TheDirectoryClass
Definition: RexxCore.h:149
#define TheNilObject
Definition: RexxCore.h:181
#define TheMessageClass
Definition: RexxCore.h:152
const int RC_OK
Definition: RexxCore.h:256
#define TheFalseObject
Definition: RexxCore.h:185
#define TheQueueClass
Definition: RexxCore.h:159
#define TheMethodClass
Definition: RexxCore.h:153
#define IntegerNine
Definition: RexxCore.h:198
#define TheRoutineClass
Definition: RexxCore.h:154
#define TheNumberStringClass
Definition: RexxCore.h:157
#define IntegerZero
Definition: RexxCore.h:189
#define TheIdentityTableClass
Definition: RexxCore.h:165
#define TheRexxBlockClass
Definition: RexxCore.h:171
#define TheMutableBufferClass
Definition: RexxCore.h:162
#define IntegerMinusOne
Definition: RexxCore.h:199
#define VARIABLE_SUPER
#define VARIABLE_RESULT
#define VARIABLE_RC
#define VARIABLE_SIGL
#define VARIABLE_SELF
RexxMemory memoryObject
Definition: RexxMemory.cpp:85
#define CLASS_CREATE(name, id, className)
Definition: RexxMemory.hpp:498
#define kernel_public(name, object, dir)
RexxString * new_string(const char *s, stringsizeB_t bl, sizeC_t cl=-1)
static void init()
static void returnActivity(RexxActivity *)
static RexxActivity *volatile currentActivity
PackageClass * getPackage()
RexxArray * source()
static CPPCode * resolveExportedMethod(const char *, PCPPM targetMethod, size_t argcount, bool passNamedArgs)
Definition: CPPCode.cpp:1113
static void logicError(const char *desc)
static void init()
Definition: Interpreter.cpp:77
static RexxString * getVersionNumber()
Definition: Version.cpp:52
static InterpreterInstance * createInterpreterInstance()
Definition: Interpreter.hpp:95
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()
static void createInstance()
RexxDirectory * getPublicRoutines()
static void initialize()
static void initializeThreadContext()
wholenumber_t error()
void createNewActivationStack()
RexxString * resolveProgramName(RexxString *, RexxString *, RexxString *)
RexxObject * lastItem()
RexxObject * isEmpty()
Definition: ArrayClass.cpp:301
RexxObject * getRexx(RexxObject **, size_t, size_t)
Definition: ArrayClass.cpp:506
static void createInstance()
Definition: ArrayClass.cpp:95
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()
RexxObject * define(RexxString *, RexxMethod *)
RexxString * getKind()
Definition: BlockClass.hpp:105
static void createInstance()
Definition: BlockClass.cpp:167
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
static void createInstance()
Definition: BufferClass.cpp:54
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 *)
RexxString * defaultNameRexx()
RexxObject * notEqual(RexxObject *)
Definition: ClassClass.cpp:223
RexxArray * getSubClasses()
Definition: ClassClass.cpp:328
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)
static void createInstance()
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()
static void createInstance()
RexxObject * hasIndex(RexxString *)
RexxObject * removeRexx(RexxString *)
RexxObject * removeRexx(RexxObject *)
RexxObject * getRexx(RexxObject *)
RexxObject * hasItemRexx(RexxObject *)
RexxObject * allAt(RexxObject *)
RexxObject * indexRexx(RexxObject *value)
RexxSupplier * supplier()
RexxObject * hasIndexRexx(RexxObject *)
RexxObject * putRexx(RexxObject *, RexxObject *)
RexxObject * removeItemRexx(RexxObject *value)
RexxObject * newRexx(RexxObject **, size_t, size_t)
static void createInstance()
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 *)
RexxBehaviour * behaviour
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
static void createInstance()
Definition: ListClass.cpp:60
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
static void definePrivateKernelMethod(const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments, bool named_arguments=false)
Definition: Setup.cpp:122
void saveImage(const char *imageTarget)
static void createStrings()
Definition: GlobalNames.cpp:47
static void createImage(const char *imageTarget)
Definition: Setup.cpp:146
void setMarkTable(RexxTable *marktable)
Definition: RexxMemory.hpp:225
static void defineKernelMethod(const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments, bool named_arguments=false)
Definition: Setup.cpp:92
static void defineProtectedKernelMethod(const char *name, RexxBehaviour *behaviour, PCPPM entryPoint, size_t arguments, bool named_arguments=false)
Definition: Setup.cpp:106
static RexxString * getGlobalName(const char *value)
void enableOrefChecks()
Definition: RexxMemory.hpp:268
static void create()
RexxString * messageName()
RexxObject * completed()
RexxObject * messageTarget()
static void createInstance()
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)
static void createInstance()
Definition: MethodClass.cpp:74
RexxObject * isPrivateRexx()
RexxObject * setPrivateRexx()
void setPrivate()
RexxObject * setUnguardedRexx()
RexxObject * setProtectedRexx()
RexxObject * setSecurityManager(RexxObject *)
RexxObject * isProtectedRexx()
RexxMethod * newFileRexx(RexxString *)
RexxObject * isGuardedRexx()
RexxMethod * loadExternalMethod(RexxString *name, RexxString *descriptor)
void setProtected()
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)
static void createInstance()
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)
static void createInstance()
RexxString * formatRexx(RexxObject *, RexxObject *, RexxObject *, RexxObject *)
RexxClass * classObject()
RexxInteger * Sign()
RexxNumberString * Min(RexxObject **, size_t, size_t)
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 *)
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()
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 *)
static void createInstance()
Definition: ObjectClass.cpp:72
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)
static void createInstance()
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
static void createInstance()
Definition: QueueClass.cpp:58
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 *)
static void createInstance()
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
static void createInstance()
Definition: StemClass.cpp:63
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 *)
static void createInstance()
Definition: StringClass.cpp:67
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 *)
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 * 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()
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)
static void createInstance()
RexxObject * newRexx(RexxObject **, size_t, size_t)
Definition: TableClass.cpp:187
static void createInstance()
Definition: TableClass.cpp:58
RexxObject * itemsRexx()
Definition: TableClass.cpp:147
static void createInstance()
void runProgram(RexxActivity *activity, RexxString *calltype, RexxString *environment, RexxObject **arguments, size_t argCount, size_t named_argCount, ProtectedObject &result)
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 *)
static void createInstance()
RexxString * getType()
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxString * getTraceLine()
RexxArray * getArguments()
static void createInstance()
RexxObject * getLine()
RexxString * getName()
RexxObject * getTarget()
RexxObject * getExecutable()
static RexxString * getSystemVersion()
static RexxString * getSystemName()
static RexxString * getInternalSystemName()
static void createInstance()
RexxObject * newRexx(RexxObject **args, size_t argc, size_t named_argc)
RexxObject * value()
#define BASEIMAGELOAD