00001 #ifndef PATCHRANDOMACCESSENUMERATOR_H 00002 #define PATCHRANDOMACCESSENUMERATOR_H 00003 00011 #include <map> 00012 00013 struct Triangle; 00014 class Entity; 00015 class EntitySet; 00016 class PatchSequenceEnumerator; 00017 00024 class PatchRandomAccessEnumerator { 00025 public: 00031 static PatchRandomAccessEnumerator* create(Entity *forEntity); 00032 00038 static PatchRandomAccessEnumerator* create(EntitySet *forEntitySet); 00039 00040 private: 00041 template <class T> 00042 static PatchRandomAccessEnumerator* createGeneric(T *from) { 00043 PatchSequenceEnumerator *pe = from->createPatchSequenceEnumerator(); 00044 PatchRandomAccessEnumerator *iter = 00045 new PatchRandomAccessEnumerator(pe); 00046 delete pe; 00047 return iter; 00048 } 00049 00050 public: 00054 PatchRandomAccessEnumerator(PatchSequenceEnumerator *); 00055 00060 int count(); 00061 00066 Triangle& operator[] (unsigned index); 00067 00068 private: 00069 typedef std::map<unsigned, Triangle*> TContainer; 00070 TContainer container_; 00071 }; 00072 00073 #endif // PATCHRANDOMACCESSENUMERATOR_H
1.5.2