00001 00007 #pragma once 00008 00009 #include "attribute.hpp" 00010 #include "node.hpp" 00011 00016 class agls_API IChunk 00017 : public IObject 00018 { 00019 public: 00023 virtual ~IChunk(void) { ; } 00024 }; 00025 00030 template<typename TN> 00031 class agls_API TChunk 00032 : public TObject<TN> 00033 { 00034 typedef std::vector<TAttribute<IAttribute>*> VecAttributePtr; 00035 typedef std::list<TChunk<TN>*> LstChunkPtr; 00036 00037 public: 00041 TChunk(void) 00042 { 00043 this->m_vecAttributePtrAttr.clear(); 00044 this->m_pNodeBegin = NULL; 00045 this->m_pNodeEnd = NULL; 00046 this->m_pChunkBase = NULL; 00047 this->m_lstChunkPtrChildren.clear(); 00048 } 00049 00053 virtual ~TChunk(void) { ; } 00054 00055 public: 00056 00057 private: 00058 VecAttributePtr m_vecAttributePtrAttr; 00059 TNode<INode>* m_pNodeBegin; 00060 TNode<INode>* m_pNodeEnd; 00061 TChunk<TN>* m_pChunkBase; 00062 LstChunkPtr m_lstChunkPtrChildren; 00063 }; 00064 00069 class agls_API CChunk 00070 : public TChunk<IChunk> 00071 { 00072 public: 00076 CChunk(void); 00077 00081 virtual ~CChunk(void); 00082 };