SOMObject: Difference between revisions
Appearance
m SOMObject moved to OS2 API:SOMObject |
Some links added |
||
Line 9: | Line 9: | ||
//### Typedefs | //### Typedefs | ||
typedef sequence <SOMObject> SOMObjectSequence; | typedef sequence <[[OS2 API:SOMObject|SOMObject]]> SOMObjectSequence; | ||
// a sequence of SOM Objects | // a sequence of SOM Objects | ||
Line 16: | Line 16: | ||
struct somObjectOffset { | struct somObjectOffset { | ||
SOMObject obj; | [[OS2 API:SOMObject|SOMObject]] obj; | ||
long offset; | long offset; | ||
}; | }; | ||
Line 26: | Line 26: | ||
//### Initialization / Termination | //### Initialization / Termination | ||
void somDefaultInit(in som3InitCtrl *ctrl); | void [[OS2 API:somDefaultInit|somDefaultInit]](in som3InitCtrl *ctrl); | ||
// A default initializer for a SOM object. Passing a null ctrl | // A default initializer for a SOM object. Passing a null ctrl | ||
// indicates to the receiver that its class is the class of the | // indicates to the receiver that its class is the class of the | ||
Line 32: | Line 32: | ||
// an appropriate control structure. | // an appropriate control structure. | ||
void somDestruct(in octet doFree, in som3DestructCtrl *ctrl); | void [[OS2 API:somDestruct|somDestruct]](in octet doFree, in som3DestructCtrl *ctrl); | ||
// The default destructor for a SOM object. A nonzero <doFree> | // The default destructor for a SOM object. A nonzero <doFree> | ||
// indicates that the object storage should be freed by the | // indicates that the object storage should be freed by the | ||
Line 38: | Line 38: | ||
// As with somDefaultInit, a null ctrl can be passed. | // As with somDefaultInit, a null ctrl can be passed. | ||
void somDefaultCopyInit(in som3InitCtrl *ctrl, in SOMObject fromObj); | void [[OS2 API:somDefaultCopyInit|somDefaultCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default copy constructor. Use this to make copies of objects for | // A default copy constructor. Use this to make copies of objects for | ||
// calling methods with "by-value" argument semantics. | // calling methods with "by-value" argument semantics. | ||
SOMObject somDefaultAssign(in som3AssignCtrl *ctrl, in SOMObject fromObj); | [[OS2 API:SOMObject|SOMObject]] [[OS2 API:somDefaultAssign|somDefaultAssign]](in som3AssignCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default assignment operator. Use this to "assign" the state of one | // A default assignment operator. Use this to "assign" the state of one | ||
// object to another. | // object to another. | ||
Line 48: | Line 48: | ||
//### etc. | //### etc. | ||
void somDefaultConstCopyInit(in som3InitCtrl *ctrl, in SOMObject fromObj); | void [[OS2 API:somDefaultConstCopyInit|somDefaultConstCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default copy constructor that uses a const fromObj. | // A default copy constructor that uses a const fromObj. | ||
void somDefaultVCopyInit(in som3InitCtrl *ctrl, in SOMObject fromObj); | void [[OS2 API:somDefaultVCopyInit|somDefaultVCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default copy constructor that uses a volatile fromObj. | // A default copy constructor that uses a volatile fromObj. | ||
void somDefaultConstVCopyInit(in som3InitCtrl *ctrl, in SOMObject fromObj); | void [[OS2 API:somDefaultConstVCopyInit|somDefaultConstVCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default copy constructor that uses a const volatile fromObj. | // A default copy constructor that uses a const volatile fromObj. | ||
SOMObject somDefaultConstAssign(in som3AssignCtrl *ctrl, | [[OS2 API:SOMObject|SOMObject [[OS2 API:somDefaultConstAssign|somDefaultConstAssign]](in som3AssignCtrl *ctrl, | ||
in SOMObject fromObj); | in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default assignment operator that uses a const fromObj. | // A default assignment operator that uses a const fromObj. | ||
SOMObject somDefaultVAssign(in som3AssignCtrl *ctrl, in SOMObject fromObj); | [[OS2 API:SOMObject|SOMObject]] [[OS2 API:somDefaultVAssign|somDefaultVAssign]](in som3AssignCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default assignment operator that uses a volatile fromObj. | // A default assignment operator that uses a volatile fromObj. | ||
SOMObject somDefaultConstVAssign(in som3AssignCtrl *ctrl, | [[OS2 API:SOMObject|SOMObject]] [[OS2 API:somDefaultConstVAssign|somDefaultConstVAssign]](in som3AssignCtrl *ctrl, | ||
in SOMObject fromObj); | in [[OS2 API:SOMObject|SOMObject]] fromObj); | ||
// A default assignment operator that uses a const volatile fromObj. | // A default assignment operator that uses a const volatile fromObj. | ||
void somInit(); | void [[OS2 API:somInit|somInit]](); | ||
// Obsolete but still supported. Override somDefaultInit instead of somInit. | // Obsolete but still supported. Override somDefaultInit instead of somInit. | ||
void somFree(); | void [[OS2 API:somFree|somFree]](); | ||
// Use as directed by framework implementations. | // Use as directed by framework implementations. | ||
void somUninit(); | void [[OS2 API:somUninit|somUninit]](); | ||
// Obsolete but still supported. Override somDestruct instead of somUninit. | // Obsolete but still supported. Override somDestruct instead of somUninit. | ||
//### Access | //### Access | ||
SOMClass somGetClass(); | [[OS2 API:SOMClass|SOMClass]] [[OS2 API:somGetClass|somGetClass]](); | ||
// Return the receiver's class. | // Return the receiver's class. | ||
string somGetClassName(); | string [[OS2 API:somGetClassName(); | ||
// Return the name of the receiver's class. | // Return the name of the receiver's class. | ||
long somGetSize(); | long [[OS2 API:somGetSize(); | ||
// Return the size of the receiver. | // Return the size of the receiver. | ||
//### Testing Group | //### Testing Group | ||
boolean somIsA(in SOMClass aClassObj); | boolean [[OS2 API:somIsA(in [[OS2 API:SOMClass aClassObj); | ||
// Returns 1 (true) if the receiver responds to methods | // Returns 1 (true) if the receiver responds to methods | ||
// introduced by <aClassObj>, and 0 (false) otherwise. | // introduced by <aClassObj>, and 0 (false) otherwise. | ||
boolean somIsInstanceOf(in SOMClass aClassObj); | boolean [[OS2 API:somIsInstanceOf(in [[OS2 API:SOMClass aClassObj); | ||
// Returns 1 (true) if the receiver is an instance of | // Returns 1 (true) if the receiver is an instance of | ||
// <aClassObj> and 0 (false) otherwise. | // <aClassObj> and 0 (false) otherwise. | ||
boolean somRespondsTo(in somId mId); | boolean [[OS2 API:somRespondsTo(in somId mId); | ||
// Returns 1 (true) if the indicated method can be invoked | // Returns 1 (true) if the indicated method can be invoked | ||
// on the receiver and 0 (false) otherwise. | // on the receiver and 0 (false) otherwise. | ||
Line 104: | Line 104: | ||
//### Dynamic | //### Dynamic | ||
boolean somDispatch(out somToken retValue, | boolean [[OS2 API:somDispatch(out somToken retValue, | ||
in somId methodId, | in somId methodId, | ||
in va_list ap); | in va_list ap); | ||
Line 113: | Line 113: | ||
// on which the method is to be invoked as the first argument. | // on which the method is to be invoked as the first argument. | ||
boolean somClassDispatch(in SOMClass clsObj, | boolean [[OS2 API:somClassDispatch(in SOMClass clsObj, | ||
out somToken retValue, | out somToken retValue, | ||
in somId methodId, | in somId methodId, | ||
Line 121: | Line 121: | ||
boolean somCastObj(in SOMClass cls); | boolean [[OS2 API:somCastObj(in [[OS2 API:SOMClass cls); | ||
// cast the receiving object to cls (which must be an ancestor of the | // cast the receiving object to cls (which must be an ancestor of the | ||
// objects true class. Returns true on success. | // objects true class. Returns true on success. | ||
boolean somResetObj(); | boolean [[OS2 API:somResetObj(); | ||
// reset an object to its true class. Returns true always. | // reset an object to its true class. Returns true always. | ||
void somDispatchV(in somId methodId, | void [[OS2 API:somDispatchV(in somId methodId, | ||
in somId descriptor, | in somId descriptor, | ||
in va_list ap); | in va_list ap); | ||
// Obsolete. Use somDispatch instead. | // Obsolete. Use somDispatch instead. | ||
long somDispatchL(in somId methodId, | long [[OS2 API:somDispatchL(in somId methodId, | ||
in somId descriptor, | in somId descriptor, | ||
in va_list ap); | in va_list ap); | ||
// Obsolete. Use somDispatch instead. | // Obsolete. Use somDispatch instead. | ||
void* somDispatchA(in somId methodId, | void* [[OS2 API:somDispatchA(in somId methodId, | ||
in somId descriptor, | in somId descriptor, | ||
in va_list ap); | in va_list ap); | ||
// Obsolete. Use somDispatch instead. | // Obsolete. Use somDispatch instead. | ||
double somDispatchD(in somId methodId, | double [[OS2 API:somDispatchD(in somId methodId, | ||
in somId descriptor, | in somId descriptor, | ||
in va_list ap); | in va_list ap); | ||
Line 151: | Line 151: | ||
//### Development Support | //### Development Support | ||
SOMObject somPrintSelf(); | [[OS2 API:SOMObject [[OS2 API:somPrintSelf(); | ||
// Uses <SOMOutCharRoutine> to write a brief string with identifying | // Uses <SOMOutCharRoutine> to write a brief string with identifying | ||
// information about this object. The default implementation just gives | // information about this object. The default implementation just gives | ||
Line 157: | Line 157: | ||
// <self> is returned. | // <self> is returned. | ||
void somDumpSelf(in long level); | void [[OS2 API:somDumpSelf(in long level); | ||
// Uses <SOMOutCharRoutine> to write a detailed description of this object | // Uses <SOMOutCharRoutine> to write a detailed description of this object | ||
// and its current state. | // and its current state. | ||
Line 173: | Line 173: | ||
// overriden it generally must be completely replaced. | // overriden it generally must be completely replaced. | ||
void somDumpSelfInt(in long level); | void [[OS2 API:somDumpSelfInt(in long level); | ||
// Uses <SOMOutCharRoutine> to write in the current state of this object. | // Uses <SOMOutCharRoutine> to write in the current state of this object. | ||
// Generally this method will need to be overridden. When overriding | // Generally this method will need to be overridden. When overriding |
Revision as of 05:02, 18 May 2006
interface SOMObject // This is the SOM root class, all SOM classes must be descended from // <SOMObject>. <SOMObject> has no instance data so there is no // per-instance cost to to being descended from it. { //### Typedefs typedef sequence <[[OS2 API:SOMObject|SOMObject]]> SOMObjectSequence; // a sequence of SOM Objects typedef sequence <octet> BooleanSequence; // a sequence of booleans. struct somObjectOffset { [[OS2 API:SOMObject|SOMObject]] obj; long offset; }; // a structure to describe an object-related offset typedef sequence <somObjectOffset> somObjectOffsets; // a sequence of object-related offsets //### Initialization / Termination void [[OS2 API:somDefaultInit|somDefaultInit]](in som3InitCtrl *ctrl); // A default initializer for a SOM object. Passing a null ctrl // indicates to the receiver that its class is the class of the // object being initialized, whereby the initializer will determine // an appropriate control structure. void [[OS2 API:somDestruct|somDestruct]](in octet doFree, in som3DestructCtrl *ctrl); // The default destructor for a SOM object. A nonzero <doFree> // indicates that the object storage should be freed by the // object's class (via somDeallocate) after uninitialization. // As with somDefaultInit, a null ctrl can be passed. void [[OS2 API:somDefaultCopyInit|somDefaultCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default copy constructor. Use this to make copies of objects for // calling methods with "by-value" argument semantics. [[OS2 API:SOMObject|SOMObject]] [[OS2 API:somDefaultAssign|somDefaultAssign]](in som3AssignCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default assignment operator. Use this to "assign" the state of one // object to another. //### etc. void [[OS2 API:somDefaultConstCopyInit|somDefaultConstCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default copy constructor that uses a const fromObj. void [[OS2 API:somDefaultVCopyInit|somDefaultVCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default copy constructor that uses a volatile fromObj. void [[OS2 API:somDefaultConstVCopyInit|somDefaultConstVCopyInit]](in som3InitCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default copy constructor that uses a const volatile fromObj. [[OS2 API:SOMObject|SOMObject [[OS2 API:somDefaultConstAssign|somDefaultConstAssign]](in som3AssignCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default assignment operator that uses a const fromObj. [[OS2 API:SOMObject|SOMObject]] [[OS2 API:somDefaultVAssign|somDefaultVAssign]](in som3AssignCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default assignment operator that uses a volatile fromObj. [[OS2 API:SOMObject|SOMObject]] [[OS2 API:somDefaultConstVAssign|somDefaultConstVAssign]](in som3AssignCtrl *ctrl, in [[OS2 API:SOMObject|SOMObject]] fromObj); // A default assignment operator that uses a const volatile fromObj. void [[OS2 API:somInit|somInit]](); // Obsolete but still supported. Override somDefaultInit instead of somInit. void [[OS2 API:somFree|somFree]](); // Use as directed by framework implementations. void [[OS2 API:somUninit|somUninit]](); // Obsolete but still supported. Override somDestruct instead of somUninit. //### Access [[OS2 API:SOMClass|SOMClass]] [[OS2 API:somGetClass|somGetClass]](); // Return the receiver's class. string [[OS2 API:somGetClassName(); // Return the name of the receiver's class. long [[OS2 API:somGetSize(); // Return the size of the receiver. //### Testing Group boolean [[OS2 API:somIsA(in [[OS2 API:SOMClass aClassObj); // Returns 1 (true) if the receiver responds to methods // introduced by <aClassObj>, and 0 (false) otherwise. boolean [[OS2 API:somIsInstanceOf(in [[OS2 API:SOMClass aClassObj); // Returns 1 (true) if the receiver is an instance of // <aClassObj> and 0 (false) otherwise. boolean [[OS2 API:somRespondsTo(in somId mId); // Returns 1 (true) if the indicated method can be invoked // on the receiver and 0 (false) otherwise. //### Dynamic boolean [[OS2 API:somDispatch(out somToken retValue, in somId methodId, in va_list ap); // This method provides a generic, class-specific dispatch mechanism. // It accepts as input <retValue> a pointer to the memory area to be // loaded with the result of dispatching the method indicated by // <methodId> using the arguments in <ap>. <ap> contains the object // on which the method is to be invoked as the first argument. boolean [[OS2 API:somClassDispatch(in SOMClass clsObj, out somToken retValue, in somId methodId, in va_list ap); // Like somDispatch, but method resolution for static methods is done // according to the clsObj instance method table. boolean [[OS2 API:somCastObj(in [[OS2 API:SOMClass cls); // cast the receiving object to cls (which must be an ancestor of the // objects true class. Returns true on success. boolean [[OS2 API:somResetObj(); // reset an object to its true class. Returns true always. void [[OS2 API:somDispatchV(in somId methodId, in somId descriptor, in va_list ap); // Obsolete. Use somDispatch instead. long [[OS2 API:somDispatchL(in somId methodId, in somId descriptor, in va_list ap); // Obsolete. Use somDispatch instead. void* [[OS2 API:somDispatchA(in somId methodId, in somId descriptor, in va_list ap); // Obsolete. Use somDispatch instead. double [[OS2 API:somDispatchD(in somId methodId, in somId descriptor, in va_list ap); // Obsolete. Use somDispatch instead. //### Development Support [[OS2 API:SOMObject [[OS2 API:somPrintSelf(); // Uses <SOMOutCharRoutine> to write a brief string with identifying // information about this object. The default implementation just gives // the object's class name and its address in memory. // <self> is returned. void [[OS2 API:somDumpSelf(in long level); // Uses <SOMOutCharRoutine> to write a detailed description of this object // and its current state. // // <level> indicates the nesting level for describing compound objects // it must be greater than or equal to zero. All lines in the // description will be preceeded by <2*level> spaces. // // This routine only actually writes the data that concerns the object // as a whole, such as class, and uses <somDumpSelfInt> to describe // the object's current state. This approach allows readable // descriptions of compound objects to be constructed. // // Generally it is not necessary to override this method, if it is // overriden it generally must be completely replaced. void [[OS2 API:somDumpSelfInt(in long level); // Uses <SOMOutCharRoutine> to write in the current state of this object. // Generally this method will need to be overridden. When overriding // it, begin by calling the parent class form of this method and then // write in a description of your class's instance data. This will // result in a description of all the object's instance data going // from its root ancestor class to its specific class. #ifdef __SOMIDL__ implementation { releaseorder: somInit,somUninit,somFree,somDefaultVCopyInit, somGetClassName,somGetClass,somIsA,somRespondsTo, somIsInstanceOf,somGetSize,somDumpSelf,somDumpSelfInt, somPrintSelf,somDefaultConstVCopyInit,somDispatchV, somDispatchL,somDispatchA, somDispatchD,somDispatch,somClassDispatch, somCastObj, somResetObj, somDefaultInit, somDestruct, somPrivate1, somPrivate2, somDefaultCopyInit, somDefaultConstCopyInit, somDefaultAssign, somDefaultConstAssign, somDefaultVAssign, somDefaultConstVAssign; // Class Modifiers callstyle = oidl; externalstem = somob; majorversion = 1; #ifndef SOMPCALL minorversion = 5; // for som2.5 kernel #else minorversion = 6; // for som2.5 kernel with pcall #endif filestem = somobj; dllname = "som.dll"; // Public Method Modifiers somDefaultInit: init; somDefaultCopyInit: init; somDefaultConstCopyInit: init; somDefaultVCopyInit: init; somDefaultConstVCopyInit: init; somDefaultInit: caller_owns_parameters = "ctrl"; somDestruct: caller_owns_parameters = "ctrl"; somDefaultCopyInit: caller_owns_parameters = "ctrl"; somDefaultAssign: caller_owns_parameters = "ctrl"; somDefaultConstCopyInit: caller_owns_parameters = "ctrl"; somDefaultVCopyInit: caller_owns_parameters = "ctrl"; somDefaultConstVCopyInit: caller_owns_parameters = "ctrl"; somDefaultConstAssign: caller_owns_parameters = "ctrl"; somDefaultVAssign: caller_owns_parameters = "ctrl"; somDefaultConstVAssign: caller_owns_parameters = "ctrl"; somRespondsTo: caller_owns_parameters = "mId"; somDispatch: caller_owns_parameters = "methodId, ap"; somClassDispatch: caller_owns_parameters = "methodId, ap"; somDispatchV: caller_owns_parameters = "methodId, descriptor, ap"; somDispatchL: caller_owns_parameters = "methodId, descriptor, ap"; somDispatchA: caller_owns_parameters = "methodId, descriptor, ap"; somDispatchD: caller_owns_parameters = "methodId, descriptor, ap"; }; #endif /* __SOMIDL__ */ };