This commit is contained in:
@@ -41,7 +41,7 @@ typedef uptr *WpUptrArray;
|
|||||||
typedef iptr *WpIptrArray;
|
typedef iptr *WpIptrArray;
|
||||||
typedef WpStr8 *WpStr8Array;
|
typedef WpStr8 *WpStr8Array;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpArrayInitFlags {
|
||||||
WP_ARRAY_INIT_NONE = 0,
|
WP_ARRAY_INIT_NONE = 0,
|
||||||
WP_ARRAY_INIT_FILLED = 1 << 1,
|
WP_ARRAY_INIT_FILLED = 1 << 1,
|
||||||
} WpArrayInitFlags;
|
} WpArrayInitFlags;
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
typedef struct WpDblNode WpDblNode;
|
typedef struct WpDblNode WpDblNode;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpDblNodeHeader {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
u64 item_size;
|
u64 item_size;
|
||||||
WpDblNode *prev;
|
WpDblNode *prev;
|
||||||
@@ -28,7 +28,7 @@ struct WpDblNode {
|
|||||||
void *item;
|
void *item;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpDblList {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
u64 node_count;
|
u64 node_count;
|
||||||
u64 item_size;
|
u64 item_size;
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
// vim:fileencoding=utf-8:foldmethod=marker
|
||||||
|
|
||||||
|
#include "hasher.h"
|
||||||
|
#include "../../../common/assert/assert.h"
|
||||||
|
|
||||||
|
WpU128Hash wpHasherGetHash128(const WpHasher *hasher, WpU8Stream *stream, void *hasher_data) {
|
||||||
|
wpDebugAssert(hasher != NULL && stream != NULL, "hasher and stream shouldn't be NULL");
|
||||||
|
|
||||||
|
WpU128Hash output;
|
||||||
|
switch (hasher->type) {
|
||||||
|
case WP_HASH_TYPE_64: {
|
||||||
|
output.hash[0] = hasher->hasher_64(stream, hasher_data);
|
||||||
|
output.hash[1] = hasher->hasher_64(stream, hasher_data);
|
||||||
|
} break;
|
||||||
|
case WP_HASH_TYPE_128: {
|
||||||
|
output = hasher->hasher_128(stream, hasher_data);
|
||||||
|
} break;
|
||||||
|
default: {
|
||||||
|
wpRuntimeAssert(0, "Invalid hasher type");
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
|
||||||
|
u64 wpHasherGetHash64(const WpHasher *hasher, WpU8Stream *stream, void *hasher_data) {
|
||||||
|
wpDebugAssert(hasher != NULL && stream != NULL, "hasher and stream shouldn't be NULL");
|
||||||
|
|
||||||
|
u64 output;
|
||||||
|
switch (hasher->type) {
|
||||||
|
case WP_HASH_TYPE_64: {
|
||||||
|
output = hasher->hasher_64(stream, hasher_data);
|
||||||
|
} break;
|
||||||
|
case WP_HASH_TYPE_128: {
|
||||||
|
WpU128Hash hash = hasher->hasher_128(stream, hasher_data);
|
||||||
|
output = hash.hash[0] ^ hash.hash[1];
|
||||||
|
} break;
|
||||||
|
default: {
|
||||||
|
wpRuntimeAssert(0, "Invalid hasher type");
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return output;
|
||||||
|
}
|
||||||
@@ -9,11 +9,11 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpU128Hash {
|
||||||
u64 hash[2];
|
u64 hash[2];
|
||||||
} WpU128Hash;
|
} WpU128Hash;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpHasherType {
|
||||||
WP_HASH_TYPE_64,
|
WP_HASH_TYPE_64,
|
||||||
WP_HASH_TYPE_128,
|
WP_HASH_TYPE_128,
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ typedef enum {
|
|||||||
typedef u64 (*WpHasher64) (WpU8Stream *stream, void *hasher_data);
|
typedef u64 (*WpHasher64) (WpU8Stream *stream, void *hasher_data);
|
||||||
typedef WpU128Hash (*WpHasher128)(WpU8Stream *stream, void *hasher_data);
|
typedef WpU128Hash (*WpHasher128)(WpU8Stream *stream, void *hasher_data);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpHasher {
|
||||||
WpHasherType type;
|
WpHasherType type;
|
||||||
union {
|
union {
|
||||||
WpHasher64 hasher_64;
|
WpHasher64 hasher_64;
|
||||||
@@ -39,6 +39,9 @@ typedef struct {
|
|||||||
#define wpHasher128(HASHER) ((WpHasher){ .type = WP_HASH_TYPE_128, .hasher_128 = (HASHER) })
|
#define wpHasher128(HASHER) ((WpHasher){ .type = WP_HASH_TYPE_128, .hasher_128 = (HASHER) })
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
WpU128Hash wpHasherGetHash128(const WpHasher *hasher, WpU8Stream *stream, void *hasher_data);
|
||||||
|
u64 wpHasherGetHash64 (const WpHasher *hasher, WpU8Stream *stream, void *hasher_data);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#define WP_MUR3_HASHER_MAGIC wpU64Const(0x57504d4841534833)
|
#define WP_MUR3_HASHER_MAGIC wpU64Const(0x57504d4841534833)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpMur3HasherData {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
u32 seed;
|
u32 seed;
|
||||||
} WpMur3HasherData;
|
} WpMur3HasherData;
|
||||||
|
|||||||
@@ -19,12 +19,12 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#define WP_SIP_HASHER_MAGIC wpU64Const(0x5750534950485348)
|
#define WP_SIP_HASHER_MAGIC wpU64Const(0x5750534950485348)
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpSipHasherKey {
|
||||||
u64 lo;
|
u64 lo;
|
||||||
u64 hi;
|
u64 hi;
|
||||||
} WpSipHasherKey;
|
} WpSipHasherKey;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpSipHasherData {
|
||||||
WpSipHasherKey key;
|
WpSipHasherKey key;
|
||||||
u64 magic;
|
u64 magic;
|
||||||
u64 compression;
|
u64 compression;
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpMemOp {
|
||||||
WP_MEM_OP_ALLOC,
|
WP_MEM_OP_ALLOC,
|
||||||
WP_MEM_OP_ALLOC_ALIGNED,
|
WP_MEM_OP_ALLOC_ALIGNED,
|
||||||
WP_MEM_OP_REALLOC,
|
WP_MEM_OP_REALLOC,
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpQueue {
|
||||||
WpArray items;
|
WpArray items;
|
||||||
u64 front;
|
u64 front;
|
||||||
u64 back;
|
u64 back;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpStream {
|
||||||
void *data;
|
void *data;
|
||||||
u64 count;
|
u64 count;
|
||||||
u64 position;
|
u64 position;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#include "wapp_base.h"
|
#include "wapp_base.h"
|
||||||
#include "array/array.c"
|
#include "array/array.c"
|
||||||
#include "dbl_list/dbl_list.c"
|
#include "dbl_list/dbl_list.c"
|
||||||
|
#include "hash/hasher/hasher.c"
|
||||||
#include "hash/hasher/murmur3.c"
|
#include "hash/hasher/murmur3.c"
|
||||||
#include "hash/hasher/siphash.c"
|
#include "hash/hasher/siphash.c"
|
||||||
#include "queue/queue.c"
|
#include "queue/queue.c"
|
||||||
|
|||||||
+1
-1
@@ -15,7 +15,7 @@ wp_intern WpStr8RO L_BRACKET = wpStr8LitRo("[");
|
|||||||
wp_intern WpStr8RO R_BRACKET_SPACE = wpStr8LitRo("] ");
|
wp_intern WpStr8RO R_BRACKET_SPACE = wpStr8LitRo("] ");
|
||||||
wp_intern WpStr8RO R_BRACKET_NEWLINE = wpStr8LitRo("]\n");
|
wp_intern WpStr8RO R_BRACKET_NEWLINE = wpStr8LitRo("]\n");
|
||||||
|
|
||||||
typedef struct {
|
typedef struct LogConfig {
|
||||||
WpFile *outlog;
|
WpFile *outlog;
|
||||||
WpFile *errlog;
|
WpFile *errlog;
|
||||||
WpLogLevel level;
|
WpLogLevel level;
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpLogLevel {
|
||||||
WP_LOG_LEVEL_FATAL,
|
WP_LOG_LEVEL_FATAL,
|
||||||
WP_LOG_LEVEL_CRITICAL,
|
WP_LOG_LEVEL_CRITICAL,
|
||||||
WP_LOG_LEVEL_ERROR,
|
WP_LOG_LEVEL_ERROR,
|
||||||
@@ -21,7 +21,7 @@ typedef enum {
|
|||||||
COUNT_LOG_LEVEL,
|
COUNT_LOG_LEVEL,
|
||||||
} WpLogLevel;
|
} WpLogLevel;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct WpLogger {
|
||||||
WpStr8 name;
|
WpStr8 name;
|
||||||
} WpLogger;
|
} WpLogger;
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#define ARENA_MINIMUM_CAPACITY KiB(16) // Allocate minimum of 4 pages
|
#define ARENA_MINIMUM_CAPACITY KiB(16) // Allocate minimum of 4 pages
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpCpathJoinResult {
|
||||||
ARENA_STORAGE_TYPE_ALLOCATED,
|
ARENA_STORAGE_TYPE_ALLOCATED,
|
||||||
ARENA_STORAGE_TYPE_BUFFER,
|
ARENA_STORAGE_TYPE_BUFFER,
|
||||||
} ArenaStorageType;
|
} ArenaStorageType;
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ BEGIN_C_LINKAGE
|
|||||||
#define wpCpathDirname(ALLOCATOR, PATH) dirUp(ALLOCATOR, PATH, 1)
|
#define wpCpathDirname(ALLOCATOR, PATH) dirUp(ALLOCATOR, PATH, 1)
|
||||||
#define wpCpathDirUp(ALLOCATOR, PATH, COUNT) dirUp(ALLOCATOR, PATH, COUNT)
|
#define wpCpathDirUp(ALLOCATOR, PATH, COUNT) dirUp(ALLOCATOR, PATH, COUNT)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpCpathJoinResult {
|
||||||
WP_CPATH_JOIN_RESULT_SUCCESS = 0,
|
WP_CPATH_JOIN_RESULT_SUCCESS = 0,
|
||||||
WP_CPATH_JOIN_RESULT_INVALID_ARGS,
|
WP_CPATH_JOIN_RESULT_INVALID_ARGS,
|
||||||
WP_CPATH_JOIN_RESULT_EMPTY_PARTS,
|
WP_CPATH_JOIN_RESULT_EMPTY_PARTS,
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
typedef struct WpFile WpFile;
|
typedef struct WpFile WpFile;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpFileAccessMode {
|
||||||
WP_ACCESS_READ, // Equivalent to r
|
WP_ACCESS_READ, // Equivalent to r
|
||||||
WP_ACCESS_WRITE, // Equivalent to w
|
WP_ACCESS_WRITE, // Equivalent to w
|
||||||
WP_ACCESS_APPEND, // Equivalent to a
|
WP_ACCESS_APPEND, // Equivalent to a
|
||||||
@@ -26,7 +26,7 @@ typedef enum {
|
|||||||
COUNT_FILE_ACCESS_MODE,
|
COUNT_FILE_ACCESS_MODE,
|
||||||
} WpFileAccessMode;
|
} WpFileAccessMode;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpFileSeekOrigin {
|
||||||
WP_SEEK_START,
|
WP_SEEK_START,
|
||||||
WP_SEEK_CURRENT,
|
WP_SEEK_CURRENT,
|
||||||
WP_SEEK_END,
|
WP_SEEK_END,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpMemAccess {
|
||||||
WP_MEM_ACCESS_NONE,
|
WP_MEM_ACCESS_NONE,
|
||||||
WP_MEM_ACCESS_READ_ONLY,
|
WP_MEM_ACCESS_READ_ONLY,
|
||||||
WP_MEM_ACCESS_EXEC_ONLY,
|
WP_MEM_ACCESS_EXEC_ONLY,
|
||||||
@@ -18,7 +18,7 @@ typedef enum {
|
|||||||
WP_MEM_ACCESS_READ_WRITE_EXEC,
|
WP_MEM_ACCESS_READ_WRITE_EXEC,
|
||||||
} WpMemAccess;
|
} WpMemAccess;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpMemInitType {
|
||||||
WP_MEM_INIT_UNINITIALISED,
|
WP_MEM_INIT_UNINITIALISED,
|
||||||
WP_MEM_INIT_INITIALISED,
|
WP_MEM_INIT_INITIALISED,
|
||||||
} WpMemInitType;
|
} WpMemInitType;
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpMemAllocFlags {
|
||||||
#if defined(WP_PLATFORM_LINUX) || defined(WP_PLATFORM_GNU)
|
#if defined(WP_PLATFORM_LINUX) || defined(WP_PLATFORM_GNU)
|
||||||
WP_MEM_ALLOC_RESERVE = 0,
|
WP_MEM_ALLOC_RESERVE = 0,
|
||||||
WP_MEM_ALLOC_COMMIT = MAP_POPULATE,
|
WP_MEM_ALLOC_COMMIT = MAP_POPULATE,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ BEGIN_C_LINKAGE
|
|||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <memoryapi.h>
|
#include <memoryapi.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpMemAllocFlags {
|
||||||
WP_MEM_ALLOC_RESERVE = MEM_RESERVE,
|
WP_MEM_ALLOC_RESERVE = MEM_RESERVE,
|
||||||
WP_MEM_ALLOC_COMMIT = MEM_COMMIT,
|
WP_MEM_ALLOC_COMMIT = MEM_COMMIT,
|
||||||
} WpMemAllocFlags;
|
} WpMemAllocFlags;
|
||||||
|
|||||||
@@ -11,13 +11,13 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpCmdOutHandling {
|
||||||
WP_SHELL_OUTPUT_DISCARD,
|
WP_SHELL_OUTPUT_DISCARD,
|
||||||
WP_SHELL_OUTPUT_PRINT,
|
WP_SHELL_OUTPUT_PRINT,
|
||||||
WP_SHELL_OUTPUT_CAPTURE,
|
WP_SHELL_OUTPUT_CAPTURE,
|
||||||
} WpCmdOutHandling;
|
} WpCmdOutHandling;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpCmdError {
|
||||||
WP_SHELL_ERR_NO_ERROR,
|
WP_SHELL_ERR_NO_ERROR,
|
||||||
WP_SHELL_ERR_INVALID_ARGS,
|
WP_SHELL_ERR_INVALID_ARGS,
|
||||||
WP_SHELL_ERR_ALLOCATION_FAIL,
|
WP_SHELL_ERR_ALLOCATION_FAIL,
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum WpTerminalColour {
|
||||||
WP_TERM_COLOUR_FG_BLACK,
|
WP_TERM_COLOUR_FG_BLACK,
|
||||||
WP_TERM_COLOUR_FG_RED,
|
WP_TERM_COLOUR_FG_RED,
|
||||||
WP_TERM_COLOUR_FG_GREEN,
|
WP_TERM_COLOUR_FG_GREEN,
|
||||||
|
|||||||
Reference in New Issue
Block a user