00001 /* 00002 * PROPRIETARY INFORMATION. This software is proprietary to 00003 * Side Effects Software Inc., and is not to be reproduced, 00004 * transmitted, or disclosed in any way without written permission. 00005 * 00006 * Produced by: 00007 * George ElKoura 00008 * Side Effects 00009 * 477 Richmond Street West 00010 * Toronto, Ontario 00011 * Canada M5V 3E7 00012 * 416-504-9876 00013 * 00014 * NAME: Group definition for GB_Element types (C++) 00015 * 00016 * COMMENTS: 00017 * 00018 */ 00019 00020 #ifndef __GB_BaseGroup_h__ 00021 #define __GB_BaseGroup_h__ 00022 00023 #include "GB_API.h" 00024 #include <UT/UT_LinkList.h> 00025 #include <UT/UT_String.h> 00026 00027 00028 #define GBGROUP 0x1f 00029 #define GBPOINTGROUP 0x01 00030 #define GBPRIMITIVEGROUP 0x02 00031 #define GBEDGEGROUP 0x04 00032 #define GBBREAKPOINTGROUP 0x08 00033 #define GBVERTEXGROUP 0x10 00034 00035 class GB_API GB_BaseGroup : public UT_LinkNode 00036 { 00037 public: 00038 GB_BaseGroup(const char *name, int hidden, 00039 unsigned short type = GBGROUP); 00040 virtual ~GB_BaseGroup(); 00041 00042 const UT_String &getName() const { return myName; } 00043 UT_String &getName() { return myName; } 00044 00045 int getInternal() const { return myInternal; } 00046 void setInternal(int onOff) { myInternal = onOff; } 00047 00048 00049 virtual unsigned entries() const = 0; 00050 virtual int isEmpty() const = 0; 00051 virtual void clearEntries(void) = 0; 00052 00053 00054 GB_BaseGroup *prev() { return (GB_BaseGroup*)UT_LinkNode::prev();} 00055 GB_BaseGroup *next() { return (GB_BaseGroup*)UT_LinkNode::next();} 00056 const GB_BaseGroup *prev() const 00057 { return (const GB_BaseGroup*)UT_LinkNode::prev(); } 00058 const GB_BaseGroup *next() const 00059 { return (const GB_BaseGroup*)UT_LinkNode::next(); } 00060 00061 virtual int save(ostream &os, int binary) const = 0; 00062 virtual bool load(UT_IStream &is) = 0; 00063 00064 int classType(void) const { return myType; } 00065 protected: 00066 00067 UT_String myName; 00068 unsigned myInternal:1, 00069 myType:5; 00070 }; 00071 #endif
1.5.9