diff options
Diffstat (limited to 'Tools/AnvilStats/Callback.h')
-rw-r--r-- | Tools/AnvilStats/Callback.h | 80 |
1 files changed, 51 insertions, 29 deletions
diff --git a/Tools/AnvilStats/Callback.h b/Tools/AnvilStats/Callback.h index 9b6554a8d..3e080f65d 100644 --- a/Tools/AnvilStats/Callback.h +++ b/Tools/AnvilStats/Callback.h @@ -24,19 +24,19 @@ class cParsedNBT; The processor calls each virtual function in the order they are declared here with the specified args. If the function returns true, the processor doesn't process the data item, moves on to the next chunk and starts calling the callbacks again from start with the new chunk data. -So if a statistics collector doesn't need data decompression at all, it can stop the processor from doing so early-enough -and still get meaningful data. -A callback is guaranteed to run in a single thread and always the same thread for the same chunk. -A callback is guaranteed to run on all chunks in a region and one region is guaranteed to be handled by only callback. +So if a statistics collector doesn't need data decompression at all, it can stop the processor from doing so +early-enough and still get meaningful data. A callback is guaranteed to run in a single thread and always the same +thread for the same chunk. A callback is guaranteed to run on all chunks in a region and one region is guaranteed to be +handled by only callback. */ class cCallback abstract { -public: + public: enum { CALLBACK_CONTINUE = false, - CALLBACK_ABORT = true, - } ; + CALLBACK_ABORT = true, + }; virtual ~cCallback() {} // Force a virtual destructor in each descendant @@ -46,11 +46,16 @@ public: /** Called to inform the stats module of the chunk coords for newly processing chunk */ virtual bool OnNewChunk(int a_ChunkX, int a_ChunkZ) = 0; - /** Called to inform about the chunk's data offset in the file (chunk mini-header), the number of sectors it uses and the timestamp field value */ + /** Called to inform about the chunk's data offset in the file (chunk mini-header), the number of sectors it uses + * and the timestamp field value */ virtual bool OnHeader(int a_FileOffset, unsigned char a_NumSectors, int a_Timestamp) { return CALLBACK_ABORT; } - /** Called to inform of the compressed chunk data size and position in the file (offset from file start to the actual data) */ - virtual bool OnCompressedDataSizePos(int a_CompressedDataSize, int a_DataOffset, char a_CompressionMethod) { return CALLBACK_ABORT; } + /** Called to inform of the compressed chunk data size and position in the file (offset from file start to the + * actual data) */ + virtual bool OnCompressedDataSizePos(int a_CompressedDataSize, int a_DataOffset, char a_CompressionMethod) + { + return CALLBACK_ABORT; + } /** Just in case you wanted to process the NBT yourself ;) */ virtual bool OnDecompressedData(const char * a_DecompressedNBT, int a_DataSize) { return CALLBACK_ABORT; } @@ -71,7 +76,8 @@ public: virtual bool OnHeightMap(const int * a_HeightMapBE) { return CALLBACK_ABORT; } /** If there is data for the section, this callback is called; otherwise OnEmptySection() is called instead. - All OnSection() callbacks are called first, and only then all the remaining sections are reported in OnEmptySection(). + All OnSection() callbacks are called first, and only then all the remaining sections are reported in + OnEmptySection(). */ virtual bool OnSection( unsigned char a_Y, @@ -80,7 +86,10 @@ public: const NIBBLETYPE * a_BlockMeta, const NIBBLETYPE * a_BlockLight, const NIBBLETYPE * a_BlockSkyLight - ) { return CALLBACK_ABORT; } + ) + { + return CALLBACK_ABORT; + } /** If there is no data for a section, this callback is called; otherwise OnSection() is called instead. OnEmptySection() callbacks are called after all OnSection() callbacks. @@ -88,7 +97,7 @@ public: virtual bool OnEmptySection(unsigned char a_Y) { return CALLBACK_CONTINUE; } /** Called after all sections have been processed via either OnSection() or OnEmptySection(). - */ + */ virtual bool OnSectionsFinished(void) { return CALLBACK_ABORT; } /** Called for each entity in the chunk. @@ -98,16 +107,24 @@ public: */ virtual bool OnEntity( const AString & a_EntityType, - double a_PosX, double a_PosY, double a_PosZ, - double a_SpeedX, double a_SpeedY, double a_SpeedZ, - float a_Yaw, float a_Pitch, + double a_PosX, + double a_PosY, + double a_PosZ, + double a_SpeedX, + double a_SpeedY, + double a_SpeedZ, + float a_Yaw, + float a_Pitch, float a_FallDistance, short a_FireTicksLeft, short a_AirTicks, char a_IsOnGround, cParsedNBT & a_NBT, int a_NBTTag - ) { return CALLBACK_ABORT; } + ) + { + return CALLBACK_ABORT; + } /** Called for each tile entity in the chunk. Common parameters are parsed from the NBT. @@ -116,21 +133,26 @@ public: */ virtual bool OnTileEntity( const AString & a_EntityType, - int a_PosX, int a_PosY, int a_PosZ, + int a_PosX, + int a_PosY, + int a_PosZ, cParsedNBT & a_NBT, int a_NBTTag - ) { return CALLBACK_ABORT; } + ) + { + return CALLBACK_ABORT; + } /** Called for each tile tick in the chunk */ - virtual bool OnTileTick( - int a_BlockType, - int a_TicksLeft, - int a_PosX, int a_PosY, int a_PosZ - ) { return CALLBACK_ABORT; } + virtual bool OnTileTick(int a_BlockType, int a_TicksLeft, int a_PosX, int a_PosY, int a_PosZ) + { + return CALLBACK_ABORT; + } - /** Called after the entire region file has been processed. No more callbacks for this region will be called. No processing by default */ + /** Called after the entire region file has been processed. No more callbacks for this region will be called. No + * processing by default */ virtual void OnRegionFinished(int a_RegionX, int a_RegionZ) {} -} ; +}; typedef std::vector<cCallback *> cCallbacks; @@ -145,7 +167,7 @@ The factory keeps track of all the callbacks that it has created and deletes the */ class cCallbackFactory { -public: + public: virtual ~cCallbackFactory() { for (cCallbacks::iterator itr = m_Callbacks.begin(), end = m_Callbacks.end(); itr != end; ++itr) @@ -168,6 +190,6 @@ public: return Callback; } -protected: + protected: cCallbacks m_Callbacks; -} ; +}; |