47 #ifndef RexxCore_INCLUDED
48 #define RexxCore_INCLUDED
60 #define OREF_NULL NULL
94 #define OrefSet(o,r,v) ((o)->isOldSpace() ? memoryObject.setOref((void *)&(r),(RexxObject *)v) : (RexxObject *)(r=v))
96 #define OrefSet(o,r,v) memoryObject.checkSetOref((RexxObject *)o, (RexxObject **)&(r), (RexxObject *)v, __FILE__, __LINE__)
115 #ifndef INITGLOBALPTR
116 #define INITGLOBALPTR
119 #define EXTERN extern
123 #define EXTERNMEM extern
131 #define CLASS_EXTERNAL(b,c)
132 #define CLASS_INTERNAL(b,c)
134 #define koper(name) RexxObject *name(RexxObject *);
147 #define TheArrayClass RexxArray::classInstance
148 #define TheClassClass RexxClass::classInstance
149 #define TheDirectoryClass RexxDirectory::classInstance
150 #define TheIntegerClass RexxInteger::classInstance
151 #define TheListClass RexxList::classInstance
152 #define TheMessageClass RexxMessage::classInstance
153 #define TheMethodClass RexxMethod::classInstance
154 #define TheRoutineClass RoutineClass::classInstance
155 #define ThePackageClass PackageClass::classInstance
156 #define TheRexxContextClass RexxContext::classInstance
157 #define TheNumberStringClass RexxNumberString::classInstance
158 #define TheObjectClass RexxObject::classInstance
159 #define TheQueueClass RexxQueue::classInstance
160 #define TheStemClass RexxStem::classInstance
161 #define TheStringClass RexxString::classInstance
162 #define TheMutableBufferClass RexxMutableBuffer::classInstance
163 #define TheSupplierClass RexxSupplier::classInstance
164 #define TheTableClass RexxTable::classInstance
165 #define TheIdentityTableClass RexxIdentityTable::classInstance
166 #define TheRelationClass RexxRelation::classInstance
167 #define ThePointerClass RexxPointer::classInstance
168 #define TheBufferClass RexxBuffer::classInstance
169 #define TheWeakReferenceClass WeakReference::classInstance
170 #define TheStackFrameClass StackFrameClass::classInstance
171 #define TheRexxBlockClass RexxBlock::classInstance
172 #define TheRexxTextClass RexxText::classInstance
174 #define TheEnvironment RexxMemory::environment
175 #define TheStaticRequires RexxMemory::staticRequires
176 #define TheFunctionsDirectory RexxMemory::functionsDir
177 #define TheCommonRetrievers RexxMemory::commonRetrievers
178 #define TheKernel RexxMemory::kernel
179 #define TheSystem RexxMemory::system
181 #define TheNilObject RexxNilObject::nilObject
183 #define TheNullArray RexxArray::nullArray
185 #define TheFalseObject RexxInteger::falseObject
186 #define TheTrueObject RexxInteger::trueObject
187 #define TheNullPointer RexxPointer::nullPointer
189 #define IntegerZero RexxInteger::integerZero
190 #define IntegerOne RexxInteger::integerOne
191 #define IntegerTwo RexxInteger::integerTwo
192 #define IntegerThree RexxInteger::integerThree
193 #define IntegerFour RexxInteger::integerFour
194 #define IntegerFive RexxInteger::integerFive
195 #define IntegerSix RexxInteger::integerSix
196 #define IntegerSeven RexxInteger::integerSeven
197 #define IntegerEight RexxInteger::integerEight
198 #define IntegerNine RexxInteger::integerNine
199 #define IntegerMinusOne RexxInteger::integerMinusOne
209 #define RXROUNDUP(n,to) ((((n)+(to-1))/(to))*to)
210 #define rounddown(n,to) (((n)/(to))*to)
212 #define isOfClass(t,r) (r)->isObjectType(The##t##Behaviour)
213 #define isOfClassType(t,r) (r)->isObjectType(T_##t)
220 #define env_find(s) (TheEnvironment->entry(s))
232 #define GLOBAL_NAME(name, value) EXTERN RexxString * OREF_##name INITGLOBALPTR;
310 return object->requiredString(kind, position);
324 return object->requiredString(kind, name);
510 void check(
RexxObject **namedArglist,
size_t namedArgCount,
bool strict,
bool extraAllowed,
size_t minimumRequired=0);
520 bool check(
const char *name,
RexxObject *value,
bool strict =
true,
ssize_t name_minimumLength = -1,
size_t from=0);
537 return (object->*((
PCPPM1)cppEntry))(argument);
void reportException(wholenumber_t error)
void missingArgument(RexxString *kind, size_t argumentPosition)
RexxInteger * new_integer(wholenumber_t v)
RexxObject *(RexxObject::* PCPPM1)(RexxObject *)
RexxObject *(RexxObject::* PCPPM)()
bool isInteger(RexxObject *o)
bool isStem(RexxObject *o)
codepoint_t optionalPadArgument(RexxObject *o, codepoint_t d, size_t p)
EXTERNMEM RexxMemory memoryObject
RexxString * stringArgument(RexxObject *object, RexxString *kind, size_t position)
RexxArray * REQUEST_ARRAY(RexxObject *obj)
bool isNumberString(RexxObject *o)
RexxString * REQUEST_STRING(RexxObject *object)
bool isPolymorphicString(RexxObject *o)
const int MAX_SYMBOL_LENGTH
size_t lengthArgument(RexxObject *o, size_t p)
size_t optionalPositive(RexxObject *o, size_t d, RexxString *kind, size_t p)
bool isString(RexxObject *o)
bool isMethod(RexxObject *o)
size_t optionalNonNegative(RexxObject *o, size_t d, RexxString *kind, size_t p)
codepoint_t padArgument(RexxObject *o, size_t p)
size_t optionalLengthArgument(RexxObject *o, size_t d, size_t p)
char optionalOptionArgument(RexxObject *o, char d, size_t p)
size_t optionalPositionArgument(RexxObject *o, size_t d, size_t p)
const int MAX_ERROR_NUMBER
void classArgument(RexxObject *object, RexxClass *clazz, RexxString *kind, RexxString *name)
bool isActivation(RexxObject *o)
size_t positionArgument(RexxObject *o, size_t p)
RexxObject * callOperatorMethod(RexxObject *object, size_t methodOffset, RexxObject *argument)
RexxArray * arrayArgument(RexxObject *object, RexxString *kind, size_t position)
RexxString * optionalStringArgument(RexxObject *o, RexxString *d, RexxString *kind, size_t p)
char optionArgument(RexxObject *o, size_t p)
void requiredArgument(RexxObject *object, RexxString *kind, size_t position)
bool isArray(RexxObject *o)
RexxInteger * REQUEST_INTEGER(RexxObject *obj)
#define Error_Invalid_argument_noarray
#define Error_Invalid_argument_noarg
#define Error_Invalid_argument_noclass
void check(RexxObject **namedArglist, size_t namedArgCount, bool strict, bool extraAllowed, size_t minimumRequired=0)
NamedArgument * namedArguments
NamedArguments(size_t count)
NamedArgument & operator[](size_t index)
static const size_t ARGUMENT_DIGITS
PCPPM getOperatorMethod(size_t index)
RexxBehaviour * behaviour
stringsize_t requiredPositive(RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
stringsize_t requiredNonNegative(RexxString *kind, size_t position, size_t precision=Numerics::ARGUMENT_DIGITS)
RexxInteger * requestInteger(size_t)
RexxArray * requestArray()
RexxString * requestString()
bool isInstanceOf(RexxClass *)
RexxNumberString * NumberString
NamedArgument(const char *name=NULL, ssize_t minimumLength=-1, RexxObject *value=OREF_NULL, bool assigned=false)