1
0

AnvilStats: Callbacks can now use CALLBACK_CONTINUE and CALLBACK_ABORT instead of bool return values.

This makes the code slightly easier to understand.
This commit is contained in:
madmaxoft 2013-08-30 20:45:29 +02:00
parent 32bc969339
commit b1f8b6e4c4

View File

@ -32,37 +32,43 @@ A callback is guaranteed to run on all chunks in a region and one region is guar
class cCallback abstract class cCallback abstract
{ {
public: public:
enum
{
CALLBACK_CONTINUE = false,
CALLBACK_ABORT = true,
} ;
virtual ~cCallback() {} // Force a virtual destructor in each descendant 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 /// 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 /// Called to inform the stats module of the chunk coords for newly processing chunk
virtual bool OnNewChunk(int a_ChunkX, int a_ChunkZ) = 0; 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 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) /// 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 ;) /// 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: /// 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. /// 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. /** 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! 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. /** 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().
@ -74,16 +80,16 @@ public:
const NIBBLETYPE * a_BlockMeta, const NIBBLETYPE * a_BlockMeta,
const NIBBLETYPE * a_BlockLight, const NIBBLETYPE * a_BlockLight,
const NIBBLETYPE * a_BlockSkyLight 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. /** 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. 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(). /** 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. /** Called for each entity in the chunk.
Common parameters are parsed from the NBT. Common parameters are parsed from the NBT.
@ -101,7 +107,7 @@ public:
char a_IsOnGround, char a_IsOnGround,
cParsedNBT & a_NBT, cParsedNBT & a_NBT,
int a_NBTTag int a_NBTTag
) { return true; } ) { return CALLBACK_ABORT; }
/** Called for each tile entity in the chunk. /** Called for each tile entity in the chunk.
Common parameters are parsed from the NBT. Common parameters are parsed from the NBT.
@ -113,14 +119,14 @@ public:
int a_PosX, int a_PosY, int a_PosZ, int a_PosX, int a_PosY, int a_PosZ,
cParsedNBT & a_NBT, cParsedNBT & a_NBT,
int a_NBTTag int a_NBTTag
) { return true; } ) { return CALLBACK_ABORT; }
/// Called for each tile tick in the chunk /// Called for each tile tick in the chunk
virtual bool OnTileTick( virtual bool OnTileTick(
int a_BlockType, int a_BlockType,
int a_TicksLeft, int a_TicksLeft,
int a_PosX, int a_PosY, int a_PosZ 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 /// 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) {} virtual void OnRegionFinished(int a_RegionX, int a_RegionZ) {}