mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 04:37:00 +00:00
[Build] Larger build system update
FIXED: Core now builds under cmake for Windows TODO: Map and mmap gen currently does not build TODO: More sync work is required for Eluna, thus Eluna is temporarily disabled This has only been tested under Windows with CMAKE and VS
This commit is contained in:
parent
c2f9316581
commit
13292befd6
640 changed files with 100354 additions and 29918 deletions
|
|
@ -14,22 +14,24 @@
|
|||
/* 19.11.03 1.01 Dan Big endian handling */
|
||||
/* 08.12.03 2.01 Dan High-memory handling (> 0x80000000) */
|
||||
/*****************************************************************************/
|
||||
|
||||
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
#include "sparse.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Public functions
|
||||
|
||||
void CompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned char * pbInBuffer, int cbInBuffer)
|
||||
void CompressSparse(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer)
|
||||
{
|
||||
unsigned char * pbOutBufferEnd = pbOutBuffer + *pcbOutBuffer;
|
||||
unsigned char * pbInBufferEnd = pbInBuffer + cbInBuffer;
|
||||
unsigned char * pbLastNonZero = pbInBuffer;
|
||||
unsigned char * pbOutBuffer0 = pbOutBuffer;
|
||||
unsigned char * pbInBuffPtr = pbInBuffer;
|
||||
unsigned char * pbOutBufferEnd = (unsigned char *)pvOutBuffer + *pcbOutBuffer;
|
||||
unsigned char * pbInBufferEnd = (unsigned char *)pvInBuffer + cbInBuffer;
|
||||
unsigned char * pbLastNonZero = (unsigned char *)pvInBuffer;
|
||||
unsigned char * pbOutBuffer0 = (unsigned char *)pvOutBuffer;
|
||||
unsigned char * pbInBuffPtr = (unsigned char *)pvInBuffer;
|
||||
unsigned char * pbOutBuffer = (unsigned char *)pvOutBuffer;
|
||||
unsigned char * pbInBuffer = (unsigned char *)pvInBuffer;
|
||||
size_t NumberOfNonZeros;
|
||||
size_t NumberOfZeros;
|
||||
|
||||
|
|
@ -86,7 +88,7 @@ void CompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned ch
|
|||
// Put marker that means "0x80 of nonzeros"
|
||||
*pbOutBuffer++ = 0xFF;
|
||||
memcpy(pbOutBuffer, pbInBuffer, 0x80);
|
||||
|
||||
|
||||
// Adjust counter of nonzeros and both pointers
|
||||
NumberOfNonZeros -= 0x80;
|
||||
pbOutBuffer += 0x80;
|
||||
|
|
@ -106,7 +108,7 @@ void CompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned ch
|
|||
// Put marker that means "1 nonzero byte"
|
||||
*pbOutBuffer++ = 0x80;
|
||||
memcpy(pbOutBuffer, pbInBuffer, 1);
|
||||
|
||||
|
||||
// Adjust counter of nonzeros and both pointers
|
||||
NumberOfNonZeros--;
|
||||
pbOutBuffer++;
|
||||
|
|
@ -183,7 +185,7 @@ void CompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned ch
|
|||
|
||||
// Put marker that means "Several zeros"
|
||||
*pbOutBuffer++ = (unsigned char)(NumberOfZeros - 3);
|
||||
|
||||
|
||||
// Adjust pointer
|
||||
pbInBuffer += NumberOfZeros;
|
||||
}
|
||||
|
|
@ -208,7 +210,7 @@ void CompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned ch
|
|||
// Terminate with a marker that means "0x80 of nonzeros"
|
||||
*pbOutBuffer++ = 0xFF;
|
||||
memcpy(pbOutBuffer, pbInBuffer, NumberOfNonZeros);
|
||||
|
||||
|
||||
// Adjust pointer
|
||||
pbOutBuffer += NumberOfNonZeros;
|
||||
break;
|
||||
|
|
@ -234,9 +236,11 @@ void CompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned ch
|
|||
*pcbOutBuffer = (int)(pbOutBuffer - pbOutBuffer0);
|
||||
}
|
||||
|
||||
int DecompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned char * pbInBuffer, int cbInBuffer)
|
||||
int DecompressSparse(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer)
|
||||
{
|
||||
unsigned char * pbInBufferEnd = pbInBuffer + cbInBuffer;
|
||||
unsigned char * pbInBufferEnd = (unsigned char *)pvInBuffer + cbInBuffer;
|
||||
unsigned char * pbOutBuffer = (unsigned char *)pvOutBuffer;
|
||||
unsigned char * pbInBuffer = (unsigned char *)pvInBuffer;
|
||||
unsigned int cbChunkSize;
|
||||
unsigned int cbOutBuffer = 0;
|
||||
unsigned int OneByte;
|
||||
|
|
@ -256,7 +260,7 @@ int DecompressSparse(unsigned char * pbOutBuffer, int * pcbOutBuffer, unsigned c
|
|||
cbOutBuffer |= (OneByte << 0x00);
|
||||
|
||||
// Verify the size of the stream against the output buffer size
|
||||
if(cbOutBuffer > *pcbOutBuffer)
|
||||
if(cbOutBuffer > (unsigned int)*pcbOutBuffer)
|
||||
return 0;
|
||||
|
||||
// Put the output size to the buffer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue