home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / C / OTL-MC7.DMS / in.adf / classsource.lha / ClassSource / BOOPSI / rootclass / rootclass.c
Encoding:
C/C++ Source or Header  |  1995-02-12  |  2.1 KB  |  115 lines

  1. #include <classes/BOOPSI/rootclass.h>
  2.  
  3. #pragma -
  4. #include <pragma/intuition_lib.h>
  5. #include <clib/alib_protos.h>
  6. #pragma +
  7.  
  8. BoopsiRootC::BoopsiRootC()
  9.     : ShareC()
  10. {
  11.     boopsi_object = NULL;
  12. }
  13.  
  14. BoopsiRootC::BoopsiRootC(struct IClass *c, STRPTR pubclass,
  15.     Tag tag1type, ...)
  16.     : ShareC()
  17. {
  18.     boopsi_object = (Object *) NewObjectA(c,pubclass,(struct TagItem *) &tag1type);
  19.     if (!boopsi_object)
  20.         throw BoopsiX();
  21. }
  22.  
  23. BoopsiRootC::BoopsiRootC(struct IClass *c, STRPTR pubclass,
  24.     struct TagItem *tattr)
  25.     : ShareC()
  26. {
  27.     boopsi_object = (Object *) NewObjectA(c,pubclass,tattr);
  28.     if (!boopsi_object)
  29.         throw BoopsiX();
  30. }
  31.  
  32. BoopsiRootC::BoopsiRootC(const BoopsiRootC &s)
  33.     : ShareC(s)
  34. {
  35.     boopsi_object = s.boopsi_object;
  36. }
  37.  
  38. BoopsiRootC::~BoopsiRootC()
  39. {
  40.     if (only())
  41.         DisposeObject(boopsi_object);
  42. }
  43.  
  44. BoopsiRootC &BoopsiRootC::operator= (const BoopsiRootC &s)
  45. {
  46.     if (this != &s)
  47.     {
  48.         if (only())
  49.             DisposeObject(boopsi_object);
  50.         ShareC::operator=(s);
  51.         boopsi_object = s.boopsi_object;
  52.     };
  53.     return *this;
  54. }
  55.  
  56. Object *BoopsiRootC::object() const
  57. {
  58.     return boopsi_object;
  59. }
  60.  
  61. VOID BoopsiRootC::setAttrs(Tag tag1type, ...)
  62. {
  63.     SetAttrsA(boopsi_object,(struct TagItem *) &tag1type);
  64. }
  65.  
  66. VOID BoopsiRootC::setAttrs(struct TagItem *tattr)
  67. {
  68.     SetAttrsA(boopsi_object,tattr);
  69. }
  70.  
  71. ULONG BoopsiRootC::getAttr(Tag tagtype) const
  72. {
  73.     ULONG data;
  74.     GetAttr(tagtype,boopsi_object,&data);
  75.     return data;
  76. }
  77.  
  78. BOOL BoopsiRootC::getAttr(Tag tagtype, ULONG &data) const
  79. {
  80.     return (BOOL) GetAttr(tagtype,boopsi_object,&data);
  81. }
  82.  
  83. ULONG BoopsiRootC::doMethod(ULONG methodID, ...)
  84. {
  85.     return DoMethodA(boopsi_object,(Msg) &methodID);
  86. }
  87.  
  88. ULONG BoopsiRootC::doMethod(Msg boopsimessage)
  89. {
  90.     return DoMethodA(boopsi_object,boopsimessage);
  91. }
  92.  
  93. VOID BoopsiRootC::addMember(BoopsiRootC &child)
  94. {
  95.     DoMethod(boopsi_object,OM_ADDMEMBER,child.object());
  96. }
  97.  
  98. VOID BoopsiRootC::addMember(Object *child)
  99. {
  100.     if (child)
  101.         DoMethod(boopsi_object,OM_ADDMEMBER,child);
  102. }
  103.  
  104. VOID BoopsiRootC::remMember(BoopsiRootC &child)
  105. {
  106.     DoMethod(boopsi_object,OM_REMMEMBER,child.object());
  107. }
  108.  
  109. VOID BoopsiRootC::remMember(Object *child)
  110. {
  111.     if (child)
  112.         DoMethod(boopsi_object,OM_REMMEMBER,child);
  113. }
  114.  
  115.