168 return id->getHashValue();
178 return this->
equal(other);
694 method_object = method_object->
newScope(
this);
701 p_method_object = method_object;
786 size_t subclass_list_size = subclass_list->
size();
787 for (
size_t i = 1; i <= subclass_list_size; i++)
811 size_t subclass_list_size = subclass_list->
size();
812 for (
size_t i = 1; i <= subclass_list_size; i++)
866 return method_object;
933 size_t subClassList_size = subClassList->
size();
934 for (
size_t index = 1; index <= subClassList_size; index++)
958 size_t subclass_list_size = subClassList->
size();
959 for (
size_t index = 1; index <= subclass_list_size ; index++)
998 if (!target_class_behaviour->
checkScope(
this))
1018 for (
size_t i = addedScopes->
size(); i > 0; i--)
1038 target_class_behaviour->
addScope(
this);
1070 if (!target_instance_behaviour->
checkScope(
this))
1077 target_instance_behaviour->
addScope(
this);
1103 if (!target_instance_behaviour->
checkScope(
this))
1110 target_instance_behaviour->
addScope(
this);
1137 target_mdict->
stringAdd(method_instance, method_name);
1162 sourceCollection->
sendMessage(OREF_SUPPLIERSYM, p2);
1185 newMethod = newMethod->
newScope(scope);
1189 newDictionary->
stringAdd(newMethod, method_name);
1191 return newDictionary;
1223 if (
this == mixin_class )
1274 if (class_index == 0 || instance_index == 0)
1321 ((instance_index = this->instanceSuperClasses->indexOf(mixin_class)) > 1))
1369 size_t named_argCount)
1401 dummy_subclass->
sendMessage(OREF_NEW, args + 1, argCount - 1, named_argCount, r);
1410 return enhanced_object;
1442 RexxClass *mixin_subclass = this->
subclass(package, mixin_id, meta_class, enhancing_class_methods);
1452 return mixin_subclass;
1718 void *RexxClass::operator
new(
size_t size,
1720 const char *className,
1753 return(
void *)new_class;
1779 OrefSet(new_class, new_class->
id, class_id);
1857 new_class->
sendMessage(OREF_INIT, args + 1, argCount - 1, named_argCount);
1910 obj->requiresUninit();
1915 obj->
sendMessage(GlobalNames::INIT, initArgs, argCount, result);
1924 size_t *remainderSize,
1935 *argument1 = arg_array[0];
1941 *argument2 = arg_array[1];
1949 *init_args = arg_array + required;
1952 if (argCount >= required)
1954 *remainderSize = argCount - required;
void reportException(wholenumber_t error)
void reportNomethod(RexxErrorCodes error, RexxString *message, RexxObject *receiver)
RexxString * lastMessageName()
RexxArray * new_array(size_t s)
RexxIdentityTable * new_identity_table()
#define TheClassBehaviour
#define TheClassClassBehaviour
#define TheObjectBehaviour
RexxObject * resultOrNil(RexxInternalObject *o)
RexxObject * booleanObject(bool v)
RexxString * stringArgument(RexxObject *object, RexxString *kind, size_t position)
RexxString * REQUEST_STRING(RexxObject *object)
#define TheNumberStringClass
void requiredArgument(RexxObject *object, RexxString *kind, size_t position)
#define Error_Logical_value_method
#define Error_Execution_mixinclass
#define Error_No_result_object_message
#define Error_Translation_bad_metaclass
#define Error_Execution_uninherit
#define Error_Incorrect_method_minarg
#define Error_No_method_name
#define Error_Execution_recursive_inherit
#define Error_Execution_abstract_class
#define Error_Execution_abstract_metaclass
#define Error_Execution_baseclass
#define memory_mark(oref)
RexxObject * new_object(size_t s)
#define memory_mark_general(oref)
RexxString * new_string(const char *s, stringsize_t l)
RexxString * new_proxy(const char *name)
size_t addFirst(RexxObject *item)
size_t insertAfter(RexxObject *item, size_t index)
size_t indexOf(RexxObject *)
size_t addLast(RexxObject *item)
RexxObject * deleteItem(size_t index)
RexxObject * get(size_t pos)
RexxTable * getMethodDictionary()
void merge(RexxBehaviour *)
RexxObject * mergeScope(RexxObject *)
RexxObject * addScope(RexxObject *)
void methodDictionaryMerge(RexxTable *)
RexxObject * define(RexxString *, RexxMethod *)
void setMethodDictionary(RexxTable *m)
RexxObject * deleteMethod(RexxString *)
RexxObject * setScopes(RexxIdentityTable *)
bool checkScope(RexxObject *)
RexxIdentityTable * getScopes()
void subclass(RexxBehaviour *)
void setInstanceMethodDictionary(RexxTable *m)
void setOwningClass(RexxClass *c)
void removeSubclass(RexxClass *c)
void createClassBehaviour(RexxBehaviour *)
void setHasUninitDefined()
RexxClass * newRexx(RexxObject **args, size_t argCount, size_t named_argCount)
void setInstanceBehaviour(RexxBehaviour *)
RexxObject * deleteMethod(RexxString *)
RexxClass * getSuperClass()
RexxClass * subclassRexx(RexxString *, RexxClass *, RexxObject *)
RexxTable * methodDictionaryCreate(RexxTable *, RexxClass *)
static void createInstance()
void mergeSuperClassScopes(RexxBehaviour *target_instance_behaviour)
void addSubClass(RexxClass *)
static RexxClass * classInstance
PackageClass * getPackage()
void updateInstanceSubClasses()
void methodDictionaryMerge(RexxTable *, RexxTable *)
void setInitialFlagState()
RexxTable * instanceMethodDictionary
RexxMethod * method(RexxString *)
void setMetaClass(RexxClass *)
RexxClass * getMetaClass()
RexxArray * instanceSuperClasses
RexxTable * getInstanceBehaviourDictionary()
static void processNewArgs(RexxObject **, size_t, RexxObject ***, size_t *, size_t, RexxObject **, RexxObject **)
RexxObject * inherit(RexxClass *, RexxClass *)
void defmeths(RexxTable *)
RexxString * defaultNameRexx()
RexxObject * isMetaClassRexx()
RexxObject * notEqual(RexxObject *)
RexxArray * getSubClasses()
void liveGeneral(int reason)
RexxIdentityTable * metaClassScopes
void removeClassMethod(RexxString *method_name)
RexxClass * getBaseClass()
RexxTable * classMethodDictionary
RexxObject * defineMethod(RexxString *, RexxMethod *)
RexxArray * getSuperClasses()
RexxObject * isAbstractRexx()
void setPackage(PackageClass *s)
RexxObject * isSubclassOf(RexxClass *other)
RexxObject * enhanced(RexxObject **, size_t, size_t)
RexxObject * unflatten(RexxEnvelope *)
RexxInteger * queryMixinClass()
RexxBehaviour * getInstanceBehaviour()
RexxTable * getBehaviourDictionary()
RexxObject * equal(RexxObject *)
void setParentHasUninitDefined()
bool parentHasUninitDefined()
RexxObject * defineMethods(RexxTable *)
RexxObject * setRexxDefined()
bool isCompatibleWith(RexxClass *other)
void completeNewObject(RexxObject *obj, RexxObject **initArgs=OREF_NULL, size_t argCount=0)
RexxObject * defineClassMethod(RexxString *method_name, RexxMethod *newMethod)
RexxSupplier * methods(RexxClass *)
void flatten(RexxEnvelope *)
RexxClass * mixinClassRexx(RexxString *, RexxClass *, RexxObject *)
RexxBehaviour * instanceBehaviour
RexxObject * strictEqual(RexxObject *)
bool isEqual(RexxObject *)
RexxObject * uninherit(RexxClass *)
RexxArray * classSuperClasses
RexxString * defaultName()
void createInstanceBehaviour(RexxBehaviour *)
RexxObject * makeProxy(RexxEnvelope *)
RexxArray * metaClassMethodDictionary
RexxClass * subclass(PackageClass *, RexxString *, RexxClass *, RexxTable *)
RexxClass * mixinclass(PackageClass *, RexxString *, RexxClass *, RexxTable *)
bool available(HashLink pos)
RexxObject * value(HashLink pos)
HashLink next(HashLink pos)
virtual RexxObject * remove(RexxObject *key)
RexxObject * index(HashLink pos)
RexxSupplier * supplier()
RexxArray * allAt(RexxObject *key)
virtual RexxObject * get(RexxObject *key)
virtual RexxObject * add(RexxObject *, RexxObject *)
void setBehaviour(RexxBehaviour *b)
RexxBehaviour * behaviour
RexxObject * removeIndex(size_t i)
size_t nextIndex(size_t i)
RexxArray * weakReferenceArray()
RexxObject * getValue(size_t i)
void addFirst(RexxObject *value)
void setScope(RexxClass *)
static RexxMethod * newMethodObject(RexxString *, RexxObject *, RexxObject *, RexxSource *a, bool isBlock=false)
RexxMethod * newScope(RexxClass *)
void sendMessage(RexxString *, RexxArray *, RexxDirectory *, ProtectedObject &)
bool isInstanceOf(RexxClass *)
const char * getStringData()
RexxString * concatWithCstring(const char *)
RexxString * concatToCstring(const char *)
bool strCompare(const char *s)
RexxInteger * available()
RexxObject * stringAdd(RexxObject *, RexxString *)
RexxObject * stringPut(RexxObject *, RexxString *)
RexxObject * stringGet(RexxString *key)