BaseCode Class Reference

#include <MethodClass.hpp>

Inheritance diagram for BaseCode:
[legend]

Public Member Functions

virtual void run (RexxActivity *, RexxMethod *, RexxObject *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
 
virtual void call (RexxActivity *, RoutineClass *, RexxString *, RexxObject **, size_t, size_t, RexxString *, RexxString *, int, ProtectedObject &)
 
virtual void call (RexxActivity *, RoutineClass *, RexxString *, RexxObject **, size_t, size_t, ProtectedObject &)
 
virtual RexxArray * getSource ()
 
virtual RexxObject * setSecurityManager (RexxObject *manager)
 
virtual RexxSource * getSourceObject ()
 
virtual RexxClass * findClass (RexxString *className)
 
virtual BaseCode * setSourceObject (RexxSource *s)
 
virtual PackageClass * getPackage ()
 
bool isSamePackage (PackageClass *p)
 
- Public Member Functions inherited from RexxInternalObject
void * operator new (size_t, RexxClass *)
 
void * operator new (size_t, RexxClass *, RexxObject **, size_t, size_t)
 
void * operator new (size_t size, void *ptr)
 
void operator delete (void *)
 
void operator delete (void *p, void *ptr)
 
 RexxInternalObject ()
 
 RexxInternalObject (RESTORETYPE restoreType)
 
virtual ~RexxInternalObject ()
 
 operator RexxObject * ()
 
size_t getObjectSize ()
 
void setObjectSize (size_t s)
 
size_t getObjectDataSize ()
 
void * getObjectDataSpace ()
 
void clearObject ()
 
void clearObject (size_t l)
 
void setVirtualFunctions (void *t)
 
void setInitHeader (size_t s, size_t markword)
 
void setInitHeader (size_t markword)
 
void setObjectLive (size_t markword)
 
void setHasReferences ()
 
void setHasNoReferences ()
 
bool hasReferences ()
 
bool hasNoReferences ()
 
void setPrimitive ()
 
void setNonPrimitive ()
 
bool isPrimitive ()
 
bool isNonPrimitive ()
 
void setInRexxPackage ()
 
bool isInRexxPackage ()
 
bool isObjectMarked (size_t markword)
 
void setObjectMark (size_t markword)
 
void clearObjectMark ()
 
bool isObjectLive (size_t mark)
 
bool isObjectDead (size_t mark)
 
bool isOldSpace ()
 
bool isNewSpace ()
 
void setNewSpace ()
 
void setOldSpace ()
 
void makeProxiedObject ()
 
bool isProxyObject ()
 
bool isSubClassOrEnhanced ()
 
bool isBaseClass ()
 
size_t getObjectTypeNumber ()
 
RexxBehaviour * getObjectType ()
 
bool isObjectType (RexxBehaviour *b)
 
bool isObjectType (size_t t)
 
bool isSameType (RexxInternalObject *o)
 
void setBehaviour (RexxBehaviour *b)
 
virtual RexxObject * makeProxy (RexxEnvelope *)
 
virtual RexxObject * copy ()
 
virtual RexxObject * evaluate (RexxActivation *, RexxExpressionStack *)
 
virtual RexxObject * getValue (RexxActivation *)
 
virtual RexxObject * getValue (RexxVariableDictionary *)
 
virtual RexxObject * getRealValue (RexxActivation *)
 
virtual RexxObject * getRealValue (RexxVariableDictionary *)
 
virtual void uninit ()
 
virtual HashCode hash ()
 
virtual HashCode getHashValue ()
 
HashCode identityHash ()
 
virtual bool truthValue (int)
 
virtual bool logicalValue (logical_t &)
 
virtual RexxString * makeString ()
 
virtual RexxText * makeText ()
 
virtual void copyIntoTail (RexxCompoundTail *buffer)
 
virtual RexxString * primitiveMakeString ()
 
virtual RexxText * primitiveMakeText ()
 
virtual RexxArray * makeArray ()
 
virtual RexxString * stringValue ()
 
virtual RexxText * textValue ()
 
virtual RexxInteger * integerValue (size_t)
 
virtual bool numberValue (wholenumber_t &result, size_t precision)
 
virtual bool numberValue (wholenumber_t &result)
 
virtual bool unsignedNumberValue (stringsize_t &result, size_t precision)
 
virtual bool unsignedNumberValue (stringsize_t &result)
 
virtual bool doubleValue (double &result)
 
virtual RexxNumberString * numberString ()
 
virtual bool isEqual (RexxObject *)
 
virtual bool isInstanceOf (RexxClass *)
 
virtual RexxMethod * instanceMethod (RexxString *)
 
virtual RexxSupplier * instanceMethods (RexxClass *)
 
virtual RexxObject * dynamicTarget (RexxObject **arguments, size_t count, size_t named_count)
 
void hasUninit ()
 
void removedUninit ()
 
void printObject ()
 
RexxObject * clone ()
 
- Public Member Functions inherited from RexxVirtualBase
virtual void live (size_t)
 
virtual void liveGeneral (int reason)
 
virtual void flatten (RexxEnvelope *)
 
virtual RexxObject * unflatten (RexxEnvelope *)
 

Additional Inherited Members

- Static Public Member Functions inherited from RexxInternalObject
static size_t getObjectHeaderSize ()
 
- Public Attributes inherited from RexxInternalObject
ObjectHeader header
 
RexxBehaviour * behaviour
 
- Protected Member Functions inherited from RexxVirtualBase
virtual ~RexxVirtualBase ()
 
virtual void baseVirtual ()
 

Detailed Description

Base class for a code object. Code objects can be invoked as methods, or called.

Definition at line 84 of file MethodClass.hpp.

Member Function Documentation

◆ call() [1/2]

void BaseCode::call ( RexxActivity *  activity,
RoutineClass *  routine,
RexxString *  msgname,
RexxObject **  arguments,
size_t  argcount,
size_t  named_argcount,
ProtectedObject &  result 
)
virtual

Simplified call form used for calling from Rexx code to native code.

Parameters
activityThe current activity.
msgnameThe name of the call.
argumentsthe call arguments.
argcountThe count of positional arguments.
named_argcountThe count of named arguments.
resultThe returned result.

Reimplemented in RexxCode, RexxNativeRoutine, RegisteredRoutine, and RexxRoutine.

Definition at line 865 of file MethodClass.cpp.

References Error_Interpretation, and reportException().

◆ call() [2/2]

void BaseCode::call ( RexxActivity *  activity,
RoutineClass *  routine,
RexxString *  msgname,
RexxObject **  arguments,
size_t  argcount,
size_t  named_argcount,
RexxString *  ct,
RexxString *  env,
int  context,
ProtectedObject &  result 
)
virtual

Invoke a code element as a call target. This form is generally only used for calls from Rexx code to Rexx code or for top level program invocation.

Parameters
activityThe activity we're running under.
msgnameThe name of the program or name used to invoke the routine.
argumentsThe arguments to the method.
argcountThe count of positional arguments.
named_argcountThe count of named arguments.
ctThe call context.
envThe current address environment.
contextThe type of call being made (program call, internal call, interpret, etc.)
resultThe returned result.

Reimplemented in RexxCode.

Definition at line 847 of file MethodClass.cpp.

Referenced by RoutineClass::call(), RoutineClass::callRexx(), RoutineClass::callWithRexx(), and RoutineClass::runProgram().

◆ findClass()

RexxClass * BaseCode::findClass ( RexxString *  className)
virtual

Default class resolution...which only looks in the environment or .local.

Parameters
classNameThe target class name.
Returns
The resolved class object, or OREF_NULL if this is not known.

Reimplemented in RexxNativeCode.

Definition at line 923 of file MethodClass.cpp.

References Interpreter::findClass().

Referenced by BaseExecutable::findClass(), and RexxNativeCode::findClass().

◆ getPackage()

PackageClass * BaseCode::getPackage ( )
virtual

Retrieve the package associated with a code object. Returns OREF_NULL if this code object doesn't have a source.

Returns
The associated package, or OREF_NULL.

Definition at line 954 of file MethodClass.cpp.

References BaseExecutable::getSourceObject(), OREF_NULL, and BaseExecutable::source().

Referenced by isSamePackage().

◆ getSource()

RexxArray * BaseCode::getSource ( )
virtual

Return source informaton for a BaseCode object. If not representing an element in a source file, this returns an empty array.

Returns
A null array.

Reimplemented in RexxCode.

Definition at line 879 of file MethodClass.cpp.

References TheNullArray.

Referenced by BaseExecutable::getSource(), and BaseExecutable::source().

◆ getSourceObject()

RexxSource * BaseCode::getSourceObject ( )
virtual

Retrieve the source object associated with a code object.

Returns

Reimplemented in AttributeGetterCode, ConstantGetterCode, AbstractCode, RexxCode, and RexxNativeCode.

Definition at line 909 of file MethodClass.cpp.

References OREF_NULL.

Referenced by BaseExecutable::getSourceObject().

◆ isSamePackage()

bool BaseCode::isSamePackage ( PackageClass *  p)
inline

Definition at line 97 of file MethodClass.hpp.

References getPackage().

Referenced by RexxMethod::isSamePackage().

◆ run()

void BaseCode::run ( RexxActivity *  activity,
RexxMethod *  method,
RexxObject *  receiver,
RexxString *  msgname,
RexxObject **  arguments,
size_t  argCount,
size_t  named_argCount,
ProtectedObject &  result 
)
virtual

Run this code as a method invocation.

Parameters
activityThe current activity.
methodThe method we're invoking.
receiverThe method target object.
msgnameThe name the method was invoked under.
argCountThe count of positional arguments.
named_argCountThe count of named arguments.
argumentsThe argument pointer.
resultThe returned result.

Reimplemented in CPPCode, AttributeGetterCode, AttributeSetterCode, ConstantGetterCode, AbstractCode, RexxCode, and RexxNativeMethod.

Definition at line 824 of file MethodClass.cpp.

References Error_Interpretation, and reportException().

Referenced by RexxMethod::run().

◆ setSecurityManager()

RexxObject * BaseCode::setSecurityManager ( RexxObject *  manager)
virtual

Set the security manager in the code source context.

Parameters
managerThe new security manager.
Returns
Returns true if the manager could be set. Non-Rexx code objects just return false unconditionally.

Reimplemented in RexxCode.

Definition at line 894 of file MethodClass.cpp.

References TheFalseObject.

Referenced by RexxMethod::setSecurityManager(), and RoutineClass::setSecurityManager().

◆ setSourceObject()

BaseCode * BaseCode::setSourceObject ( RexxSource *  s)
virtual

Set a source object into a code context. The default implementation is just to return the same object without setting a source. This is used mostly for attaching a source context to native code methods and routines defined on directives.

Parameters
sThe new source object.
Returns
Either the same object, or a new copy of the code object.

Reimplemented in AttributeGetterCode, ConstantGetterCode, AbstractCode, and RexxNativeCode.

Definition at line 942 of file MethodClass.cpp.

Referenced by BaseExecutable::setSourceObject().


The documentation for this class was generated from the following files: