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 04: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__ */
};