00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef __GEO_PrimList_h__
00021 #define __GEO_PrimList_h__
00022
00023 #include "GEO_API.h"
00024 #include <GB/GB_Group.h>
00025 #include <GB/GB_ElementList.h>
00026 #include "GEO_Primitive.h"
00027
00028
00029 class GEO_API GEO_PrimList : public GB_ElementList {
00030 public:
00031 GEO_PrimList(unsigned size = 0) : GB_ElementList(size) {}
00032 virtual ~GEO_PrimList();
00033
00034 const GEO_Primitive *entry(unsigned n) const
00035 { return (const GEO_Primitive *)rawEntry(n); }
00036 GEO_Primitive *entry(unsigned n)
00037 { return (GEO_Primitive *)rawEntry(n); }
00038
00039 const GEO_Primitive *head() const
00040 { return (const GEO_Primitive *)rawHead();}
00041 GEO_Primitive *head()
00042 { return (GEO_Primitive *)rawHead();}
00043
00044 const GEO_Primitive *head(const GB_PrimitiveGroup &group) const
00045 { return (const GEO_Primitive *)rawHead(group); }
00046
00047 GEO_Primitive *head(const GB_PrimitiveGroup &group)
00048 { return (GEO_Primitive *)rawHead(group); }
00049
00050 int headMix(const GB_PrimitiveGroup &group,
00051 const GEO_Primitive *&elem,
00052 const GB_Primitive *&sec) const
00053 { return rawHeadMix(group,(const GB_Element *&)elem,
00054 (const GB_Element *&)sec); }
00055 int headMix(const GB_PrimitiveGroup &group,
00056 GEO_Primitive *&elem,
00057 GB_Primitive *&sec)
00058 { return rawHeadMix(group,(const GB_Element *&)elem,
00059 (const GB_Element *&)sec); }
00060
00061 const GEO_Primitive *tail() const
00062 { return (const GEO_Primitive *)rawTail(); }
00063 GEO_Primitive *tail()
00064 { return (GEO_Primitive *)rawTail(); }
00065 const GEO_Primitive *tail(const GB_PrimitiveGroup &group) const
00066 { return (const GEO_Primitive *)rawTail(group); }
00067 GEO_Primitive *tail(const GB_PrimitiveGroup &group)
00068 { return (GEO_Primitive *)rawTail(group); }
00069
00070 int tailMix(const GB_PrimitiveGroup &group,
00071 const GEO_Primitive *&elem,
00072 const GB_Primitive *&sec) const
00073 { return rawTailMix(group,(const GB_Element *&)elem,
00074 (const GB_Element *&)sec); }
00075 int tailMix(const GB_PrimitiveGroup &group,
00076 GEO_Primitive *&elem,
00077 GB_Primitive *&sec)
00078 { return rawTailMix(group,(const GB_Element *&)elem,
00079 (const GB_Element *&)sec); }
00080 const GEO_Primitive *next(const GEO_Primitive *item) const
00081 { return (const GEO_Primitive *)rawNext(item); }
00082 GEO_Primitive *next(GEO_Primitive *item)
00083 { return (GEO_Primitive *)rawNext(item); }
00084 #ifdef METROWERKS_BUILD
00085 GEO_Primitive *next(const GEO_Primitive *pt,
00086 const GB_PrimitiveGroup &grp) const
00087 { return (GEO_Primitive *)rawNext(pt, grp); }
00088 #else
00089 const GEO_Primitive *next(const GEO_Primitive *pt,
00090 const GB_PrimitiveGroup &grp) const
00091 { return (const GEO_Primitive *)rawNext(pt, grp); }
00092 GEO_Primitive *next(GEO_Primitive *pt, const GB_PrimitiveGroup &grp)
00093 { return (GEO_Primitive *)rawNext(pt, grp); }
00094 #endif
00095
00096 int nextMix(const GB_PrimitiveGroup &grp,
00097 const GEO_Primitive *&elem,
00098 const GB_Primitive *&sec,
00099 const GEO_Primitive *&newelem,
00100 const GB_Primitive *&newsec) const
00101 { return rawNextMix(grp,(const GB_Element *&)elem,
00102 (const GB_Element *&)sec,
00103 (const GB_Element *&)newelem,
00104 (const GB_Element *&)newsec);}
00105
00106 int nextMix(const GB_PrimitiveGroup &grp,
00107 GEO_Primitive *&elem,
00108 GB_Primitive *&sec,
00109 GEO_Primitive *&newelem,
00110 GB_Primitive *&newsec)
00111 { return rawNextMix(grp,(const GB_Element *&)elem,
00112 (const GB_Element *&)sec,
00113 (const GB_Element *&)newelem,
00114 (const GB_Element *&)newsec);}
00115
00116 const GEO_Primitive *prev(const GEO_Primitive *item) const
00117 { return (const GEO_Primitive *)rawPrev(item); }
00118 GEO_Primitive *prev(GEO_Primitive *item)
00119 { return (GEO_Primitive *)rawPrev(item); }
00120 const GEO_Primitive *prev(const GEO_Primitive *pt,
00121 const GB_PrimitiveGroup &grp)const
00122 { return (const GEO_Primitive *)rawPrev(pt, grp); }
00123 GEO_Primitive *prev(GEO_Primitive *pt, const GB_PrimitiveGroup &grp)
00124 { return (GEO_Primitive *)rawPrev(pt, grp); }
00125
00126
00127 int prevMix(const GB_PrimitiveGroup &grp,
00128 const GEO_Primitive *&elem,
00129 const GB_Primitive *&sec,
00130 const GEO_Primitive *&newelem,
00131 const GB_Primitive *&newsec) const
00132 { return rawPrevMix(grp,(const GB_Element *&)elem,
00133 (const GB_Element *&)sec,
00134 (const GB_Element *&)newelem,
00135 (const GB_Element *&)newsec);}
00136
00137 int prevMix(const GB_PrimitiveGroup &grp,
00138 GEO_Primitive *&elem,
00139 GB_Primitive *&sec,
00140 GEO_Primitive *&newelem,
00141 GB_Primitive *&newsec)
00142 { return rawPrevMix(grp,(const GB_Element *&)elem,
00143 (const GB_Element *&)sec,
00144 (const GB_Element *&)newelem,
00145 (const GB_Element *&)newsec);}
00146
00147 const GEO_Primitive *head(unsigned mask) const;
00148 const GEO_Primitive *tail(unsigned mask) const;
00149 const GEO_Primitive *next(const GEO_Primitive *, unsigned mask) const;
00150 const GEO_Primitive *prev(const GEO_Primitive *, unsigned mask) const;
00151
00152 GEO_Primitive *head(unsigned mask);
00153 GEO_Primitive *tail(unsigned mask);
00154 GEO_Primitive *next(GEO_Primitive *, unsigned mask);
00155 GEO_Primitive *prev(GEO_Primitive *, unsigned mask);
00156
00157 GEO_Primitive *operator()(unsigned i)
00158 {
00159 return (GEO_Primitive *)
00160 UT_PtrArray<GB_Element *>::operator()(i);
00161 }
00162 const GEO_Primitive *operator()(unsigned i) const
00163 {
00164 return (const GEO_Primitive *)
00165 UT_PtrArray<GB_Element *>::operator()(i);
00166 }
00167
00168 GEO_Primitive *operator[](unsigned i)
00169 {
00170 return (GEO_Primitive *)
00171 UT_PtrArray<GB_Element *>::operator[](i);
00172 }
00173 const GEO_Primitive *operator[](unsigned i) const
00174 {
00175 return (const GEO_Primitive *)
00176 UT_PtrArray<GB_Element *>::operator[](i);
00177 }
00178 protected:
00179 };
00180
00181 #endif