Pārlūkot izejas kodu

Implement CRC32 in the new Hash class. Will be useful for Dict and for

the new Shader cache.
legacy
Sam Hocevar sam pirms 13 gadiem
vecāks
revīzija
07ebcb6e29
10 mainītis faili ar 110 papildinājumiem un 1 dzēšanām
  1. +1
    -1
      src/Makefile.am
  2. +1
    -0
      src/core.h
  3. +58
    -0
      src/hash.cpp
  4. +26
    -0
      src/hash.h
  5. +2
    -0
      win32/deushax.vcxproj
  6. +6
    -0
      win32/deushax.vcxproj.filters
  7. +2
    -0
      win32/editor.vcxproj
  8. +6
    -0
      win32/editor.vcxproj.filters
  9. +2
    -0
      win32/monsterz.vcxproj
  10. +6
    -0
      win32/monsterz.vcxproj.filters

+ 1
- 1
src/Makefile.am Parādīt failu

@@ -8,7 +8,7 @@ liblol_a_SOURCES = \
tileset.cpp tileset.h forge.cpp forge.h video.cpp video.h \
timer.cpp timer.h bitfield.h profiler.cpp profiler.h input.h input.cpp \
world.cpp world.h sample.cpp sample.h sampler.cpp sampler.h \
text.cpp text.h emitter.cpp emitter.h numeric.h \
text.cpp text.h emitter.cpp emitter.h numeric.h hash.cpp hash.h \
worldentity.cpp worldentity.h shader.cpp shader.h \
\
sdlinput.cpp sdlinput.h \


+ 1
- 0
src/core.h Parādīt failu

@@ -39,6 +39,7 @@
#include "world.h"

// Other objects
#include "hash.h"
#include "dict.h"
#include "map.h"
#include "layer.h"


+ 58
- 0
src/hash.cpp Parādīt failu

@@ -0,0 +1,58 @@
//
// Lol Engine
//
// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
// Public License, Version 2, as published by Sam Hocevar. See
// http://sam.zoy.org/projects/COPYING.WTFPL for more details.
//

#if defined HAVE_CONFIG_H
# include "config.h"
#endif

#include "core.h"

/*
* Hash implementation class
*/

static class HashData
{
friend class Hash;

public:
HashData()
{
/* Initialise CRC32 table */
for (int i = 0; i < 256; i++)
{
uint32_t tmp = i;
for (int j = 8; j--; )
tmp = (tmp >> 1) ^ ((tmp & 1) ? 0xedb88320 : 0);
crc32_table[i] = tmp;
}
}

private:
uint32_t crc32_table[256];
}
hashdata;

static HashData * const data = &hashdata;

/*
* Public Hash class
*/

uint32_t Hash::Crc32(char const *str)
{
uint32_t ret = 0xffffffff, ch;

while ((ch = (uint8_t)*str++))
ret = data->crc32_table[(uint8_t)(ret ^ ch)] ^ (ret >> 8);

return ret ^ 0xffffffff;
}


+ 26
- 0
src/hash.h Parādīt failu

@@ -0,0 +1,26 @@
//
// Lol Engine
//
// Copyright: (c) 2010-2011 Sam Hocevar <sam@hocevar.net>
// This program is free software; you can redistribute it and/or
// modify it under the terms of the Do What The Fuck You Want To
// Public License, Version 2, as published by Sam Hocevar. See
// http://sam.zoy.org/projects/COPYING.WTFPL for more details.
//

//
// The Hash class
// --------------
//

#if !defined __DH_HASH_H__
#define __DH_HASH_H__

class Hash
{
public:
static uint32_t Crc32(char const *data);
};

#endif // __DH_HASH_H__


+ 2
- 0
win32/deushax.vcxproj Parādīt failu

@@ -25,6 +25,7 @@
<ClInclude Include="..\src\entity.h" />
<ClInclude Include="..\src\font.h" />
<ClInclude Include="..\src\forge.h" />
<ClInclude Include="..\src\hash.h" />
<ClInclude Include="..\src\input.h" />
<ClInclude Include="..\src\layer.h" />
<ClInclude Include="..\src\map.h" />
@@ -59,6 +60,7 @@
<ClCompile Include="..\src\entity.cpp" />
<ClCompile Include="..\src\font.cpp" />
<ClCompile Include="..\src\forge.cpp" />
<ClCompile Include="..\src\hash.cpp" />
<ClCompile Include="..\src\input.cpp" />
<ClCompile Include="..\src\layer.cpp" />
<ClCompile Include="..\src\map.cpp" />


