summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2013-08-30 20:45:29 +0200
committermadmaxoft <github@xoft.cz>2013-08-30 20:45:29 +0200
commitb1f8b6e4c47556799f7fe753c87960f60d003153 (patch)
tree1e808e818f237c29e4d1a2a20b74b8b544558191
parentAnvilStats: Added the callback for region begin and end. (diff)
downloadcuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.tar
cuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.tar.gz
cuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.tar.bz2
cuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.tar.lz
cuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.tar.xz
cuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.tar.zst
cuberite-b1f8b6e4c47556799f7fe753c87960f60d003153.zip
-rw-r--r--Tools/AnvilStats/Callback.h36
1 files changed, 21 insertions, 15 deletions
diff --git a/Tools/AnvilStats/Callback.h b/Tools/AnvilStats/Callback.h
index eed51a41c..eda4a8478 100644
--- a/Tools/AnvilStats/Callback.h
+++ b/Tools/AnvilStats/Callback.h
@@ -32,37 +32,43 @@ A callback is guaranteed to run on all chunks in a region and one region is guar
class cCallback abstract
{
public:
+ enum
+ {
+ CALLBACK_CONTINUE = false,
+ CALLBACK_ABORT = true,
+ } ;
+
virtual ~cCallback() {} // Force a virtual destructor in each descendant
/// Called when a new region file is about to be opened; by default allow the region
- virtual bool OnNewRegion(int a_RegionX, int a_RegionZ) { return false; }
+ virtual bool OnNewRegion(int a_RegionX, int a_RegionZ) { return CALLBACK_CONTINUE; }
/// 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
- virtual bool OnHeader(int a_FileOffset, unsigned char a_NumSectors, int a_Timestamp) { return true; }
+ 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 true; }
+ 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 true; }
+ virtual bool OnDecompressedData(const char * a_DecompressedNBT, int a_DataSize) { return CALLBACK_ABORT; }
/// The chunk's NBT should specify chunk coords, these are sent here:
- virtual bool OnRealCoords(int a_ChunkX, int a_ChunkZ) { return true; }
+ virtual bool OnRealCoords(int a_ChunkX, int a_ChunkZ) { return CALLBACK_ABORT; }
/// The chunk contains a LastUpdate value specifying the last tick in which it was saved.
- virtual bool OnLastUpdate(Int64 a_LastUpdate) { return true; }
+ virtual bool OnLastUpdate(Int64 a_LastUpdate) { return CALLBACK_ABORT; }
- virtual bool OnTerrainPopulated(bool a_Populated) { return true; }
+ virtual bool OnTerrainPopulated(bool a_Populated) { return CALLBACK_ABORT; }
- virtual bool OnBiomes(const unsigned char * a_BiomeData) { return true; }
+ virtual bool OnBiomes(const unsigned char * a_BiomeData) { return CALLBACK_ABORT; }
/** Called when a heightmap for the chunk is read from the file.
Note that the heightmap is given in big-endian ints, so if you want it, you need to ntohl() it first!
*/
- virtual bool OnHeightMap(const int * a_HeightMapBE) { return true; }
+ 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().
@@ -74,16 +80,16 @@ public:
const NIBBLETYPE * a_BlockMeta,
const NIBBLETYPE * a_BlockLight,
const NIBBLETYPE * a_BlockSkyLight
- ) { return true; }
+ ) { 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.
*/
- virtual bool OnEmptySection(unsigned char a_Y) { return false; }
+ 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 true; }
+ virtual bool OnSectionsFinished(void) { return CALLBACK_ABORT; }
/** Called for each entity in the chunk.
Common parameters are parsed from the NBT.
@@ -101,7 +107,7 @@ public:
char a_IsOnGround,
cParsedNBT & a_NBT,
int a_NBTTag
- ) { return true; }
+ ) { return CALLBACK_ABORT; }
/** Called for each tile entity in the chunk.
Common parameters are parsed from the NBT.
@@ -113,14 +119,14 @@ public:
int a_PosX, int a_PosY, int a_PosZ,
cParsedNBT & a_NBT,
int a_NBTTag
- ) { return true; }
+ ) { 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 true; }
+ ) { 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
virtual void OnRegionFinished(int a_RegionX, int a_RegionZ) {}