00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef neo_render_bufferregion_h
00022 #define neo_render_bufferregion_h
00023
00029 #include "../core/platform.h"
00030
00031 namespace neo {
00032 namespace render {
00033
00035
00037 class BufferRegion
00038 {
00039 public:
00040
00042 enum State
00043 {
00045 ALLOCATED,
00046
00048 FREE
00049 };
00050
00052 unsigned int _size;
00053
00055 unsigned int _offset;
00056
00058 unsigned int _sizeReal;
00059
00061 unsigned int _offsetReal;
00062
00064 BufferRegion* _p_pre;
00065
00067 BufferRegion* _p_post;
00068
00070 State _state;
00071
00073 inline BufferRegion();
00074
00076
00079 inline void align( unsigned int alignment, unsigned int size );
00080
00081 static inline bool equal( render::BufferRegion* const& p_region, const unsigned int& size ) { return p_region->_sizeReal == size; }
00082 static inline bool less( render::BufferRegion* const& p_region, const unsigned int& size ) { return p_region->_sizeReal < size; }
00083 static inline bool lessequal( render::BufferRegion* const& p_region, const unsigned int& size ) { return p_region->_sizeReal <= size; }
00084
00085 static inline bool equal( render::BufferRegion* const& p_rhs, render::BufferRegion* const& p_lhs ) { return p_rhs == p_lhs; }
00086 static inline bool less( render::BufferRegion* const& p_rhs, render::BufferRegion* const& p_lhs ) { return p_rhs->_sizeReal < p_lhs->_sizeReal; }
00087 static inline bool lessequal( render::BufferRegion* const& p_rhs, render::BufferRegion* const& p_lhs ) { return p_rhs->_sizeReal <= p_lhs->_sizeReal; }
00088 };
00089
00090 #include "bufferregion.inl"
00091
00092 }
00093 }
00094
00095 #endif