#include <ExtensionDirective.hpp>
Protected Member Functions | |
RexxTable * | getClassMethods () |
RexxTable * | getInstanceMethods () |
Protected Member Functions inherited from RexxVirtualBase | |
virtual | ~RexxVirtualBase () |
virtual void | baseVirtual () |
Protected Attributes | |
RexxString * | publicName |
RexxString * | idName |
RexxList * | inheritsClasses |
RexxTable * | instanceMethods |
RexxTable * | classMethods |
Friends | |
class | RexxSource |
Additional Inherited Members | |
Static Public Member Functions inherited from RexxInternalObject | |
static size_t | getObjectHeaderSize () |
Public Attributes inherited from RexxInstruction | |
uint16_t | instructionType |
uint16_t | instructionFlags |
SourceLocation | instructionLocation |
RexxInstruction * | nextInstruction |
Public Attributes inherited from RexxInternalObject | |
ObjectHeader | header |
RexxBehaviour * | behaviour |
Definition at line 51 of file ExtensionDirective.hpp.
ExtensionDirective::ExtensionDirective | ( | RexxString * | n, |
RexxString * | p, | ||
RexxClause * | clause | ||
) |
Construct an ExtensionDirective.
n | The name of the requires target. |
p | The public name of the requires target. |
clause | The source file clause containing the directive. |
Definition at line 62 of file ExtensionDirective.cpp.
References idName, and publicName.
|
inline |
Definition at line 61 of file ExtensionDirective.hpp.
void ExtensionDirective::addConstantMethod | ( | RexxString * | name, |
RexxMethod * | method | ||
) |
Add a method to an extension definition.
name | The name to add. |
method | The method object that maps to this name. |
Definition at line 292 of file ExtensionDirective.cpp.
References addMethod().
Referenced by RexxSource::createConstantGetterMethod().
void ExtensionDirective::addInherits | ( | RexxString * | name | ) |
Add an inherits class to the class definition.
name | The name of the inherited class. |
Definition at line 202 of file ExtensionDirective.cpp.
References RexxList::append(), inheritsClasses, new_list(), OREF_NULL, and OrefSet.
void ExtensionDirective::addMethod | ( | RexxString * | name, |
RexxMethod * | method, | ||
bool | classMethod | ||
) |
Add a method to an extension definition.
name | The name to add. |
method | The method object that maps to this name. |
classMethod | Indicates whether this is a new class or instance method. |
Definition at line 273 of file ExtensionDirective.cpp.
References getClassMethods(), getInstanceMethods(), and RexxHashTableCollection::put().
Referenced by addConstantMethod(), and RexxSource::addMethod().
bool ExtensionDirective::checkDuplicateMethod | ( | RexxString * | name, |
bool | classMethod | ||
) |
Check for a duplicate method defined om this class.
name | The method name. |
classMethod | Indicates whether we are checking for a class or instance method. |
Definition at line 251 of file ExtensionDirective.cpp.
References RexxHashTableCollection::get(), getClassMethods(), getInstanceMethods(), and OREF_NULL.
Referenced by RexxSource::checkDuplicateMethod().
|
virtual |
Flatten the directive instance.
envelope | The envelope we're flattening into. |
Reimplemented from RexxVirtualBase.
Definition at line 105 of file ExtensionDirective.cpp.
References cleanUpFlatten, flatten_reference, and setUpFlatten.
|
protected |
Retrieve the class methods directory for this class.
Definition at line 217 of file ExtensionDirective.cpp.
References classMethods, new_table(), OREF_NULL, and OrefSet.
Referenced by addMethod(), and checkDuplicateMethod().
|
protected |
Retrieve the instance methods directory for this class.
Definition at line 232 of file ExtensionDirective.cpp.
References instanceMethods, new_table(), OREF_NULL, and OrefSet.
Referenced by addMethod(), and checkDuplicateMethod().
|
inline |
Definition at line 67 of file ExtensionDirective.hpp.
References publicName.
void ExtensionDirective::install | ( | RexxSource * | source, |
RexxActivation * | activation | ||
) |
Do install-time processing of the ::extension directive.
activation | The activation we're running under for the install. |
Definition at line 140 of file ExtensionDirective.cpp.
References classMethods, RexxClass::defineClassMethod(), RexxClass::defineMethod(), Error_Execution_noclass, RexxSource::findClass(), RexxHashTableCollection::first(), RexxList::firstIndex(), RexxList::getValue(), idName, RexxHashTableCollection::index(), inheritsClasses, instanceMethods, LIST_END, RexxHashTableCollection::next(), RexxList::nextIndex(), OREF_NULL, reportException(), RexxObject::sendMessage(), RexxActivation::setCurrent(), and RexxHashTableCollection::value().
Referenced by RexxSource::processInstall().
|
virtual |
Normal garbage collecting live mark.
liveMark | The current live object mark. |
Reimplemented from RexxVirtualBase.
Definition at line 73 of file ExtensionDirective.cpp.
References classMethods, idName, inheritsClasses, instanceMethods, memory_mark, RexxInstruction::nextInstruction, and publicName.
|
virtual |
The generalized object marking routine.
reason | The processing faze we're running the mark on. |
Reimplemented from RexxVirtualBase.
Definition at line 89 of file ExtensionDirective.cpp.
References classMethods, idName, inheritsClasses, instanceMethods, memory_mark_general, RexxInstruction::nextInstruction, and publicName.
|
inline |
Definition at line 57 of file ExtensionDirective.hpp.
|
inline |
Definition at line 58 of file ExtensionDirective.hpp.
|
inline |
Definition at line 56 of file ExtensionDirective.hpp.
void * ExtensionDirective::operator new | ( | size_t | size | ) |
Allocate a new requires directive.
size | The size of the object. |
Definition at line 129 of file ExtensionDirective.cpp.
References new_object(), and T_ExtensionDirective.
|
friend |
Definition at line 53 of file ExtensionDirective.hpp.
|
protected |
Definition at line 86 of file ExtensionDirective.hpp.
Referenced by getClassMethods(), install(), live(), and liveGeneral().
|
protected |
Definition at line 83 of file ExtensionDirective.hpp.
Referenced by ExtensionDirective(), install(), live(), and liveGeneral().
|
protected |
Definition at line 84 of file ExtensionDirective.hpp.
Referenced by addInherits(), install(), live(), and liveGeneral().
|
protected |
Definition at line 85 of file ExtensionDirective.hpp.
Referenced by getInstanceMethods(), install(), live(), and liveGeneral().
|
protected |
Definition at line 82 of file ExtensionDirective.hpp.
Referenced by ExtensionDirective(), getName(), live(), and liveGeneral().