+ 6
- 0
win32/deushax.vcxproj.filters Parādīt failu

@@ -39,6 +39,9 @@
<ClInclude Include="..\src\forge.h">
<Filter>lolengine</Filter>
</ClInclude>
<ClInclude Include="..\src\hash.h">
<Filter>lolengine</Filter>
</ClInclude>
<ClInclude Include="..\src\input.h">
<Filter>lolengine</Filter>
</ClInclude>
@@ -130,6 +133,9 @@
<ClCompile Include="..\src\forge.cpp">
<Filter>lolengine</Filter>
</ClCompile>
<ClCompile Include="..\src\hash.cpp">
<Filter>lolengine</Filter>
</ClCompile>
<ClCompile Include="..\src\input.cpp">
<Filter>lolengine</Filter>
</ClCompile>


+ 2
- 0
win32/editor.vcxproj Parādīt failu

@@ -25,6 +25,7 @@
<ClInclude Include="..\src\entity.h" />
<ClInclude Include="..\src\font.h" />
<ClInclude Include="..\src\forge.h" />
<ClInclude Include="..\src\hash.h" />
<ClInclude Include="..\src\input.h" />
<ClInclude Include="..\src\layer.h" />
<ClInclude Include="..\src\map.h" />
@@ -59,6 +60,7 @@
<ClCompile Include="..\src\entity.cpp" />
<ClCompile Include="..\src\font.cpp" />
<ClCompile Include="..\src\forge.cpp" />
<ClCompile Include="..\src\hash.cpp" />
<ClCompile Include="..\src\input.cpp" />
<ClCompile Include="..\src\layer.cpp" />
<ClCompile Include="..\src\map.cpp" />


+ 6
- 0
win32/editor.vcxproj.filters Parādīt failu

@@ -39,6 +39,9 @@
<ClInclude Include="..\src\forge.h">
<Filter>lolengine</Filter>
</ClInclude>
<ClInclude Include="..\src\hash.h">
<Filter>lolengine</Filter>
</ClInclude>
<ClInclude Include="..\src\input.h">
<Filter>lolengine</Filter>
</ClInclude>
@@ -130,6 +133,9 @@
<ClCompile Include="..\src\forge.cpp">
<Filter>lolengine</Filter>
</ClCompile>
<ClCompile Include="..\src\hash.cpp">
<Filter>lolengine</Filter>
</ClCompile>
<ClCompile Include="..\src\input.cpp">
<Filter>lolengine</Filter>
</ClCompile>


+ 2
- 0
win32/monsterz.vcxproj Parādīt failu

@@ -30,6 +30,7 @@
<ClInclude Include="..\src\entity.h" />
<ClInclude Include="..\src\font.h" />
<ClInclude Include="..\src\forge.h" />
<ClInclude Include="..\src\hash.h" />
<ClInclude Include="..\src\input.h" />
<ClInclude Include="..\src\layer.h" />
<ClInclude Include="..\src\map.h" />
@@ -68,6 +69,7 @@
<ClCompile Include="..\src\entity.cpp" />
<ClCompile Include="..\src\font.cpp" />
<ClCompile Include="..\src\forge.cpp" />
<ClCompile Include="..\src\hash.cpp" />
<ClCompile Include="..\src\input.cpp" />
<ClCompile Include="..\src\layer.cpp" />
<ClCompile Include="..\src\map.cpp" />


+ 6
- 0
win32/monsterz.vcxproj.filters Parādīt failu

@@ -39,6 +39,9 @@
<ClInclude Include="..\src\forge.h">
<Filter>lolengine</Filter>
</ClInclude>
<ClInclude Include="..\src\hash.h">
<Filter>lolengine</Filter>
</ClInclude>
<ClInclude Include="..\src\input.h">
<Filter>lolengine</Filter>
</ClInclude>
@@ -135,6 +138,9 @@
<ClCompile Include="..\src\forge.cpp">
<Filter>lolengine</Filter>
</ClCompile>
<ClCompile Include="..\src\hash.cpp">
<Filter>lolengine</Filter>
</ClCompile>
<ClCompile Include="..\src\input.cpp">
<Filter>lolengine</Filter>
</ClCompile>


Notiek ielāde…
Atcelt
Saglabāt