#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().