00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00021
00022
00023 #ifndef H_SPK_BUFFER
00024 #define H_SPK_BUFFER
00025
00026 namespace SPK
00027 {
00028 class Particle;
00029 class Group;
00030
00048 class Buffer
00049 {
00050 friend class BufferCreator;
00051 friend class Group;
00052 friend void swapParticles(Particle& a,Particle& b);
00053
00054 public :
00055
00060 unsigned int getFlag() const;
00061
00066 bool isSwapEnabled() const;
00067
00068 protected :
00069
00070 Buffer() {};
00071 virtual ~Buffer() {};
00072
00073 private :
00074
00075 unsigned int flag;
00076 bool swapEnabled;
00077
00086 virtual void swap(size_t index0,size_t index1) = 0;
00087 };
00088
00097 class BufferCreator
00098 {
00099 friend class Group;
00100
00101 protected :
00102
00103 virtual ~BufferCreator() {}
00104
00105 private :
00106
00116 virtual Buffer* createBuffer(size_t nbParticles,const Group& group) const = 0;
00117 };
00118
00119
00120 inline unsigned int Buffer::getFlag() const
00121 {
00122 return flag;
00123 }
00124
00125 inline bool Buffer::isSwapEnabled() const
00126 {
00127 return swapEnabled;
00128 }
00129 }
00130
00131 #endif