home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / som / include / titeratr.xh < prev    next >
Text File  |  1999-02-22  |  26KB  |  860 lines

  1.  
  2. /*
  3.  * This file was generated by the SOM Compiler.
  4.  * FileName: titeratr.xh.
  5.  * Generated using:
  6.  *     SOM Precompiler somipc: 2.29.1.17
  7.  *     SOM Emitter emitxh: 2.47
  8.  */
  9.  
  10. /*
  11.  *    COMPONENT_NAME: somuc
  12.  * 
  13.  *    ORIGINS: 82, 81, 27
  14.  * 
  15.  * 
  16.  *     25H7912  (C)  COPYRIGHT International Business Machines Corp. 1992,1996,1996
  17.  *    All Rights Reserved
  18.  *    Licensed Materials - Property of IBM
  19.  *    US Government Users Restricted Rights - Use, duplication or
  20.  *    disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  21.  * 
  22.  *    Copyright ⌐ 1988-92 Apple Computer, Inc.  All rights reserved.
  23.  * 
  24.  * CLASS_NAME: somf_TIterator
  25.  * 
  26.  * DESCRIPTION: All of the Utility Classes have corresponding iterator
  27.  *              classes.  An iterator for a particular object will iterate over
  28.  *              all of the objects in a class.  somf_TIterator is the
  29.  *              Abstract base class for all iterators.
  30.  * 
  31.  *  This file was generated by the SOM Compiler.
  32.  *  FileName: TIteratr.id2.
  33.  *  Generated using:
  34.  *      SOM Precompiler spc: 6.13
  35.  *      SOM Emitter emitidl.dll: 6.18
  36.  */
  37.  
  38.  
  39. #ifndef SOM_somf_TIterator_xh
  40. #define SOM_somf_TIterator_xh
  41.  
  42. class somf_TIterator;
  43.  
  44. #define somf_TIterator_MajorVersion 2
  45. #define somf_TIterator_MinorVersion 1
  46.  
  47. /*
  48.  * Passthru lines: File: "C.xh", "before"
  49.  */
  50.  
  51. #include <mcollect.xh>
  52.  
  53. /* C++ SOM defs */
  54. #include <somcls.xh>
  55. #include <somcm.xh>
  56.  
  57. /* C++ parent defs */
  58. #ifndef SOM_SOMObject_xh
  59. #include <somobj.xh>
  60. #endif
  61.  
  62. #ifndef somf_TIterator_API
  63. #define somf_TIterator_API
  64. /*
  65.  * -- The Class API
  66.  */
  67.  
  68. /*
  69.  * Start of bindings for IDL types
  70.  */
  71.  
  72. class SOMClass;
  73. class SOMObject;
  74. class somf_MCollectible;
  75. #define somf_TIterator_kIteratorOutOfSync 900 /* 0x384 */
  76.  
  77. #ifndef SOM_DONT_USE_SHORT_NAMES
  78. #ifndef SOMTGD_kIteratorOutOfSync
  79.     #ifdef kIteratorOutOfSync
  80.         #undef kIteratorOutOfSync
  81.         #define SOMTGD_kIteratorOutOfSync 1
  82.     #else
  83.         #define kIteratorOutOfSync somf_TIterator_kIteratorOutOfSync
  84.     #endif /* kIteratorOutOfSync */
  85. #endif /* SOMTGD_kIteratorOutOfSync */
  86. #endif /* SOM_DONT_USE_SHORT_NAMES */
  87.  
  88. /*
  89.  * End of bindings for IDL types.
  90.  */
  91.  
  92. /* A procedure to create the somf_TIterator Class */
  93. SOMEXTERN SOMClass * SOMLINK somf_TIteratorNewClass(
  94.         integer4 majorVersion,
  95.         integer4 minorVersion);
  96.  
  97. /* The API to the somf_TIterator class object, and the methods it introduces. */
  98. SOMEXTERN struct somf_TIteratorClassDataStructure {
  99.     SOMClass *classObject;
  100.     somMToken somfNext;
  101.     somMToken somfFirst;
  102.     somMToken somfRemove;
  103. } SOMDLINK somf_TIteratorClassData;
  104. #define _somf_TIterator somf_TIteratorClassData.classObject
  105.  
  106. /* The API to parentMtabs for somf_TIterator, and the instance data it introduces. */
  107. SOMEXTERN struct somf_TIteratorCClassDataStructure {
  108.     somMethodTabs parentMtab;
  109.     somDToken              instanceDataToken;
  110. } SOMDLINK somf_TIteratorCClassData;
  111.  
  112. /*
  113.  * -- Typedefs for somf_TIterator Method Procedures
  114.  */
  115. SOMEXTERN {
  116. typedef somf_MCollectible*   SOMLINK somTP_somf_TIterator_somfNext(somf_TIterator *somSelf, Environment *ev);
  117. typedef somTP_somf_TIterator_somfNext *somTD_somf_TIterator_somfNext;
  118. typedef somf_MCollectible*   SOMLINK somTP_somf_TIterator_somfFirst(somf_TIterator *somSelf, Environment *ev);
  119. typedef somTP_somf_TIterator_somfFirst *somTD_somf_TIterator_somfFirst;
  120. typedef void   SOMLINK somTP_somf_TIterator_somfRemove(somf_TIterator *somSelf, Environment *ev);
  121. typedef somTP_somf_TIterator_somfRemove *somTD_somf_TIterator_somfRemove;
  122.  
  123. /*
  124.  * -- Typedefs for Reintroduced Wrapper Methods
  125.  */
  126. typedef void   SOMLINK somTP_somf_TIterator_somDefaultInit(somf_TIterator *somSelf, 
  127.         som3InitCtrl* ctrl);
  128. typedef somTP_somf_TIterator_somDefaultInit *somTD_somf_TIterator_somDefaultInit;
  129. typedef void   SOMLINK somTP_somf_TIterator_somDestruct(somf_TIterator *somSelf, 
  130.         octet doFree, 
  131.         som3DestructCtrl* ctrl);
  132. typedef somTP_somf_TIterator_somDestruct *somTD_somf_TIterator_somDestruct;
  133. typedef void   SOMLINK somTP_somf_TIterator_somDefaultCopyInit(somf_TIterator *somSelf, 
  134.         som3InitCtrl* ctrl, 
  135.         SOMObject* fromObj);
  136. typedef somTP_somf_TIterator_somDefaultCopyInit *somTD_somf_TIterator_somDefaultCopyInit;
  137. typedef somf_TIterator*   SOMLINK somTP_somf_TIterator_somDefaultAssign(somf_TIterator *somSelf, 
  138.         som3AssignCtrl* ctrl, 
  139.         SOMObject* fromObj);
  140. typedef somTP_somf_TIterator_somDefaultAssign *somTD_somf_TIterator_somDefaultAssign;
  141. typedef void   SOMLINK somTP_somf_TIterator_somDefaultConstCopyInit(somf_TIterator *somSelf, 
  142.         som3InitCtrl* ctrl, 
  143.         SOMObject* fromObj);
  144. typedef somTP_somf_TIterator_somDefaultConstCopyInit *somTD_somf_TIterator_somDefaultConstCopyInit;
  145. typedef void   SOMLINK somTP_somf_TIterator_somDefaultVCopyInit(somf_TIterator *somSelf, 
  146.         som3InitCtrl* ctrl, 
  147.         SOMObject* fromObj);
  148. typedef somTP_somf_TIterator_somDefaultVCopyInit *somTD_somf_TIterator_somDefaultVCopyInit;
  149. typedef void   SOMLINK somTP_somf_TIterator_somDefaultConstVCopyInit(somf_TIterator *somSelf, 
  150.         som3InitCtrl* ctrl, 
  151.         SOMObject* fromObj);
  152. typedef somTP_somf_TIterator_somDefaultConstVCopyInit *somTD_somf_TIterator_somDefaultConstVCopyInit;
  153. typedef somf_TIterator*   SOMLINK somTP_somf_TIterator_somDefaultConstAssign(somf_TIterator *somSelf, 
  154.         som3AssignCtrl* ctrl, 
  155.         SOMObject* fromObj);
  156. typedef somTP_somf_TIterator_somDefaultConstAssign *somTD_somf_TIterator_somDefaultConstAssign;
  157. typedef somf_TIterator*   SOMLINK somTP_somf_TIterator_somDefaultVAssign(somf_TIterator *somSelf, 
  158.         som3AssignCtrl* ctrl, 
  159.         SOMObject* fromObj);
  160. typedef somTP_somf_TIterator_somDefaultVAssign *somTD_somf_TIterator_somDefaultVAssign;
  161. typedef somf_TIterator*   SOMLINK somTP_somf_TIterator_somDefaultConstVAssign(somf_TIterator *somSelf, 
  162.         som3AssignCtrl* ctrl, 
  163.         SOMObject* fromObj);
  164. typedef somTP_somf_TIterator_somDefaultConstVAssign *somTD_somf_TIterator_somDefaultConstVAssign;
  165. typedef void   SOMLINK somTP_somf_TIterator_somInit(somf_TIterator *somSelf);
  166. typedef somTP_somf_TIterator_somInit *somTD_somf_TIterator_somInit;
  167. typedef void   SOMLINK somTP_somf_TIterator_somFree(somf_TIterator *somSelf);
  168. typedef somTP_somf_TIterator_somFree *somTD_somf_TIterator_somFree;
  169. typedef void   SOMLINK somTP_somf_TIterator_somUninit(somf_TIterator *somSelf);
  170. typedef somTP_somf_TIterator_somUninit *somTD_somf_TIterator_somUninit;
  171. typedef SOMClass*   SOMLINK somTP_somf_TIterator_somGetClass(somf_TIterator *somSelf);
  172. typedef somTP_somf_TIterator_somGetClass *somTD_somf_TIterator_somGetClass;
  173. typedef string   SOMLINK somTP_somf_TIterator_somGetClassName(somf_TIterator *somSelf);
  174. typedef somTP_somf_TIterator_somGetClassName *somTD_somf_TIterator_somGetClassName;
  175. typedef long   SOMLINK somTP_somf_TIterator_somGetSize(somf_TIterator *somSelf);
  176. typedef somTP_somf_TIterator_somGetSize *somTD_somf_TIterator_somGetSize;
  177. typedef boolean   SOMLINK somTP_somf_TIterator_somIsA(somf_TIterator *somSelf, 
  178.         SOMClass* aClassObj);
  179. typedef somTP_somf_TIterator_somIsA *somTD_somf_TIterator_somIsA;
  180. typedef boolean   SOMLINK somTP_somf_TIterator_somIsInstanceOf(somf_TIterator *somSelf, 
  181.         SOMClass* aClassObj);
  182. typedef somTP_somf_TIterator_somIsInstanceOf *somTD_somf_TIterator_somIsInstanceOf;
  183. typedef boolean   SOMLINK somTP_somf_TIterator_somRespondsTo(somf_TIterator *somSelf, 
  184.         somId mId);
  185. typedef somTP_somf_TIterator_somRespondsTo *somTD_somf_TIterator_somRespondsTo;
  186. typedef boolean   SOMLINK somTP_somf_TIterator_somDispatch(somf_TIterator *somSelf, 
  187.         somToken* retValue, 
  188.         somId methodId, 
  189.         va_list ap);
  190. typedef somTP_somf_TIterator_somDispatch *somTD_somf_TIterator_somDispatch;
  191. typedef boolean   SOMLINK somTP_somf_TIterator_somClassDispatch(somf_TIterator *somSelf, 
  192.         SOMClass* clsObj, 
  193.         somToken* retValue, 
  194.         somId methodId, 
  195.         va_list ap);
  196. typedef somTP_somf_TIterator_somClassDispatch *somTD_somf_TIterator_somClassDispatch;
  197. typedef boolean   SOMLINK somTP_somf_TIterator_somCastObj(somf_TIterator *somSelf, 
  198.         SOMClass* cls);
  199. typedef somTP_somf_TIterator_somCastObj *somTD_somf_TIterator_somCastObj;
  200. typedef boolean   SOMLINK somTP_somf_TIterator_somResetObj(somf_TIterator *somSelf);
  201. typedef somTP_somf_TIterator_somResetObj *somTD_somf_TIterator_somResetObj;
  202. typedef void   SOMLINK somTP_somf_TIterator_somDispatchV(somf_TIterator *somSelf, 
  203.         somId methodId, 
  204.         somId descriptor, 
  205.         va_list ap);
  206. typedef somTP_somf_TIterator_somDispatchV *somTD_somf_TIterator_somDispatchV;
  207. typedef long   SOMLINK somTP_somf_TIterator_somDispatchL(somf_TIterator *somSelf, 
  208.         somId methodId, 
  209.         somId descriptor, 
  210.         va_list ap);
  211. typedef somTP_somf_TIterator_somDispatchL *somTD_somf_TIterator_somDispatchL;
  212. typedef void*   SOMLINK somTP_somf_TIterator_somDispatchA(somf_TIterator *somSelf, 
  213.         somId methodId, 
  214.         somId descriptor, 
  215.         va_list ap);
  216. typedef somTP_somf_TIterator_somDispatchA *somTD_somf_TIterator_somDispatchA;
  217. typedef double   SOMLINK somTP_somf_TIterator_somDispatchD(somf_TIterator *somSelf, 
  218.         somId methodId, 
  219.         somId descriptor, 
  220.         va_list ap);
  221. typedef somTP_somf_TIterator_somDispatchD *somTD_somf_TIterator_somDispatchD;
  222. typedef SOMObject*   SOMLINK somTP_somf_TIterator_somPrintSelf(somf_TIterator *somSelf);
  223. typedef somTP_somf_TIterator_somPrintSelf *somTD_somf_TIterator_somPrintSelf;
  224. typedef void   SOMLINK somTP_somf_TIterator_somDumpSelf(somf_TIterator *somSelf, 
  225.         long level);
  226. typedef somTP_somf_TIterator_somDumpSelf *somTD_somf_TIterator_somDumpSelf;
  227. typedef void   SOMLINK somTP_somf_TIterator_somDumpSelfInt(somf_TIterator *somSelf, 
  228.         long level);
  229. typedef somTP_somf_TIterator_somDumpSelfInt *somTD_somf_TIterator_somDumpSelfInt;
  230. }
  231.  
  232. #endif /* somf_TIterator_API */
  233.  
  234.  
  235. /*
  236.  * -- This emitter treats Method Tokens as Thunks by default.
  237.  * -- Use the sc modifier "nothunks" to change this default
  238.  */
  239. #undef somresolve_
  240. #define somresolve_(obj,mToken) ((somMethodProc*)((void)obj, mToken))
  241.  
  242. /*
  243.  * -- The C++ Wrapper Class for somf_TIterator
  244.  */
  245. class somf_TIterator : public SOMObject
  246. {
  247. public:
  248.  
  249. // somf_TIterator::new creates the class object if necessary, and then uses somNewNoInit
  250. // to allocate memory and create the object. Initialization is in ctors.
  251. void *operator new(size_t)
  252. {
  253.    if (!_somf_TIterator) somf_TIteratorNewClass(somf_TIterator_MajorVersion,somf_TIterator_MinorVersion);
  254.    return (void*)
  255.       SOM_Resolve(_somf_TIterator,SOMClass,somNewNoInit)
  256.          ((SOMClass *)((void*)_somf_TIterator));
  257. }
  258.  
  259. // somf_TIterator::delete uses somDestruct.
  260. void operator delete(void * obj)
  261. {
  262.    if (obj && *(void**)obj) {
  263.       SOM_Resolve(obj,SOMObject,somFree)
  264.          ((SOMObject*)obj);
  265.    }
  266. }
  267.  
  268. somf_TIterator& operator=(somf_TIterator& fromObj)
  269. {
  270.    this->somDefaultAssign(0,(SOMObject*)((void*)&fromObj));
  271.    return *this;
  272. }
  273.  
  274. somf_TIterator()
  275. {
  276.    if (*(void**)this != 
  277.        ((somParentMtabStructPtr)
  278.         (somf_TIteratorCClassData.parentMtab))->mtab)
  279.       return;
  280.    ((SOMObject*)((void*)this))->somDefaultInit(0);
  281. }
  282.  
  283. somf_TIterator(somf_TIterator* fromObj)
  284. {
  285.    if (*(void**)this != 
  286.        ((somParentMtabStructPtr)
  287.         (somf_TIteratorCClassData.parentMtab))->mtab)
  288.       return;
  289.    ((SOMObject*)((void*)this))->somDefaultCopyInit(0,((SOMObject*)((void*)fromObj)));
  290. }
  291.  
  292. #ifdef __IBMCPP__
  293. #pragma info(nocnv,nopar)
  294. #endif
  295. somf_TIterator(const somf_TIterator* fromObj)
  296. {
  297.    if (*(void**)this != 
  298.        ((somParentMtabStructPtr)
  299.         (somf_TIteratorCClassData.parentMtab))->mtab)
  300.       return;
  301.    ((SOMObject*)((void*)this))->somDefaultConstCopyInit(0,((SOMObject*)((void*)fromObj)));
  302. }
  303. #ifdef __IBMCPP__
  304. #pragma info(restore)
  305. #endif
  306.  
  307.  
  308. /* method: somfNext */
  309. somf_MCollectible*   somfNext(Environment *ev)
  310. {
  311. /*
  312.  *  Retrieve the next object in the collection and return it.  The order that
  313.  *  objects are retrieved is in an order that reflects the "ordered-ness"
  314.  *  of the collection (or the lack of ordering on the collection elements).
  315.  *  If the collection has changed since the last time somfFirst was called,
  316.  *  this method will FAIL.
  317.  */
  318.    return SOM_ResolveD(this,somf_TIterator,somf_TIterator,somfNext)
  319.     (this, ev);
  320. }
  321.  
  322.  
  323. /* method: somfFirst */
  324. somf_MCollectible*   somfFirst(Environment *ev)
  325. {
  326. /*
  327.  *  Reset the iterator and return the first element of the collection.  This
  328.  *  resyncs the iterator to the collection if other operations on the
  329.  *  collection caused the iterator to be invalidated.
  330.  */
  331.    return SOM_ResolveD(this,somf_TIterator,somf_TIterator,somfFirst)
  332.     (this, ev);
  333. }
  334.  
  335.  
  336. /* method: somfRemove */
  337. void   somfRemove(Environment *ev)
  338. {
  339. /*
  340.  *  Remove the current object, the one just returned by First or Next,
  341.  *  from the Collection.
  342.  */
  343.    SOM_ResolveD(this,somf_TIterator,somf_TIterator,somfRemove)
  344.     (this, ev);
  345. }
  346.  
  347.  
  348. /*
  349.  * Reintroduce inherited methods
  350.  */
  351.  
  352. /* initializer method: somDefaultInit */
  353. void   somDefaultInit(som3InitCtrl* ctrl)
  354. {
  355. /*
  356.  *  A default initializer for a SOM object. Passing a null ctrl
  357.  *  indicates to the receiver that its class is the class of the
  358.  *  object being initialized, whereby the initializer will determine
  359.  *  an appropriate control structure.
  360.  */
  361.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultInit)
  362.     (this,ctrl);
  363. }
  364.  
  365.  
  366. /* method: somDestruct */
  367. void   somDestruct(octet doFree, 
  368.         som3DestructCtrl* ctrl)
  369. {
  370. /*
  371.  *  The default destructor for a SOM object. A nonzero <doFree>
  372.  *  indicates that the object storage should be freed by the
  373.  *  object's class (via somDeallocate) after uninitialization.
  374.  *  As with somDefaultInit, a null ctrl can be passed.
  375.  */
  376.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDestruct)
  377.     (this,doFree,ctrl);
  378. }
  379.  
  380.  
  381. /* initializer method: somDefaultCopyInit */
  382. void   somDefaultCopyInit(som3InitCtrl* ctrl, 
  383.         SOMObject* fromObj)
  384. {
  385. /*
  386.  *  A default copy constructor. Use this to make copies of objects for
  387.  *  calling methods with "by-value" argument semantics.
  388.  */
  389.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultCopyInit)
  390.     (this,ctrl,fromObj);
  391. }
  392.  
  393.  
  394. /* method: somDefaultAssign */
  395. somf_TIterator*  somDefaultAssign(som3AssignCtrl* ctrl, 
  396.         SOMObject* fromObj)
  397. {
  398. /*
  399.  *  A default assignment operator. Use this to "assign" the state of one
  400.  *  object to another.
  401.  */
  402.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultAssign)
  403.     (this,ctrl,fromObj);
  404. }
  405.  
  406.  
  407. /* initializer method: somDefaultConstCopyInit */
  408. void   somDefaultConstCopyInit(som3InitCtrl* ctrl, 
  409.         SOMObject* fromObj)
  410. {
  411. /*
  412.  *  A default copy constructor that uses a const fromObj.
  413.  */
  414.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultConstCopyInit)
  415.     (this,ctrl,fromObj);
  416. }
  417.  
  418.  
  419. /* initializer method: somDefaultVCopyInit */
  420. void   somDefaultVCopyInit(som3InitCtrl* ctrl, 
  421.         SOMObject* fromObj)
  422. {
  423. /*
  424.  *  A default copy constructor that uses a volatile fromObj.
  425.  */
  426.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultVCopyInit)
  427.     (this,ctrl,fromObj);
  428. }
  429.  
  430.  
  431. /* initializer method: somDefaultConstVCopyInit */
  432. void   somDefaultConstVCopyInit(som3InitCtrl* ctrl, 
  433.         SOMObject* fromObj)
  434. {
  435. /*
  436.  *  A default copy constructor that uses a const volatile fromObj.
  437.  */
  438.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultConstVCopyInit)
  439.     (this,ctrl,fromObj);
  440. }
  441.  
  442.  
  443. /* method: somDefaultConstAssign */
  444. somf_TIterator*  somDefaultConstAssign(som3AssignCtrl* ctrl, 
  445.         SOMObject* fromObj)
  446. {
  447. /*
  448.  *  A default assignment operator that uses a const fromObj.
  449.  */
  450.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultConstAssign)
  451.     (this,ctrl,fromObj);
  452. }
  453.  
  454.  
  455. /* method: somDefaultVAssign */
  456. somf_TIterator*  somDefaultVAssign(som3AssignCtrl* ctrl, 
  457.         SOMObject* fromObj)
  458. {
  459. /*
  460.  *  A default assignment operator that uses a volatile fromObj.
  461.  */
  462.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultVAssign)
  463.     (this,ctrl,fromObj);
  464. }
  465.  
  466.  
  467. /* method: somDefaultConstVAssign */
  468. somf_TIterator*  somDefaultConstVAssign(som3AssignCtrl* ctrl, 
  469.         SOMObject* fromObj)
  470. {
  471. /*
  472.  *  A default assignment operator that uses a const volatile fromObj.
  473.  */
  474.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somDefaultConstVAssign)
  475.     (this,ctrl,fromObj);
  476. }
  477.  
  478.  
  479. /* method: somInit */
  480. void   somInit()
  481. {
  482. /*
  483.  *  Obsolete but still supported. Override somDefaultInit instead of somInit.
  484.  */
  485.    SOM_ResolveD(this,somf_TIterator,SOMObject,somInit)
  486.     (this);
  487. }
  488.  
  489.  
  490. /* method: somFree */
  491. void   somFree()
  492. {
  493. /*
  494.  *  Use as directed by framework implementations.
  495.  */
  496.    SOM_ResolveD(this,somf_TIterator,SOMObject,somFree)
  497.     (this);
  498. }
  499.  
  500.  
  501. /* method: somUninit */
  502. void   somUninit()
  503. {
  504. /*
  505.  *  Obsolete but still supported. Override somDestruct instead of somUninit.
  506.  */
  507.    SOM_ResolveD(this,somf_TIterator,SOMObject,somUninit)
  508.     (this);
  509. }
  510.  
  511.  
  512. /* method: somGetClass */
  513. SOMClass*   somGetClass()
  514. {
  515. /*
  516.  *  Return the receiver's class.
  517.  */
  518.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somGetClass)
  519.     (this);
  520. }
  521.  
  522.  
  523. /* method: somGetClassName */
  524. string   somGetClassName()
  525. {
  526. /*
  527.  *  Return the name of the receiver's class.
  528.  */
  529.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somGetClassName)
  530.     (this);
  531. }
  532.  
  533.  
  534. /* method: somGetSize */
  535. long   somGetSize()
  536. {
  537. /*
  538.  *  Return the size of the receiver.
  539.  */
  540.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somGetSize)
  541.     (this);
  542. }
  543.  
  544.  
  545. /* method: somIsA */
  546. boolean   somIsA(SOMClass* aClassObj)
  547. {
  548. /*
  549.  *  Returns 1 (true) if the receiver responds to methods
  550.  *  introduced by <aClassObj>, and 0 (false) otherwise.
  551.  */
  552.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somIsA)
  553.     (this,aClassObj);
  554. }
  555.  
  556.  
  557. /* method: somIsInstanceOf */
  558. boolean   somIsInstanceOf(SOMClass* aClassObj)
  559. {
  560. /*
  561.  *  Returns 1 (true) if the receiver is an instance of
  562.  *  <aClassObj> and 0 (false) otherwise.
  563.  */
  564.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somIsInstanceOf)
  565.     (this,aClassObj);
  566. }
  567.  
  568.  
  569. /* method: somRespondsTo */
  570. boolean   somRespondsTo(somId mId)
  571. {
  572. /*
  573.  *  Returns 1 (true) if the indicated method can be invoked
  574.  *  on the receiver and 0 (false) otherwise.
  575.  */
  576.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somRespondsTo)
  577.     (this,mId);
  578. }
  579.  
  580.  
  581. /* va_list method: somDispatch */
  582.  
  583. /*
  584.  *  This method provides a generic, class-specific dispatch mechanism.
  585.  *  It accepts as input <retValue> a pointer to the memory area to be
  586.  *  loaded with the result of dispatching the method indicated by
  587.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  588.  *  on which the method is to be invoked as the first argument.
  589.  */
  590. /* the va_list invocation form */
  591. boolean   somf_TIterator_somDispatch(somToken* retValue, 
  592.         somId methodId, 
  593.         va_list ap)
  594. {return SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatch)
  595.     (this,retValue,methodId,ap);
  596. }
  597.  
  598. /* the varargs invocation form */
  599. boolean   somDispatch(somToken* retValue, 
  600.         somId methodId, 
  601.         ...)
  602. {
  603. /*
  604.  *  This method provides a generic, class-specific dispatch mechanism.
  605.  *  It accepts as input <retValue> a pointer to the memory area to be
  606.  *  loaded with the result of dispatching the method indicated by
  607.  *  <methodId> using the arguments in <ap>. <ap> contains the object
  608.  *  on which the method is to be invoked as the first argument.
  609.  */
  610.    va_list ap;
  611.    va_start(ap, methodId);
  612.    boolean __somResult = 
  613.       SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatch)
  614.     (this,retValue,methodId,ap);
  615.    va_end(ap);
  616.    return __somResult;
  617. }
  618.  
  619.  
  620. /* va_list method: somClassDispatch */
  621.  
  622. /*
  623.  *  Like somDispatch, but method resolution for static methods is done
  624.  *  according to the clsObj instance method table.
  625.  */
  626. /* the va_list invocation form */
  627. boolean   somf_TIterator_somClassDispatch(SOMClass* clsObj, 
  628.         somToken* retValue, 
  629.         somId methodId, 
  630.         va_list ap)
  631. {return SOM_ResolveD(this,somf_TIterator,SOMObject,somClassDispatch)
  632.     (this,clsObj,retValue,methodId,ap);
  633. }
  634.  
  635. /* the varargs invocation form */
  636. boolean   somClassDispatch(SOMClass* clsObj, 
  637.         somToken* retValue, 
  638.         somId methodId, 
  639.         ...)
  640. {
  641. /*
  642.  *  Like somDispatch, but method resolution for static methods is done
  643.  *  according to the clsObj instance method table.
  644.  */
  645.    va_list ap;
  646.    va_start(ap, methodId);
  647.    boolean __somResult = 
  648.       SOM_ResolveD(this,somf_TIterator,SOMObject,somClassDispatch)
  649.     (this,clsObj,retValue,methodId,ap);
  650.    va_end(ap);
  651.    return __somResult;
  652. }
  653.  
  654.  
  655. /* method: somCastObj */
  656. boolean   somCastObj(SOMClass* cls)
  657. {
  658. /*
  659.  *  cast the receiving object to cls (which must be an ancestor of the
  660.  *  objects true class. Returns true on success.
  661.  */
  662.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somCastObj)
  663.     (this,cls);
  664. }
  665.  
  666.  
  667. /* method: somResetObj */
  668. boolean   somResetObj()
  669. {
  670. /*
  671.  *  reset an object to its true class. Returns true always.
  672.  */
  673.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somResetObj)
  674.     (this);
  675. }
  676.  
  677.  
  678. /* va_list method: somDispatchV */
  679.  
  680. /*
  681.  *  Obsolete. Use somDispatch instead.
  682.  */
  683. /* the va_list invocation form */
  684. void   somf_TIterator_somDispatchV(somId methodId, 
  685.         somId descriptor, 
  686.         va_list ap)
  687. {   SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchV)
  688.     (this,methodId,descriptor,ap);
  689. }
  690.  
  691. /* the varargs invocation form */
  692. void   somDispatchV(somId methodId, 
  693.         somId descriptor, 
  694.         ...)
  695. {
  696. /*
  697.  *  Obsolete. Use somDispatch instead.
  698.  */
  699.    va_list ap;
  700.    va_start(ap, descriptor);
  701.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchV)
  702.     (this,methodId,descriptor,ap);
  703.    va_end(ap);
  704. }
  705.  
  706.  
  707. /* va_list method: somDispatchL */
  708.  
  709. /*
  710.  *  Obsolete. Use somDispatch instead.
  711.  */
  712. /* the va_list invocation form */
  713. long   somf_TIterator_somDispatchL(somId methodId, 
  714.         somId descriptor, 
  715.         va_list ap)
  716. {return SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchL)
  717.     (this,methodId,descriptor,ap);
  718. }
  719.  
  720. /* the varargs invocation form */
  721. long   somDispatchL(somId methodId, 
  722.         somId descriptor, 
  723.         ...)
  724. {
  725. /*
  726.  *  Obsolete. Use somDispatch instead.
  727.  */
  728.    va_list ap;
  729.    va_start(ap, descriptor);
  730.    long __somResult = 
  731.       SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchL)
  732.     (this,methodId,descriptor,ap);
  733.    va_end(ap);
  734.    return __somResult;
  735. }
  736.  
  737.  
  738. /* va_list method: somDispatchA */
  739.  
  740. /*
  741.  *  Obsolete. Use somDispatch instead.
  742.  */
  743. /* the va_list invocation form */
  744. void*   somf_TIterator_somDispatchA(somId methodId, 
  745.         somId descriptor, 
  746.         va_list ap)
  747. {return SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchA)
  748.     (this,methodId,descriptor,ap);
  749. }
  750.  
  751. /* the varargs invocation form */
  752. void*   somDispatchA(somId methodId, 
  753.         somId descriptor, 
  754.         ...)
  755. {
  756. /*
  757.  *  Obsolete. Use somDispatch instead.
  758.  */
  759.    va_list ap;
  760.    va_start(ap, descriptor);
  761.    void* __somResult = 
  762.       SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchA)
  763.     (this,methodId,descriptor,ap);
  764.    va_end(ap);
  765.    return __somResult;
  766. }
  767.  
  768.  
  769. /* va_list method: somDispatchD */
  770.  
  771. /*
  772.  *  Obsolete. Use somDispatch instead.
  773.  */
  774. /* the va_list invocation form */
  775. double   somf_TIterator_somDispatchD(somId methodId, 
  776.         somId descriptor, 
  777.         va_list ap)
  778. {return SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchD)
  779.     (this,methodId,descriptor,ap);
  780. }
  781.  
  782. /* the varargs invocation form */
  783. double   somDispatchD(somId methodId, 
  784.         somId descriptor, 
  785.         ...)
  786. {
  787. /*
  788.  *  Obsolete. Use somDispatch instead.
  789.  */
  790.    va_list ap;
  791.    va_start(ap, descriptor);
  792.    double __somResult = 
  793.       SOM_ResolveD(this,somf_TIterator,SOMObject,somDispatchD)
  794.     (this,methodId,descriptor,ap);
  795.    va_end(ap);
  796.    return __somResult;
  797. }
  798.  
  799.  
  800. /* method: somPrintSelf */
  801. SOMObject*   somPrintSelf()
  802. {
  803. /*
  804.  *  Uses <SOMOutCharRoutine> to write a brief string with identifying
  805.  *  information about this object.  The default implementation just gives
  806.  *  the object's class name and its address in memory.
  807.  *  <self> is returned.
  808.  */
  809.    return SOM_ResolveD(this,somf_TIterator,SOMObject,somPrintSelf)
  810.     (this);
  811. }
  812.  
  813.  
  814. /* method: somDumpSelf */
  815. void   somDumpSelf(long level)
  816. {
  817. /*
  818.  *  Uses <SOMOutCharRoutine> to write a detailed description of this object
  819.  *  and its current state.
  820.  * 
  821.  *  <level> indicates the nesting level for describing compound objects
  822.  *  it must be greater than or equal to zero.  All lines in the
  823.  *  description will be preceeded by <2*level> spaces.
  824.  * 
  825.  *  This routine only actually writes the data that concerns the object
  826.  *  as a whole, such as class, and uses <somDumpSelfInt> to describe
  827.  *  the object's current state.  This approach allows readable
  828.  *  descriptions of compound objects to be constructed.
  829.  * 
  830.  *  Generally it is not necessary to override this method, if it is
  831.  *  overriden it generally must be completely replaced.
  832.  */
  833.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDumpSelf)
  834.     (this,level);
  835. }
  836.  
  837.  
  838. /* method: somDumpSelfInt */
  839. void   somDumpSelfInt(long level)
  840. {
  841. /*
  842.  *  Uses <SOMOutCharRoutine> to write in the current state of this object.
  843.  *  Generally this method will need to be overridden.  When overriding
  844.  *  it, begin by calling the parent class form of this method and then
  845.  *  write in a description of your class's instance data. This will
  846.  *  result in a description of all the object's instance data going
  847.  *  from its root ancestor class to its specific class.
  848.  */
  849.    SOM_ResolveD(this,somf_TIterator,SOMObject,somDumpSelfInt)
  850.     (this,level);
  851. }
  852.  
  853.  
  854.  
  855. };   /* somf_TIterator */
  856.  
  857.  
  858.  
  859. #endif       /* SOM_somf_TIterator_xh */
  860.