Compare commits
16 Commits
main
..
1a0a5b5192
| Author | SHA1 | Date | |
|---|---|---|---|
| 1a0a5b5192 | |||
| c0d83b5c3f | |||
| c4134c4017 | |||
| b802aba954 | |||
| f4bffec947 | |||
| 99d6404ec4 | |||
| e2b57d4aba | |||
| acbfc9088c | |||
| cd797683d2 | |||
| 28f95b1d41 | |||
| cdca775681 | |||
| e4c1068281 | |||
| f679017fa7 | |||
| 65d99db738 | |||
| 61c1ec99e5 | |||
| dc348f3e71 |
@@ -103,37 +103,37 @@ typedef WpDblNode WpStr8Node;
|
|||||||
(_dblListAlloc(ALLOCATOR, sizeof(TYPE)))
|
(_dblListAlloc(ALLOCATOR, sizeof(TYPE)))
|
||||||
#define wpDblListGet(TYPE, LIST_PTR, ITEM_INDEX) \
|
#define wpDblListGet(TYPE, LIST_PTR, ITEM_INDEX) \
|
||||||
((TYPE *)(_dblListGet(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item))
|
((TYPE *)(_dblListGet(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item))
|
||||||
#define wpDblListGetNode(TYPE, LIST_PTR, ITEM_INDEX) \
|
#define wpDblListGet_node(TYPE, LIST_PTR, ITEM_INDEX) \
|
||||||
(_dblListGet(LIST_PTR, ITEM_INDEX, sizeof(TYPE)))
|
(_dblListGet(LIST_PTR, ITEM_INDEX, sizeof(TYPE)))
|
||||||
#define wpDblListGetNodeItem(TYPE, NODE_PTR) \
|
#define wpDblListGet_node_item(TYPE, NODE_PTR) \
|
||||||
((TYPE *)( \
|
((TYPE *)( \
|
||||||
(NODE_PTR == NULL) ? \
|
(NODE_PTR == NULL) ? \
|
||||||
NULL : \
|
NULL : \
|
||||||
(NODE_PTR)->item \
|
(NODE_PTR)->item \
|
||||||
))
|
))
|
||||||
#define wpDblListPushFront(TYPE, LIST_PTR, ITEM_PTR) \
|
#define wpDblListPush_front(TYPE, LIST_PTR, ITEM_PTR) \
|
||||||
(_dblListPushFront(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), sizeof(TYPE)))
|
(_dblListPushFront(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), sizeof(TYPE)))
|
||||||
#define wpDblListPushBack(TYPE, LIST_PTR, ITEM_PTR) \
|
#define wpDblListPush_back(TYPE, LIST_PTR, ITEM_PTR) \
|
||||||
(_dblListPushBack(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), sizeof(TYPE)))
|
(_dblListPushBack(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), sizeof(TYPE)))
|
||||||
#define wpDblListInsert(TYPE, LIST_PTR, ITEM_PTR, ITEM_INDEX) \
|
#define wpDblListInsert(TYPE, LIST_PTR, ITEM_PTR, ITEM_INDEX) \
|
||||||
(_dblListInsert(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), \
|
(_dblListInsert(LIST_PTR, _dblListNode(TYPE, ITEM_PTR), \
|
||||||
ITEM_INDEX, sizeof(TYPE)))
|
ITEM_INDEX, sizeof(TYPE)))
|
||||||
#define wpDblListPushFrontAlloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \
|
#define wpDblListPush_front_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \
|
||||||
(_dblListPushFront(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
|
(_dblListPushFront(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
|
||||||
sizeof(TYPE)))
|
sizeof(TYPE)))
|
||||||
#define wpDblListPushBackAlloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \
|
#define wpDblListPush_back_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR) \
|
||||||
(_dblListPushBack(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
|
(_dblListPushBack(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
|
||||||
sizeof(TYPE)))
|
sizeof(TYPE)))
|
||||||
#define wpDblListInsertAlloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR, ITEM_INDEX) \
|
#define wpDblListInsert_alloc(TYPE, ALLOCATOR, LIST_PTR, ITEM_PTR, ITEM_INDEX) \
|
||||||
(_dblListInsert(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
|
(_dblListInsert(LIST_PTR, _dblListNodeAlloc(ALLOCATOR, ITEM_PTR, sizeof(TYPE)), \
|
||||||
ITEM_INDEX, sizeof(TYPE)))
|
ITEM_INDEX, sizeof(TYPE)))
|
||||||
#define wpDblListPopFront(TYPE, LIST_PTR) \
|
#define wpDblListPop_front(TYPE, LIST_PTR) \
|
||||||
((TYPE *)( \
|
((TYPE *)( \
|
||||||
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
||||||
NULL : \
|
NULL : \
|
||||||
_dblListPopFront(LIST_PTR, sizeof(TYPE))->item \
|
_dblListPopFront(LIST_PTR, sizeof(TYPE))->item \
|
||||||
))
|
))
|
||||||
#define wpDblListPopBack(TYPE, LIST_PTR) \
|
#define wpDblListPop_back(TYPE, LIST_PTR) \
|
||||||
((TYPE *)( \
|
((TYPE *)( \
|
||||||
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
||||||
NULL : \
|
NULL : \
|
||||||
@@ -145,19 +145,19 @@ typedef WpDblNode WpStr8Node;
|
|||||||
NULL : \
|
NULL : \
|
||||||
_dblListRemove(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item \
|
_dblListRemove(LIST_PTR, ITEM_INDEX, sizeof(TYPE))->item \
|
||||||
))
|
))
|
||||||
#define wpDblListPopFrontNode(TYPE, LIST_PTR) \
|
#define wpDblListPop_front_node(TYPE, LIST_PTR) \
|
||||||
( \
|
( \
|
||||||
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
||||||
NULL : \
|
NULL : \
|
||||||
_dblListPopFront(LIST_PTR, sizeof(TYPE)) \
|
_dblListPopFront(LIST_PTR, sizeof(TYPE)) \
|
||||||
)
|
)
|
||||||
#define wpDblListPopBackNode(TYPE, LIST_PTR) \
|
#define wpDblListPop_back_node(TYPE, LIST_PTR) \
|
||||||
( \
|
( \
|
||||||
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0) ? \
|
||||||
NULL : \
|
NULL : \
|
||||||
_dblListPopBack(LIST_PTR, sizeof(TYPE)) \
|
_dblListPopBack(LIST_PTR, sizeof(TYPE)) \
|
||||||
)
|
)
|
||||||
#define wpDblListRemoveNode(TYPE, LIST_PTR, ITEM_INDEX) \
|
#define wpDblListRemove_node(TYPE, LIST_PTR, ITEM_INDEX) \
|
||||||
( \
|
( \
|
||||||
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0 || ITEM_INDEX >= (LIST_PTR)->node_count) ? \
|
(LIST_PTR == NULL || (LIST_PTR)->node_count == 0 || ITEM_INDEX >= (LIST_PTR)->node_count) ? \
|
||||||
NULL : \
|
NULL : \
|
||||||
|
|||||||
@@ -338,7 +338,7 @@ WpStr8List *wpStr8SplitWithMax(const WpAllocator *allocator, WpStr8RO *str, WpSt
|
|||||||
if (delimiter->size > str->size) {
|
if (delimiter->size > str->size) {
|
||||||
WpStr8 *full = wpStr8AllocStr8(allocator, str);
|
WpStr8 *full = wpStr8AllocStr8(allocator, str);
|
||||||
if (full) {
|
if (full) {
|
||||||
wpDblListPushBackAlloc(WpStr8, allocator, output, full);
|
wpDblListPush_back_alloc(WpStr8, allocator, output, full);
|
||||||
}
|
}
|
||||||
|
|
||||||
goto RETURN_STR8_SPLIT;
|
goto RETURN_STR8_SPLIT;
|
||||||
@@ -357,7 +357,7 @@ WpStr8List *wpStr8SplitWithMax(const WpAllocator *allocator, WpStr8RO *str, WpSt
|
|||||||
|
|
||||||
before_str = wpStr8AllocSubstr(allocator, str, start, start + end);
|
before_str = wpStr8AllocSubstr(allocator, str, start, start + end);
|
||||||
if (before_str) {
|
if (before_str) {
|
||||||
wpDblListPushBackAlloc(WpStr8, allocator, output, before_str);
|
wpDblListPush_back_alloc(WpStr8, allocator, output, before_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemAllocatorFree(allocator, (void **)&rest, sizeof(WpStr8));
|
wpMemAllocatorFree(allocator, (void **)&rest, sizeof(WpStr8));
|
||||||
@@ -370,7 +370,7 @@ WpStr8List *wpStr8SplitWithMax(const WpAllocator *allocator, WpStr8RO *str, WpSt
|
|||||||
// Ensure the last part of the string after the delimiter is added to the list
|
// Ensure the last part of the string after the delimiter is added to the list
|
||||||
rest = wpStr8AllocSubstr(allocator, str, start, str->size);
|
rest = wpStr8AllocSubstr(allocator, str, start, str->size);
|
||||||
if (rest) {
|
if (rest) {
|
||||||
wpDblListPushBackAlloc(WpStr8, allocator, output, rest);
|
wpDblListPush_back_alloc(WpStr8, allocator, output, rest);
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_STR8_SPLIT:
|
RETURN_STR8_SPLIT:
|
||||||
@@ -385,7 +385,7 @@ WpStr8List *wpStr8RsplitWithMax(const WpAllocator *allocator, WpStr8RO *str, WpS
|
|||||||
if (delimiter->size > str->size) {
|
if (delimiter->size > str->size) {
|
||||||
WpStr8 *full = wpStr8AllocStr8(allocator, str);
|
WpStr8 *full = wpStr8AllocStr8(allocator, str);
|
||||||
if (full) {
|
if (full) {
|
||||||
wpDblListPushBackAlloc(WpStr8, allocator, output, full);
|
wpDblListPush_back_alloc(WpStr8, allocator, output, full);
|
||||||
}
|
}
|
||||||
|
|
||||||
goto RETURN_STR8_SPLIT;
|
goto RETURN_STR8_SPLIT;
|
||||||
@@ -403,7 +403,7 @@ WpStr8List *wpStr8RsplitWithMax(const WpAllocator *allocator, WpStr8RO *str, WpS
|
|||||||
|
|
||||||
after_str = wpStr8AllocSubstr(allocator, rest, end + delimiter->size, str->size);
|
after_str = wpStr8AllocSubstr(allocator, rest, end + delimiter->size, str->size);
|
||||||
if (after_str) {
|
if (after_str) {
|
||||||
wpDblListPushFrontAlloc(WpStr8, allocator, output, after_str);
|
wpDblListPush_front_alloc(WpStr8, allocator, output, after_str);
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemAllocatorFree(allocator, (void **)&rest, sizeof(WpStr8));
|
wpMemAllocatorFree(allocator, (void **)&rest, sizeof(WpStr8));
|
||||||
@@ -414,7 +414,7 @@ WpStr8List *wpStr8RsplitWithMax(const WpAllocator *allocator, WpStr8RO *str, WpS
|
|||||||
|
|
||||||
rest = wpStr8AllocSubstr(allocator, str, 0, rest->size);
|
rest = wpStr8AllocSubstr(allocator, str, 0, rest->size);
|
||||||
if (rest) {
|
if (rest) {
|
||||||
wpDblListPushFrontAlloc(WpStr8, allocator, output, rest);
|
wpDblListPush_front_alloc(WpStr8, allocator, output, rest);
|
||||||
}
|
}
|
||||||
|
|
||||||
RETURN_STR8_SPLIT:
|
RETURN_STR8_SPLIT:
|
||||||
|
|||||||
+15
-15
@@ -16,11 +16,11 @@ 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 {
|
||||||
WpFile *outlog;
|
WFile *outlog;
|
||||||
WpFile *errlog;
|
WFile *errlog;
|
||||||
WpLogLevel level;
|
WpLogLevel level;
|
||||||
|
|
||||||
wpMiscUtilsReservePadding(2 * sizeof(WpFile *) + sizeof(WpLogLevel));
|
wpMiscUtilsReservePadding(2 * sizeof(WFile *) + sizeof(WpLogLevel));
|
||||||
} LogConfig;
|
} LogConfig;
|
||||||
|
|
||||||
wp_intern LogConfig LOG_CONFIG = {
|
wp_intern LogConfig LOG_CONFIG = {
|
||||||
@@ -36,13 +36,13 @@ wp_intern WpStr8RO LOG_LEVEL_STRINGS[COUNT_LOG_LEVEL] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
wp_intern void _get_current_time_string(WpStr8 *dst);
|
wp_intern void _get_current_time_string(WpStr8 *dst);
|
||||||
wp_intern void _write_log_line(WpFile *fp, const WpLogger *logger, WpStr8 msg, WpLogLevel level);
|
wp_intern void _write_log_line(WFile *fp, const WpLogger *logger, WpStr8 msg, WpLogLevel level);
|
||||||
|
|
||||||
void wpLogSetLevel(WpLogLevel level) {
|
void wpLogSetLevel(WpLogLevel level) {
|
||||||
LOG_CONFIG.level = level;
|
LOG_CONFIG.level = level;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpLogConfigure(WpFile *outlog, WpFile *errlog, WpLogLevel level) {
|
void wpLogConfigure(WFile *outlog, WFile *errlog, WpLogLevel level) {
|
||||||
LOG_CONFIG.outlog = outlog;
|
LOG_CONFIG.outlog = outlog;
|
||||||
LOG_CONFIG.errlog = errlog;
|
LOG_CONFIG.errlog = errlog;
|
||||||
LOG_CONFIG.level = level;
|
LOG_CONFIG.level = level;
|
||||||
@@ -56,7 +56,7 @@ void wpLogDebug(const WpLogger *logger, WpStr8 msg) {
|
|||||||
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
||||||
if (LOG_CONFIG.level < WP_LOG_LEVEL_DEBUG) { return; }
|
if (LOG_CONFIG.level < WP_LOG_LEVEL_DEBUG) { return; }
|
||||||
|
|
||||||
WpFile *fp = LOG_CONFIG.outlog != NULL ? LOG_CONFIG.outlog : wpFileStdout();
|
WFile *fp = LOG_CONFIG.outlog != NULL ? LOG_CONFIG.outlog : wapp_file_stdout();
|
||||||
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_DEBUG);
|
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_DEBUG);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ void wpLogInfo(const WpLogger *logger, WpStr8 msg) {
|
|||||||
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
||||||
if (LOG_CONFIG.level < WP_LOG_LEVEL_INFO) { return; }
|
if (LOG_CONFIG.level < WP_LOG_LEVEL_INFO) { return; }
|
||||||
|
|
||||||
WpFile *fp = LOG_CONFIG.outlog != NULL ? LOG_CONFIG.outlog : wpFileStdout();
|
WFile *fp = LOG_CONFIG.outlog != NULL ? LOG_CONFIG.outlog : wapp_file_stdout();
|
||||||
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_INFO);
|
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,7 +72,7 @@ void wpLogWarning(const WpLogger *logger, WpStr8 msg) {
|
|||||||
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
||||||
if (LOG_CONFIG.level < WP_LOG_LEVEL_WARNING) { return; }
|
if (LOG_CONFIG.level < WP_LOG_LEVEL_WARNING) { return; }
|
||||||
|
|
||||||
WpFile *fp = LOG_CONFIG.outlog != NULL ? LOG_CONFIG.outlog : wpFileStdout();
|
WFile *fp = LOG_CONFIG.outlog != NULL ? LOG_CONFIG.outlog : wapp_file_stdout();
|
||||||
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_WARNING);
|
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_WARNING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ void wpLogError(const WpLogger *logger, WpStr8 msg) {
|
|||||||
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
||||||
if (LOG_CONFIG.level < WP_LOG_LEVEL_ERROR) { return; }
|
if (LOG_CONFIG.level < WP_LOG_LEVEL_ERROR) { return; }
|
||||||
|
|
||||||
WpFile *fp = LOG_CONFIG.errlog != NULL ? LOG_CONFIG.errlog : wpFileStderr();
|
WFile *fp = LOG_CONFIG.errlog != NULL ? LOG_CONFIG.errlog : wapp_file_stderr();
|
||||||
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_ERROR);
|
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_ERROR);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -88,7 +88,7 @@ void wpLogCritical(const WpLogger *logger, WpStr8 msg) {
|
|||||||
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
||||||
if (LOG_CONFIG.level < WP_LOG_LEVEL_CRITICAL) { return; }
|
if (LOG_CONFIG.level < WP_LOG_LEVEL_CRITICAL) { return; }
|
||||||
|
|
||||||
WpFile *fp = LOG_CONFIG.errlog != NULL ? LOG_CONFIG.errlog : wpFileStderr();
|
WFile *fp = LOG_CONFIG.errlog != NULL ? LOG_CONFIG.errlog : wapp_file_stderr();
|
||||||
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_CRITICAL);
|
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_CRITICAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +96,7 @@ void wpLogFatal(const WpLogger *logger, WpStr8 msg) {
|
|||||||
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
wpDebugAssert(logger != NULL, "`logger` should not be NULL");
|
||||||
if (LOG_CONFIG.level < WP_LOG_LEVEL_FATAL) { return; }
|
if (LOG_CONFIG.level < WP_LOG_LEVEL_FATAL) { return; }
|
||||||
|
|
||||||
WpFile *fp = LOG_CONFIG.errlog != NULL ? LOG_CONFIG.errlog : wpFileStderr();
|
WFile *fp = LOG_CONFIG.errlog != NULL ? LOG_CONFIG.errlog : wapp_file_stderr();
|
||||||
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_FATAL);
|
_write_log_line(fp, logger, msg, WP_LOG_LEVEL_FATAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ wp_intern void _get_current_time_string(WpStr8 *dst) {
|
|||||||
wpStr8CopyCstrCapped(dst, buf);
|
wpStr8CopyCstrCapped(dst, buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_intern void _write_log_line(WpFile *fp, const WpLogger *logger, WpStr8 msg, WpLogLevel level) {
|
wp_intern void _write_log_line(WFile *fp, const WpLogger *logger, WpStr8 msg, WpLogLevel level) {
|
||||||
WpStr8 padding = wpStr8Buf(MIN_LOG_MSG_LENGTH);
|
WpStr8 padding = wpStr8Buf(MIN_LOG_MSG_LENGTH);
|
||||||
u32 padding_size = msg.size < MIN_LOG_MSG_LENGTH ? MIN_LOG_MSG_LENGTH - msg.size + 1 : 0;
|
u32 padding_size = msg.size < MIN_LOG_MSG_LENGTH ? MIN_LOG_MSG_LENGTH - msg.size + 1 : 0;
|
||||||
wpStr8Format(&padding, "%-*s", padding_size, " ");
|
wpStr8Format(&padding, "%-*s", padding_size, " ");
|
||||||
@@ -118,7 +118,7 @@ wp_intern void _write_log_line(WpFile *fp, const WpLogger *logger, WpStr8 msg, W
|
|||||||
WpStr8 time_str = wpStr8Buf(TIME_BUF_CAPACITY);
|
WpStr8 time_str = wpStr8Buf(TIME_BUF_CAPACITY);
|
||||||
_get_current_time_string(&time_str);
|
_get_current_time_string(&time_str);
|
||||||
|
|
||||||
WpStr8RO **strings = wpArray(
|
WpStr8RO **strings = wapp_array(
|
||||||
WpStr8RO *,
|
WpStr8RO *,
|
||||||
&time_str,
|
&time_str,
|
||||||
&L_BRACKET,
|
&L_BRACKET,
|
||||||
@@ -131,7 +131,7 @@ wp_intern void _write_log_line(WpFile *fp, const WpLogger *logger, WpStr8 msg, W
|
|||||||
&R_BRACKET_NEWLINE
|
&R_BRACKET_NEWLINE
|
||||||
);
|
);
|
||||||
|
|
||||||
for (u64 i = 0; i < wpArrayCount(strings); ++i) {
|
for (u64 i = 0; i < wapp_array_count(strings); ++i) {
|
||||||
wpFileWriteStr8(strings[i], fp);
|
wapp_file_write_str8(strings[i], fp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ typedef struct {
|
|||||||
} WpLogger;
|
} WpLogger;
|
||||||
|
|
||||||
void wpLogSetLevel(WpLogLevel level);
|
void wpLogSetLevel(WpLogLevel level);
|
||||||
void wpLogConfigure(WpFile *outlog, WpFile *errlog, WpLogLevel level);
|
void wpLogConfigure(WFile *outlog, WFile *errlog, WpLogLevel level);
|
||||||
WpLogger wpLogMakeLogger(WpStr8 name);
|
WpLogger wpLogMakeLogger(WpStr8 name);
|
||||||
void wpLogDebug(const WpLogger *logger, WpStr8 msg);
|
void wpLogDebug(const WpLogger *logger, WpStr8 msg);
|
||||||
void wpLogInfo(const WpLogger *logger, WpStr8 msg);
|
void wpLogInfo(const WpLogger *logger, WpStr8 msg);
|
||||||
|
|||||||
-597
@@ -1,597 +0,0 @@
|
|||||||
// vim:fileencoding=utf-8:foldmethod=marker
|
|
||||||
//
|
|
||||||
// oldnames.h — backward-compatible #define mappings for renames in the
|
|
||||||
// wizapp-stdlib naming-conventions branch.
|
|
||||||
//
|
|
||||||
// Every public API symbol that was renamed is mapped from its old name to
|
|
||||||
// its new name so that existing code continues to compile without changes.
|
|
||||||
//
|
|
||||||
// Rename patterns applied across all modules:
|
|
||||||
// wapp_xxx() → wpXxx()
|
|
||||||
// WAPP_XXX → WP_XXX
|
|
||||||
// GenericXxx → WpXxx
|
|
||||||
// SHELL_XXX → WP_SHELL_XXX
|
|
||||||
// _xxx_yyy() → _xxxYyy()
|
|
||||||
//
|
|
||||||
// Sections: Constants → Types → Functions
|
|
||||||
|
|
||||||
#ifndef OLDNAMES_H
|
|
||||||
#define OLDNAMES_H
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// ===== Constants =====
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
// --- Aliases ---
|
|
||||||
|
|
||||||
#define WAPP_PLATFORM_CPP WP_PLATFORM_CPP
|
|
||||||
#define WAPP_PLATFORM_C WP_PLATFORM_C
|
|
||||||
|
|
||||||
// --- Arena ---
|
|
||||||
|
|
||||||
#define WAPP_MEM_ALLOC_RESERVE WP_MEM_ALLOC_RESERVE
|
|
||||||
#define WAPP_MEM_ALLOC_COMMIT WP_MEM_ALLOC_COMMIT
|
|
||||||
|
|
||||||
// --- Array ---
|
|
||||||
|
|
||||||
#define WAPP_ARRAY_MAGIC WP_ARRAY_MAGIC
|
|
||||||
#define ARRAY_INIT_NONE WP_ARRAY_INIT_NONE
|
|
||||||
#define ARRAY_INIT_FILLED WP_ARRAY_INIT_FILLED
|
|
||||||
|
|
||||||
// --- Assert ---
|
|
||||||
|
|
||||||
#define WAPP_NO_RUNTIME_ASSERT WP_NO_RUNTIME_ASSERT
|
|
||||||
#define WAPP_DEBUG_ASSERT WP_DEBUG_ASSERT
|
|
||||||
|
|
||||||
// --- CPath ---
|
|
||||||
|
|
||||||
#define WAPP_PATH_SEP WP_PATH_SEP
|
|
||||||
#define WAPP_PATH_MAX WP_PATH_MAX
|
|
||||||
|
|
||||||
#define CPATH_JOIN_SUCCESS WP_CPATH_JOIN_RESULT_SUCCESS
|
|
||||||
#define CPATH_JOIN_INVALID_ARGS WP_CPATH_JOIN_RESULT_INVALID_ARGS
|
|
||||||
#define CPATH_JOIN_EMPTY_PARTS WP_CPATH_JOIN_RESULT_EMPTY_PARTS
|
|
||||||
#define CPATH_JOIN_INSUFFICIENT_DST_CAPACITY WP_CPATH_JOIN_RESULT_INSUFFICIENT_DST_CAPACITY
|
|
||||||
|
|
||||||
// --- DblList ---
|
|
||||||
|
|
||||||
#define WAPP_DBL_LIST_MAGIC WP_DBL_LIST_MAGIC
|
|
||||||
#define WAPP_DBL_NODE_MAGIC WP_DBL_NODE_MAGIC
|
|
||||||
|
|
||||||
// --- File ---
|
|
||||||
|
|
||||||
#define WAPP_ACCESS_READ WP_ACCESS_READ
|
|
||||||
#define WAPP_ACCESS_WRITE WP_ACCESS_WRITE
|
|
||||||
#define WAPP_ACCESS_APPEND WP_ACCESS_APPEND
|
|
||||||
#define WAPP_ACCESS_READ_EX WP_ACCESS_READ_EX
|
|
||||||
#define WAPP_ACCESS_WRITE_EX WP_ACCESS_WRITE_EX
|
|
||||||
#define WAPP_ACCESS_APPEND_EX WP_ACCESS_APPEND_EX
|
|
||||||
#define WAPP_ACCESS_WRITE_FAIL_ON_EXIST WP_ACCESS_WRITE_FAIL_ON_EXIST
|
|
||||||
#define WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX WP_ACCESS_WRITE_FAIL_ON_EXIST_EX
|
|
||||||
#define WAPP_SEEK_START WP_SEEK_START
|
|
||||||
#define WAPP_SEEK_CURRENT WP_SEEK_CURRENT
|
|
||||||
#define WAPP_SEEK_END WP_SEEK_END
|
|
||||||
#define END_OF_LINE WP_END_OF_LINE
|
|
||||||
|
|
||||||
// --- Log ---
|
|
||||||
|
|
||||||
#define WAPP_LOG_FATAL WP_LOG_LEVEL_FATAL
|
|
||||||
#define WAPP_LOG_CRITICAL WP_LOG_LEVEL_CRITICAL
|
|
||||||
#define WAPP_LOG_ERROR WP_LOG_LEVEL_ERROR
|
|
||||||
#define WAPP_LOG_WARNING WP_LOG_LEVEL_WARNING
|
|
||||||
#define WAPP_LOG_INFO WP_LOG_LEVEL_INFO
|
|
||||||
#define WAPP_LOG_DEBUG WP_LOG_LEVEL_DEBUG
|
|
||||||
|
|
||||||
// --- Mem Os ---
|
|
||||||
|
|
||||||
#define WAPP_MEM_ACCESS_NONE WP_MEM_ACCESS_NONE
|
|
||||||
#define WAPP_MEM_ACCESS_READ_ONLY WP_MEM_ACCESS_READ_ONLY
|
|
||||||
#define WAPP_MEM_ACCESS_EXEC_ONLY WP_MEM_ACCESS_EXEC_ONLY
|
|
||||||
#define WAPP_MEM_ACCESS_READ_WRITE WP_MEM_ACCESS_READ_WRITE
|
|
||||||
#define WAPP_MEM_ACCESS_READ_EXEC WP_MEM_ACCESS_READ_EXEC
|
|
||||||
#define WAPP_MEM_ACCESS_READ_WRITE_EXEC WP_MEM_ACCESS_READ_WRITE_EXEC
|
|
||||||
#define WAPP_MEM_INIT_UNINITIALISED WP_MEM_INIT_UNINITIALISED
|
|
||||||
#define WAPP_MEM_INIT_INITIALISED WP_MEM_INIT_INITIALISED
|
|
||||||
|
|
||||||
// --- Platform ---
|
|
||||||
|
|
||||||
#define WAPP_PLATFORM_ANDROID WP_PLATFORM_ANDROID
|
|
||||||
#define WAPP_PLATFORM_FREE_BSD WP_PLATFORM_FREE_BSD
|
|
||||||
#define WAPP_PLATFORM_NET_BSD WP_PLATFORM_NET_BSD
|
|
||||||
#define WAPP_PLATFORM_OPEN_BSD WP_PLATFORM_OPEN_BSD
|
|
||||||
#define WAPP_PLATFORM_DRAGON_FLY WP_PLATFORM_DRAGON_FLY
|
|
||||||
#define WAPP_PLATFORM_BSD WP_PLATFORM_BSD
|
|
||||||
#define WAPP_PLATFORM_POSIX WP_PLATFORM_POSIX
|
|
||||||
#define WAPP_PLATFORM_LINUX WP_PLATFORM_LINUX
|
|
||||||
#define WAPP_PLATFORM_GNU WP_PLATFORM_GNU
|
|
||||||
#define WAPP_PLATFORM_IOS WP_PLATFORM_IOS
|
|
||||||
#define WAPP_PLATFORM_APPLE WP_PLATFORM_APPLE
|
|
||||||
#define WAPP_PLATFORM_MACOS WP_PLATFORM_MACOS
|
|
||||||
#define WAPP_PLATFORM_WINDOWS64 WP_PLATFORM_WINDOWS64
|
|
||||||
#define WAPP_PLATFORM_WINDOWS32 WP_PLATFORM_WINDOWS32
|
|
||||||
#define WAPP_PLATFORM_WINDOWS WP_PLATFORM_WINDOWS
|
|
||||||
#define WAPP_PLATFORM_CYGWIN WP_PLATFORM_CYGWIN
|
|
||||||
#define WAPP_PLATFORM_UNIX WP_PLATFORM_UNIX
|
|
||||||
#define WAPP_PLATFORM_CPP_VERSION WP_PLATFORM_CPP_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP98_VERSION WP_PLATFORM_CPP98_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP11_VERSION WP_PLATFORM_CPP11_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP14_VERSION WP_PLATFORM_CPP14_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP17_VERSION WP_PLATFORM_CPP17_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP20_VERSION WP_PLATFORM_CPP20_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP23_VERSION WP_PLATFORM_CPP23_VERSION
|
|
||||||
#define WAPP_PLATFORM_CPP98 WP_PLATFORM_CPP98
|
|
||||||
#define WAPP_PLATFORM_CPP11 WP_PLATFORM_CPP11
|
|
||||||
#define WAPP_PLATFORM_CPP14 WP_PLATFORM_CPP14
|
|
||||||
#define WAPP_PLATFORM_CPP17 WP_PLATFORM_CPP17
|
|
||||||
#define WAPP_PLATFORM_CPP20 WP_PLATFORM_CPP20
|
|
||||||
#define WAPP_PLATFORM_CPP23 WP_PLATFORM_CPP23
|
|
||||||
#define WAPP_PLATFORM_C_VERSION WP_PLATFORM_C_VERSION
|
|
||||||
#define WAPP_PLATFORM_C99_VERSION WP_PLATFORM_C99_VERSION
|
|
||||||
#define WAPP_PLATFORM_C11_VERSION WP_PLATFORM_C11_VERSION
|
|
||||||
#define WAPP_PLATFORM_C17_VERSION WP_PLATFORM_C17_VERSION
|
|
||||||
#define WAPP_PLATFORM_C23_VERSION WP_PLATFORM_C23_VERSION
|
|
||||||
#define WAPP_PLATFORM_C99 WP_PLATFORM_C99
|
|
||||||
#define WAPP_PLATFORM_C11 WP_PLATFORM_C11
|
|
||||||
#define WAPP_PLATFORM_C17 WP_PLATFORM_C17
|
|
||||||
#define WAPP_PLATFORM_C23 WP_PLATFORM_C23
|
|
||||||
#define WAPP_PLATFORM_C89 WP_PLATFORM_C89
|
|
||||||
|
|
||||||
// --- Shell Commander ---
|
|
||||||
|
|
||||||
#define SHELL_OUTPUT_DISCARD WP_SHELL_OUTPUT_DISCARD
|
|
||||||
#define SHELL_OUTPUT_PRINT WP_SHELL_OUTPUT_PRINT
|
|
||||||
#define SHELL_OUTPUT_CAPTURE WP_SHELL_OUTPUT_CAPTURE
|
|
||||||
#define SHELL_ERR_NO_ERROR WP_SHELL_ERR_NO_ERROR
|
|
||||||
#define SHELL_ERR_INVALID_ARGS WP_SHELL_ERR_INVALID_ARGS
|
|
||||||
#define SHELL_ERR_ALLOCATION_FAIL WP_SHELL_ERR_ALLOCATION_FAIL
|
|
||||||
#define SHELL_ERR_PROC_START_FAIL WP_SHELL_ERR_PROC_START_FAIL
|
|
||||||
#define SHELL_ERR_OUT_BUF_FULL WP_SHELL_ERR_OUT_BUF_FULL
|
|
||||||
#define SHELL_ERR_PROC_EXIT_FAIL WP_SHELL_ERR_PROC_EXIT_FAIL
|
|
||||||
|
|
||||||
// --- Shell Termcolour ---
|
|
||||||
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BLACK WP_TERM_COLOUR_FG_BLACK
|
|
||||||
#define WAPP_TERM_COLOUR_FG_RED WP_TERM_COLOUR_FG_RED
|
|
||||||
#define WAPP_TERM_COLOUR_FG_GREEN WP_TERM_COLOUR_FG_GREEN
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BLUE WP_TERM_COLOUR_FG_BLUE
|
|
||||||
#define WAPP_TERM_COLOUR_FG_CYAN WP_TERM_COLOUR_FG_CYAN
|
|
||||||
#define WAPP_TERM_COLOUR_FG_MAGENTA WP_TERM_COLOUR_FG_MAGENTA
|
|
||||||
#define WAPP_TERM_COLOUR_FG_YELLOW WP_TERM_COLOUR_FG_YELLOW
|
|
||||||
#define WAPP_TERM_COLOUR_FG_WHITE WP_TERM_COLOUR_FG_WHITE
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_BLACK WP_TERM_COLOUR_FG_BR_BLACK
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_RED WP_TERM_COLOUR_FG_BR_RED
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_GREEN WP_TERM_COLOUR_FG_BR_GREEN
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_BLUE WP_TERM_COLOUR_FG_BR_BLUE
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_CYAN WP_TERM_COLOUR_FG_BR_CYAN
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_MAGENTA WP_TERM_COLOUR_FG_BR_MAGENTA
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_YELLOW WP_TERM_COLOUR_FG_BR_YELLOW
|
|
||||||
#define WAPP_TERM_COLOUR_FG_BR_WHITE WP_TERM_COLOUR_FG_BR_WHITE
|
|
||||||
#define WAPP_TERM_COLOUR_CLEAR WP_TERM_COLOUR_CLEAR
|
|
||||||
|
|
||||||
// --- Str8 ---
|
|
||||||
|
|
||||||
#define WAPP_STR8_SPEC WP_STR8_SPEC
|
|
||||||
|
|
||||||
// --- UUID ---
|
|
||||||
|
|
||||||
#define UUID_BUF_LENGTH WP_UUID_BUF_LENGTH
|
|
||||||
#define WAPP_UUID_SPEC WP_UUID_SPEC
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// ===== Types =====
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
// --- Aliases ---
|
|
||||||
|
|
||||||
#define wapp_extern wp_extern
|
|
||||||
#define wapp_intern wp_intern
|
|
||||||
#define wapp_persist wp_persist
|
|
||||||
#define wapp_class_mem wp_class_mem
|
|
||||||
|
|
||||||
// --- Arena ---
|
|
||||||
|
|
||||||
#define Arena WpArena
|
|
||||||
|
|
||||||
// --- Array ---
|
|
||||||
|
|
||||||
#define GenericArray WpArray
|
|
||||||
#define VoidPtrArray WpVoidPtrArray
|
|
||||||
#define C8Array WpC8Array
|
|
||||||
#define C16Array WpC16Array
|
|
||||||
#define C32Array WpC32Array
|
|
||||||
#define U8Array WpU8Array
|
|
||||||
#define U16Array WpU16Array
|
|
||||||
#define U32Array WpU32Array
|
|
||||||
#define U64Array WpU64Array
|
|
||||||
#define B8Array WpB8Array
|
|
||||||
#define I8Array WpI8Array
|
|
||||||
#define I16Array WpI16Array
|
|
||||||
#define I32Array WpI32Array
|
|
||||||
#define I64Array WpI64Array
|
|
||||||
#define F32Array WpF32Array
|
|
||||||
#define F64Array WpF64Array
|
|
||||||
#define F128Array WpF128Array
|
|
||||||
#define UptrArray WpUptrArray
|
|
||||||
#define IptrArray WpIptrArray
|
|
||||||
#define Str8Array WpStr8Array
|
|
||||||
#define ArrayHeader WpArrayHeader
|
|
||||||
#define ArrayInitFlags WpArrayInitFlags
|
|
||||||
|
|
||||||
// --- DblList ---
|
|
||||||
|
|
||||||
#define GenericNode WpDblNode
|
|
||||||
#define NodeHeader WpDblNodeHeader
|
|
||||||
#define GenericList WpDblList
|
|
||||||
#define VoidPtrList WpVoidPtrList
|
|
||||||
#define C8List WpC8List
|
|
||||||
#define C16List WpC16List
|
|
||||||
#define C32List WpC32List
|
|
||||||
#define U8List WpU8List
|
|
||||||
#define U16List WpU16List
|
|
||||||
#define U32List WpU32List
|
|
||||||
#define U64List WpU64List
|
|
||||||
#define B8List WpB8List
|
|
||||||
#define I8List WpI8List
|
|
||||||
#define I16List WpI16List
|
|
||||||
#define I32List WpI32List
|
|
||||||
#define I64List WpI64List
|
|
||||||
#define F32List WpF32List
|
|
||||||
#define F64List WpF64List
|
|
||||||
#define F128List WpF128List
|
|
||||||
#define UptrList WpUptrList
|
|
||||||
#define IptrList WpIptrList
|
|
||||||
#define Str8List WpStr8List
|
|
||||||
#define VoidPtrNode WpVoidPtrNode
|
|
||||||
#define C8Node WpC8Node
|
|
||||||
#define C16Node WpC16Node
|
|
||||||
#define C32Node WpC32Node
|
|
||||||
#define U8Node WpU8Node
|
|
||||||
#define U16Node WpU16Node
|
|
||||||
#define U32Node WpU32Node
|
|
||||||
#define U64Node WpU64Node
|
|
||||||
#define B8Node WpB8Node
|
|
||||||
#define I8Node WpI8Node
|
|
||||||
#define I16Node WpI16Node
|
|
||||||
#define I32Node WpI32Node
|
|
||||||
#define I64Node WpI64Node
|
|
||||||
#define F32Node WpF32Node
|
|
||||||
#define F64Node WpF64Node
|
|
||||||
#define F128Node WpF128Node
|
|
||||||
#define UptrNode WpUptrNode
|
|
||||||
#define IptrNode WpIptrNode
|
|
||||||
#define Str8Node WpStr8Node
|
|
||||||
|
|
||||||
// --- File ---
|
|
||||||
|
|
||||||
#define WFile WpFile
|
|
||||||
#define FileAccessMode WpFileAccessMode
|
|
||||||
#define FileSeekOrigin WpFileSeekOrigin
|
|
||||||
|
|
||||||
// --- Log ---
|
|
||||||
|
|
||||||
#define LogLevel WpLogLevel
|
|
||||||
#define Logger WpLogger
|
|
||||||
|
|
||||||
// --- Mem Allocator ---
|
|
||||||
|
|
||||||
#define Allocator WpAllocator
|
|
||||||
#define MemAllocFunc WpMemAllocFunc
|
|
||||||
#define MemAllocAlignedFunc WpMemAllocAlignedFunc
|
|
||||||
#define MemReallocFunc WpMemReallocFunc
|
|
||||||
#define MemReallocAlignedFunc WpMemReallocAlignedFunc
|
|
||||||
#define MemFreeFunc WpMemFreeFunc
|
|
||||||
|
|
||||||
// --- Mem Os ---
|
|
||||||
|
|
||||||
#define MemAccess WpMemAccess
|
|
||||||
#define MemInitType WpMemInitType
|
|
||||||
#define MemAllocFlags WpMemAllocFlags
|
|
||||||
|
|
||||||
// --- PRNG Xorshift ---
|
|
||||||
|
|
||||||
#define XOR256State WpXor256State
|
|
||||||
|
|
||||||
// --- Queue ---
|
|
||||||
|
|
||||||
#define GenericQueue WpQueue
|
|
||||||
#define VoidPtrQueue WpVoidPtrQueue
|
|
||||||
#define C8Queue WpC8Queue
|
|
||||||
#define C16Queue WpC16Queue
|
|
||||||
#define C32Queue WpC32Queue
|
|
||||||
#define U8Queue WpU8Queue
|
|
||||||
#define U16Queue WpU16Queue
|
|
||||||
#define U32Queue WpU32Queue
|
|
||||||
#define U64Queue WpU64Queue
|
|
||||||
#define B8Queue WpB8Queue
|
|
||||||
#define I8Queue WpI8Queue
|
|
||||||
#define I16Queue WpI16Queue
|
|
||||||
#define I32Queue WpI32Queue
|
|
||||||
#define I64Queue WpI64Queue
|
|
||||||
#define F32Queue WpF32Queue
|
|
||||||
#define F64Queue WpF64Queue
|
|
||||||
#define F128Queue WpF128Queue
|
|
||||||
#define UptrQueue WpUptrQueue
|
|
||||||
#define IptrQueue WpIptrQueue
|
|
||||||
#define Str8Queue WpStr8Queue
|
|
||||||
|
|
||||||
// --- Shell Commander ---
|
|
||||||
|
|
||||||
#define CMDResult WpCmdResult
|
|
||||||
#define CMDOutHandling WpCmdOutHandling
|
|
||||||
#define CMDError WpCmdError
|
|
||||||
|
|
||||||
// --- Shell Termcolour ---
|
|
||||||
|
|
||||||
#define TerminalColour WpTerminalColour
|
|
||||||
|
|
||||||
// --- Str8 ---
|
|
||||||
|
|
||||||
#define Str8 WpStr8
|
|
||||||
#define Str8RO WpStr8RO
|
|
||||||
|
|
||||||
// --- Tester ---
|
|
||||||
|
|
||||||
#define TestFuncResult WpTestFuncResult
|
|
||||||
#define TestFunc WpTestFunc
|
|
||||||
|
|
||||||
// --- UUID ---
|
|
||||||
|
|
||||||
#define WUUID WpUuid
|
|
||||||
|
|
||||||
// ============================================================================
|
|
||||||
// ===== Functions =====
|
|
||||||
// ============================================================================
|
|
||||||
|
|
||||||
// --- Arena ---
|
|
||||||
|
|
||||||
#define wapp_mem_arena_init_allocated wpMemArenaInitAllocated
|
|
||||||
#define wapp_mem_arena_init_allocated_commit wpMemArenaInitAllocatedCommit
|
|
||||||
#define wapp_mem_arena_init_allocated_zero wpMemArenaInitAllocatedZero
|
|
||||||
#define wapp_mem_arena_init_allocated_commit_and_zero wpMemArenaInitAllocatedCommitAndZero
|
|
||||||
#define wapp_mem_arena_init_allocated_custom wpMemArenaInitAllocatedCustom
|
|
||||||
#define wapp_mem_arena_init_buffer wpMemArenaInitBuffer
|
|
||||||
#define wapp_mem_arena_alloc wpMemArenaAlloc
|
|
||||||
#define wapp_mem_arena_alloc_aligned wpMemArenaAllocAligned
|
|
||||||
#define wapp_mem_arena_realloc wpMemArenaRealloc
|
|
||||||
#define wapp_mem_arena_realloc_aligned wpMemArenaReallocAligned
|
|
||||||
#define wapp_mem_arena_temp_begin wpMemArenaTempBegin
|
|
||||||
#define wapp_mem_arena_temp_end wpMemArenaTempEnd
|
|
||||||
#define wapp_mem_arena_clear wpMemArenaClear
|
|
||||||
#define wapp_mem_arena_destroy wpMemArenaDestroy
|
|
||||||
|
|
||||||
#define wapp_mem_arena_allocator_init wpMemArenaAllocatorInit
|
|
||||||
#define wapp_mem_arena_allocator_init_commit wpMemArenaAllocatorInitCommit
|
|
||||||
#define wapp_mem_arena_allocator_init_zero wpMemArenaAllocatorInitZero
|
|
||||||
#define wapp_mem_arena_allocator_init_commit_and_zero wpMemArenaAllocatorInitCommitAndZero
|
|
||||||
#define wapp_mem_arena_allocator_init_custom wpMemArenaAllocatorInitCustom
|
|
||||||
#define wapp_mem_arena_allocator_init_with_buffer wpMemArenaAllocatorInitWithBuffer
|
|
||||||
#define wapp_mem_arena_allocator_temp_begin wpMemArenaAllocatorTempBegin
|
|
||||||
#define wapp_mem_arena_allocator_temp_end wpMemArenaAllocatorTempEnd
|
|
||||||
#define wapp_mem_arena_allocator_clear wpMemArenaAllocatorClear
|
|
||||||
#define wapp_mem_arena_allocator_destroy wpMemArenaAllocatorDestroy
|
|
||||||
|
|
||||||
// --- Array ---
|
|
||||||
|
|
||||||
#define wapp_array wpArray
|
|
||||||
#define wapp_array_with_capacity wpArrayWithCapacity
|
|
||||||
#define wapp_array_pop wpArrayPop
|
|
||||||
#define wapp_array_count wpArrayCount
|
|
||||||
#define wapp_array_capacity wpArrayCapacity
|
|
||||||
#define wapp_array_item_size wpArrayItemSize
|
|
||||||
#define wapp_array_set_count wpArraySetCount
|
|
||||||
#define wapp_array_get wpArrayGet
|
|
||||||
#define wapp_array_set wpArraySet
|
|
||||||
#define wapp_array_append_capped wpArrayAppendCapped
|
|
||||||
#define wapp_array_extend_capped wpArrayExtendCapped
|
|
||||||
#define wapp_array_copy_capped wpArrayCopyCapped
|
|
||||||
#define wapp_array_append_alloc wpArrayAppendAlloc
|
|
||||||
#define wapp_array_extend_alloc wpArrayExtendAlloc
|
|
||||||
#define wapp_array_copy_alloc wpArrayCopyAlloc
|
|
||||||
#define wapp_array_clear wpArrayClear
|
|
||||||
#define wapp_array_calc_alloc_size wpArrayCalcAllocSize
|
|
||||||
#define wapp_array_alloc_capacity wpArrayAllocCapacity
|
|
||||||
#define wapp_array_from_preallcated_buffer wpArrayFromPreallcatedBuffer
|
|
||||||
|
|
||||||
// --- Assert ---
|
|
||||||
|
|
||||||
#define wapp_static_assert wpStaticAssert
|
|
||||||
#define wapp_runtime_assert wpRuntimeAssert
|
|
||||||
#define wapp_debug_assert wpDebugAssert
|
|
||||||
|
|
||||||
// --- CPath ---
|
|
||||||
|
|
||||||
#define wapp_cpath_dirname wpCpathDirname
|
|
||||||
#define wapp_cpath_dirup wpCpathDirup
|
|
||||||
#define wapp_cpath_join_path wpCpathJoinPath
|
|
||||||
#define dirup _dirup
|
|
||||||
|
|
||||||
// --- DblList ---
|
|
||||||
|
|
||||||
#define wapp_dbl_list wpDblList
|
|
||||||
#define wapp_dbl_list_alloc wpDblListAlloc
|
|
||||||
#define wapp_dbl_list_get wpDblListGet
|
|
||||||
#define wapp_dbl_list_get_node wpDblListGetNode
|
|
||||||
#define wapp_dbl_list_get_node_item wpDblListGetNodeItem
|
|
||||||
#define wapp_dbl_list_push_front wpDblListPushFront
|
|
||||||
#define wapp_dbl_list_push_back wpDblListPushBack
|
|
||||||
#define wapp_dbl_list_insert wpDblListInsert
|
|
||||||
#define wapp_dbl_list_push_front_alloc wpDblListPushFrontAlloc
|
|
||||||
#define wapp_dbl_list_push_back_alloc wpDblListPushBackAlloc
|
|
||||||
#define wapp_dbl_list_insert_alloc wpDblListInsertAlloc
|
|
||||||
#define wapp_dbl_list_pop_front wpDblListPopFront
|
|
||||||
#define wapp_dbl_list_pop_back wpDblListPopBack
|
|
||||||
#define wapp_dbl_list_remove wpDblListRemove
|
|
||||||
#define wapp_dbl_list_pop_front_node wpDblListPopFrontNode
|
|
||||||
#define wapp_dbl_list_pop_back_node wpDblListPopBackNode
|
|
||||||
#define wapp_dbl_list_remove_node wpDblListRemoveNode
|
|
||||||
#define wapp_dbl_list_empty wpDblListEmpty
|
|
||||||
|
|
||||||
#define _dbl_list_alloc _dblListAlloc
|
|
||||||
#define _dbl_list_node_alloc _dblListNodeAlloc
|
|
||||||
#define _dbl_list_get _dblListGet
|
|
||||||
#define _dbl_list_push_front _dblListPushFront
|
|
||||||
#define _dbl_list_push_back _dblListPushBack
|
|
||||||
#define _dbl_list_insert _dblListInsert
|
|
||||||
#define _dbl_list_pop_front _dblListPopFront
|
|
||||||
#define _dbl_list_pop_back _dblListPopBack
|
|
||||||
#define _dbl_list_remove _dblListRemove
|
|
||||||
#define _dbl_list_empty _dblListEmpty
|
|
||||||
|
|
||||||
// --- File ---
|
|
||||||
|
|
||||||
#define wapp_file_stdin wpFileStdin
|
|
||||||
#define wapp_file_stdout wpFileStdout
|
|
||||||
#define wapp_file_stderr wpFileStderr
|
|
||||||
#define wapp_file_open wpFileOpen
|
|
||||||
#define wapp_file_get_current_position wpFileGetCurrentPosition
|
|
||||||
#define wapp_file_seek wpFileSeek
|
|
||||||
#define wapp_file_get_length wpFileGetLength
|
|
||||||
#define wapp_file_read wpFileRead
|
|
||||||
#define wapp_file_write wpFileWrite
|
|
||||||
#define wapp_file_read_str8 wpFileReadStr8
|
|
||||||
#define wapp_file_write_str8 wpFileWriteStr8
|
|
||||||
#define wapp_file_read_array wpFileReadArray
|
|
||||||
#define wapp_file_write_array wpFileWriteArray
|
|
||||||
#define wapp_file_flush wpFileFlush
|
|
||||||
#define wapp_file_close wpFileClose
|
|
||||||
#define wapp_file_rename wpFileRename
|
|
||||||
#define wapp_file_remove wpFileRemove
|
|
||||||
|
|
||||||
#define _file_open _fileOpen
|
|
||||||
#define _file_seek _fileSeek
|
|
||||||
#define _file_read _fileRead
|
|
||||||
#define _file_write _fileWrite
|
|
||||||
#define _file_flush _fileFlush
|
|
||||||
#define _file_close _fileClose
|
|
||||||
#define _file_rename _fileRename
|
|
||||||
#define _file_remove _fileRemove
|
|
||||||
|
|
||||||
// --- Log ---
|
|
||||||
|
|
||||||
#define wapp_log_set_level wpLogSetLevel
|
|
||||||
#define wapp_log_configure wpLogConfigure
|
|
||||||
#define wapp_log_make_logger wpLogMakeLogger
|
|
||||||
#define wapp_log_debug wpLogDebug
|
|
||||||
#define wapp_log_info wpLogInfo
|
|
||||||
#define wapp_log_warning wpLogWarning
|
|
||||||
#define wapp_log_error wpLogError
|
|
||||||
#define wapp_log_critical wpLogCritical
|
|
||||||
#define wapp_log_fatal wpLogFatal
|
|
||||||
|
|
||||||
// --- Mem Allocator ---
|
|
||||||
|
|
||||||
#define wapp_mem_allocator_invalid wpMemAllocatorInvalid
|
|
||||||
#define wapp_mem_allocator_alloc wpMemAllocatorAlloc
|
|
||||||
#define wapp_mem_allocator_alloc_aligned wpMemAllocatorAllocAligned
|
|
||||||
#define wapp_mem_allocator_realloc wpMemAllocatorRealloc
|
|
||||||
#define wapp_mem_allocator_realloc_aligned wpMemAllocatorReallocAligned
|
|
||||||
#define wapp_mem_allocator_free wpMemAllocatorFree
|
|
||||||
|
|
||||||
// --- Mem Os ---
|
|
||||||
|
|
||||||
#define wapp_os_mem_alloc wpOsMemAlloc
|
|
||||||
#define wapp_os_mem_free wpOsMemFree
|
|
||||||
#define os_mem_allocate _osMemAllocate
|
|
||||||
#define os_mem_free _osMemFree
|
|
||||||
|
|
||||||
// --- Mem Utils ---
|
|
||||||
|
|
||||||
#define wapp_mem_util_align_forward wpMemUtilAlignForward
|
|
||||||
|
|
||||||
// --- Misc Utils ---
|
|
||||||
|
|
||||||
#define wapp_misc_utils_reserve_padding wpMiscUtilsReservePadding
|
|
||||||
#define wapp_misc_utils_u64_round_up_pow2 wpMiscUtilsU64RoundUpPow2
|
|
||||||
#define wapp_is_power_of_two wpMiscUtilsIsPowerOfTwo
|
|
||||||
#define wapp_pointer_offset wpMiscUtilsOffsetPointer
|
|
||||||
#define wapp_misc_utils_va_args_count wpMiscUtilsVaArgsCount
|
|
||||||
|
|
||||||
// --- PRNG Xorshift ---
|
|
||||||
|
|
||||||
#define wapp_prng_xorshift_init_state wpPrngXorshiftInit
|
|
||||||
#define wapp_prng_xorshift_256 wpPrngXorshift256
|
|
||||||
#define wapp_prng_xorshift_256ss wpPrngXorshift256ss
|
|
||||||
#define wapp_prng_xorshift_256p wpPrngXorshift256p
|
|
||||||
|
|
||||||
// --- Queue ---
|
|
||||||
|
|
||||||
#define wapp_queue wpQueue
|
|
||||||
#define wapp_queue_alloc wpQueueAlloc
|
|
||||||
#define wapp_queue_capacity wpQueueCapacity
|
|
||||||
#define wapp_queue_item_size wpQueueItemSize
|
|
||||||
#define wapp_queue_push wpQueuePush
|
|
||||||
#define wapp_queue_push_alloc wpQueuePushAlloc
|
|
||||||
#define wapp_queue_pop wpQueuePop
|
|
||||||
|
|
||||||
#define _queue_push _queuePush
|
|
||||||
#define _queue_push_alloc _queuePushAlloc
|
|
||||||
#define _queue_pop _queuePop
|
|
||||||
|
|
||||||
// --- Shell Commander ---
|
|
||||||
|
|
||||||
#define CMD_NO_EXIT wpCmdNoExit
|
|
||||||
#define wapp_shell_commander_execute wpShellCommanderExecute
|
|
||||||
#define get_output_status _getOutputStatus
|
|
||||||
|
|
||||||
// --- Shell Termcolour ---
|
|
||||||
|
|
||||||
#define wapp_shell_termcolour_print_text wpShellTermcolourPrintText
|
|
||||||
#define wapp_shell_termcolour_clear_colour wpShellTermcolourClearColour
|
|
||||||
#define print_coloured_text _printColouredText
|
|
||||||
|
|
||||||
// --- Shell Utils ---
|
|
||||||
|
|
||||||
#define wapp_shell_utils_popen wpShellUtilsPopen
|
|
||||||
#define wapp_shell_utils_pclose wpShellUtilsPclose
|
|
||||||
|
|
||||||
// --- Str8 ---
|
|
||||||
|
|
||||||
#define wapp_str8_varg wpStr8Varg
|
|
||||||
#define wapp_str8_buf wpStr8Buf
|
|
||||||
#define wapp_str8_lit wpStr8Lit
|
|
||||||
#define wapp_str8_lit_ro wpStr8LitRo
|
|
||||||
#define wapp_str8_lit_ro_initialiser_list wpStr8LitRoInitialiserList
|
|
||||||
#define wapp_str8_alloc_buf wpStr8AllocBuf
|
|
||||||
#define wapp_str8_alloc_and_fill_buf wpStr8AllocAndFillBuf
|
|
||||||
#define wapp_str8_alloc_cstr wpStr8AllocCstr
|
|
||||||
#define wapp_str8_alloc_str8 wpStr8AllocStr8
|
|
||||||
#define wapp_str8_alloc_substr wpStr8AllocSubstr
|
|
||||||
#define wapp_str8_alloc_concat wpStr8AllocConcat
|
|
||||||
#define wapp_str8_dealloc_buf wpStr8DeallocBuf
|
|
||||||
#define wapp_str8_get wpStr8Get
|
|
||||||
#define wapp_str8_set wpStr8Set
|
|
||||||
#define wapp_str8_push_back wpStr8PushBack
|
|
||||||
#define wapp_str8_equal wpStr8Equal
|
|
||||||
#define wapp_str8_equal_to_count wpStr8EqualToCount
|
|
||||||
#define wapp_str8_slice wpStr8Slice
|
|
||||||
#define wapp_str8_concat_capped wpStr8ConcatCapped
|
|
||||||
#define wapp_str8_copy_cstr_capped wpStr8CopyCstrCapped
|
|
||||||
#define wapp_str8_copy_str8_capped wpStr8CopyStr8Capped
|
|
||||||
#define wapp_str8_copy_to_cstr wpStr8CopyToCstr
|
|
||||||
#define wapp_str8_format wpStr8Format
|
|
||||||
#define wapp_str8_to_lower wpStr8ToLower
|
|
||||||
#define wapp_str8_to_upper wpStr8ToUpper
|
|
||||||
#define wapp_str8_from_bytes wpStr8FromBytes
|
|
||||||
#define wapp_str8_find wpStr8Find
|
|
||||||
#define wapp_str8_rfind wpStr8Rfind
|
|
||||||
#define wapp_str8_split wpStr8Split
|
|
||||||
#define wapp_str8_rsplit wpStr8Rsplit
|
|
||||||
#define wapp_str8_split_with_max wpStr8SplitWithMax
|
|
||||||
#define wapp_str8_rsplit_with_max wpStr8RsplitWithMax
|
|
||||||
#define wapp_str8_join wpStr8Join
|
|
||||||
#define wapp_str8_list_total_size wpStr8ListTotalSize
|
|
||||||
|
|
||||||
// --- Tester ---
|
|
||||||
|
|
||||||
#define wapp_tester_result wpTesterResult
|
|
||||||
#define wapp_tester_run wpTesterRun
|
|
||||||
#define run_tests _runTests
|
|
||||||
|
|
||||||
// --- UUID ---
|
|
||||||
|
|
||||||
#define wapp_uuid_varg wpUuidVarg
|
|
||||||
#define wapp_uuid_gen_uuid4 wpUuidGenUuid4
|
|
||||||
#define wapp_uuid_create wpUuidCreate
|
|
||||||
#define wapp_uuid_init_uuid4 wpUuidInitUuid4
|
|
||||||
|
|
||||||
#endif // !OLDNAMES_H
|
|
||||||
@@ -21,7 +21,7 @@ typedef enum {
|
|||||||
ARENA_STORAGE_TYPE_BUFFER,
|
ARENA_STORAGE_TYPE_BUFFER,
|
||||||
} ArenaStorageType;
|
} ArenaStorageType;
|
||||||
|
|
||||||
struct WpArena {
|
struct Arena {
|
||||||
u8 *buf;
|
u8 *buf;
|
||||||
u8 *offset;
|
u8 *offset;
|
||||||
u8 *prev_offset;
|
u8 *prev_offset;
|
||||||
@@ -32,63 +32,63 @@ struct WpArena {
|
|||||||
wpMiscUtilsReservePadding(sizeof(u8 *) * 3 + sizeof(u64) + sizeof(ArenaStorageType) + sizeof(b8));
|
wpMiscUtilsReservePadding(sizeof(u8 *) * 3 + sizeof(u64) + sizeof(ArenaStorageType) + sizeof(b8));
|
||||||
};
|
};
|
||||||
|
|
||||||
b8 wpMemArenaInitBuffer(WpArena **arena, u8 *buffer, u64 buffer_size) {
|
b8 wapp_mem_arena_init_buffer(Arena **arena, u8 *buffer, u64 buffer_size) {
|
||||||
if (!arena || *arena || buffer_size < sizeof(WpArena)) {
|
if (!arena || *arena || buffer_size < sizeof(Arena)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*arena = (WpArena *)buffer;
|
*arena = (Arena *)buffer;
|
||||||
WpArena *arena_ptr = *arena;
|
Arena *arena_ptr = *arena;
|
||||||
|
|
||||||
arena_ptr->buf = (u8 *)(arena_ptr + 1);
|
arena_ptr->buf = (u8 *)(arena_ptr + 1);
|
||||||
arena_ptr->offset = arena_ptr->buf;
|
arena_ptr->offset = arena_ptr->buf;
|
||||||
arena_ptr->prev_offset = NULL;
|
arena_ptr->prev_offset = NULL;
|
||||||
arena_ptr->capacity = buffer_size - sizeof(WpArena);
|
arena_ptr->capacity = buffer_size - sizeof(Arena);
|
||||||
arena_ptr->type = ARENA_STORAGE_TYPE_BUFFER;
|
arena_ptr->type = ARENA_STORAGE_TYPE_BUFFER;
|
||||||
arena_ptr->committed = true;
|
arena_ptr->committed = true;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
b8 wpMemArenaInitAllocatedCustom(WpArena **arena, u64 base_capacity, WpMemAllocFlags flags, b8 zero_buffer) {
|
b8 wapp_mem_arena_init_allocated_custom(Arena **arena, u64 base_capacity, MemAllocFlags flags, b8 zero_buffer) {
|
||||||
if (!arena || *arena || base_capacity == 0) {
|
if (!arena || *arena || base_capacity == 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 size = sizeof(WpArena) + (base_capacity >= ARENA_MINIMUM_CAPACITY ? base_capacity : ARENA_MINIMUM_CAPACITY);
|
u64 size = sizeof(Arena) + (base_capacity >= ARENA_MINIMUM_CAPACITY ? base_capacity : ARENA_MINIMUM_CAPACITY);
|
||||||
u64 alloc_size = wpMiscUtilsU64RoundUpPow2(size);
|
u64 alloc_size = wpMiscUtilsU64RoundUpPow2(size);
|
||||||
u8 *allocated = (u8 *)wpOsMemAlloc(NULL, alloc_size, WP_MEM_ACCESS_READ_WRITE, flags,
|
u8 *allocated = (u8 *)wapp_os_mem_alloc(NULL, alloc_size, WAPP_MEM_ACCESS_READ_WRITE, flags,
|
||||||
zero_buffer ? WP_MEM_INIT_INITIALISED : WP_MEM_INIT_UNINITIALISED);
|
zero_buffer ? WAPP_MEM_INIT_INITIALISED : WAPP_MEM_INIT_UNINITIALISED);
|
||||||
if (!allocated) {
|
if (!allocated) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
b8 committed = (flags & WP_MEM_ALLOC_COMMIT) == WP_MEM_ALLOC_COMMIT;
|
b8 committed = (flags & WAPP_MEM_ALLOC_COMMIT) == WAPP_MEM_ALLOC_COMMIT;
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_WINDOWS
|
#ifdef WP_PLATFORM_WINDOWS
|
||||||
if (!committed) {
|
if (!committed) {
|
||||||
wpOsMemAlloc(allocated, sizeof(WpArena), WP_MEM_ACCESS_READ_WRITE, WP_MEM_ALLOC_COMMIT,
|
wapp_os_mem_alloc(allocated, sizeof(Arena), WAPP_MEM_ACCESS_READ_WRITE, WAPP_MEM_ALLOC_COMMIT,
|
||||||
WP_MEM_INIT_INITIALISED);
|
WAPP_MEM_INIT_INITIALISED);
|
||||||
}
|
}
|
||||||
#endif // ifdef WP_PLATFORM_WINDOWS
|
#endif // ifdef WP_PLATFORM_WINDOWS
|
||||||
|
|
||||||
if (!wpMemArenaInitBuffer(arena, allocated, alloc_size)) {
|
if (!wapp_mem_arena_init_buffer(arena, allocated, alloc_size)) {
|
||||||
wpMemArenaDestroy(arena);
|
wapp_mem_arena_destroy(arena);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpArena *arena_ptr = *arena;
|
Arena *arena_ptr = *arena;
|
||||||
arena_ptr->type = ARENA_STORAGE_TYPE_ALLOCATED;
|
arena_ptr->type = ARENA_STORAGE_TYPE_ALLOCATED;
|
||||||
arena_ptr->committed = committed;
|
arena_ptr->committed = committed;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *wpMemArenaAlloc(WpArena *arena, u64 size) {
|
void *wapp_mem_arena_alloc(Arena *arena, u64 size) {
|
||||||
return wpMemArenaAllocAligned(arena, size, DEFAULT_ALIGNMENT);
|
return wapp_mem_arena_alloc_aligned(arena, size, DEFAULT_ALIGNMENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
void *wpMemArenaAllocAligned(WpArena *arena, u64 size, u64 alignment) {
|
void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment) {
|
||||||
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
||||||
|
|
||||||
u8 *alloc_start = arena->offset;
|
u8 *alloc_start = arena->offset;
|
||||||
@@ -102,9 +102,9 @@ void *wpMemArenaAllocAligned(WpArena *arena, u64 size, u64 alignment) {
|
|||||||
|
|
||||||
#ifdef WP_PLATFORM_WINDOWS
|
#ifdef WP_PLATFORM_WINDOWS
|
||||||
if (arena->type == ARENA_STORAGE_TYPE_ALLOCATED && !(arena->committed)) {
|
if (arena->type == ARENA_STORAGE_TYPE_ALLOCATED && !(arena->committed)) {
|
||||||
wpOsMemAlloc(alloc_start, (uptr)(arena->offset) - (uptr)(alloc_start),
|
wapp_os_mem_alloc(alloc_start, (uptr)(arena->offset) - (uptr)(alloc_start),
|
||||||
WP_MEM_ACCESS_READ_WRITE, WP_MEM_ALLOC_COMMIT,
|
WAPP_MEM_ACCESS_READ_WRITE, WAPP_MEM_ALLOC_COMMIT,
|
||||||
WP_MEM_INIT_UNINITIALISED);
|
WAPP_MEM_INIT_UNINITIALISED);
|
||||||
}
|
}
|
||||||
#endif // ifdef WP_PLATFORM_WINDOWS
|
#endif // ifdef WP_PLATFORM_WINDOWS
|
||||||
|
|
||||||
@@ -113,7 +113,7 @@ void *wpMemArenaAllocAligned(WpArena *arena, u64 size, u64 alignment) {
|
|||||||
return (void *)output;
|
return (void *)output;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *wpMemArenaRealloc(WpArena *arena, void *ptr, u64 old_size, u64 new_size) {
|
void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size) {
|
||||||
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
||||||
|
|
||||||
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
||||||
@@ -121,7 +121,7 @@ void *wpMemArenaRealloc(WpArena *arena, void *ptr, u64 old_size, u64 new_size) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *new_ptr = wpMemArenaAlloc(arena, new_size);
|
void *new_ptr = wapp_mem_arena_alloc(arena, new_size);
|
||||||
if (!new_ptr) {
|
if (!new_ptr) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -132,7 +132,7 @@ void *wpMemArenaRealloc(WpArena *arena, void *ptr, u64 old_size, u64 new_size) {
|
|||||||
return new_ptr;
|
return new_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *wpMemArenaReallocAligned(WpArena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment) {
|
void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment) {
|
||||||
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
||||||
|
|
||||||
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
if ((u8*)ptr < arena->buf || (u8*)ptr > arena->offset ||
|
||||||
@@ -140,7 +140,7 @@ void *wpMemArenaReallocAligned(WpArena *arena, void *ptr, u64 old_size, u64 new_
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *new_ptr = wpMemArenaAllocAligned(arena, new_size, alignment);
|
void *new_ptr = wapp_mem_arena_alloc_aligned(arena, new_size, alignment);
|
||||||
if (!new_ptr) {
|
if (!new_ptr) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -151,7 +151,7 @@ void *wpMemArenaReallocAligned(WpArena *arena, void *ptr, u64 old_size, u64 new_
|
|||||||
return new_ptr;
|
return new_ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaTempBegin(WpArena *arena) {
|
void wapp_mem_arena_temp_begin(Arena *arena) {
|
||||||
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
||||||
|
|
||||||
if (arena->prev_offset != NULL) {
|
if (arena->prev_offset != NULL) {
|
||||||
@@ -161,7 +161,7 @@ void wpMemArenaTempBegin(WpArena *arena) {
|
|||||||
arena->prev_offset = arena->offset;
|
arena->prev_offset = arena->offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaTempEnd(WpArena *arena) {
|
void wapp_mem_arena_temp_end(Arena *arena) {
|
||||||
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
||||||
|
|
||||||
if (arena->prev_offset == NULL) {
|
if (arena->prev_offset == NULL) {
|
||||||
@@ -172,20 +172,20 @@ void wpMemArenaTempEnd(WpArena *arena) {
|
|||||||
arena->prev_offset = NULL;
|
arena->prev_offset = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaClear(WpArena *arena) {
|
void wapp_mem_arena_clear(Arena *arena) {
|
||||||
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
wpDebugAssert(arena != NULL, "`arena` should not be NULL");
|
||||||
|
|
||||||
memset(arena->buf, 0, arena->offset - arena->buf);
|
memset(arena->buf, 0, arena->offset - arena->buf);
|
||||||
arena->offset = arena->buf;
|
arena->offset = arena->buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaDestroy(WpArena **arena) {
|
void wapp_mem_arena_destroy(Arena **arena) {
|
||||||
wpDebugAssert(arena != NULL && (*arena) != NULL, "`arena` double pointer is not valid");
|
wpDebugAssert(arena != NULL && (*arena) != NULL, "`arena` double pointer is not valid");
|
||||||
|
|
||||||
WpArena *arena_ptr = *arena;
|
Arena *arena_ptr = *arena;
|
||||||
|
|
||||||
if (arena_ptr->type == ARENA_STORAGE_TYPE_ALLOCATED) {
|
if (arena_ptr->type == ARENA_STORAGE_TYPE_ALLOCATED) {
|
||||||
wpOsMemFree(*arena, sizeof(WpArena) + arena_ptr->capacity);
|
wapp_os_mem_free(*arena, sizeof(Arena) + arena_ptr->capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
*arena = NULL;
|
*arena = NULL;
|
||||||
|
|||||||
@@ -11,32 +11,32 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef struct WpArena WpArena;
|
typedef struct Arena Arena;
|
||||||
|
|
||||||
#define wpMemArenaInitAllocated(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_allocated(arena_dptr, base_capacity) \
|
||||||
(wpMemArenaInitAllocatedCustom(arena_dptr, base_capacity, WP_MEM_ALLOC_RESERVE, false))
|
(wapp_mem_arena_init_allocated_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE, false))
|
||||||
#define wpMemArenaInitAllocatedCommit(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_allocated_commit(arena_dptr, base_capacity) \
|
||||||
(wpMemArenaInitAllocatedCustom(arena_dptr, base_capacity, WP_MEM_ALLOC_RESERVE | WP_MEM_ALLOC_COMMIT, false))
|
(wapp_mem_arena_init_allocated_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, false))
|
||||||
#define wpMemArenaInitAllocatedZero(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_allocated_zero(arena_dptr, base_capacity) \
|
||||||
(wpMemArenaInitAllocatedCustom(arena_dptr, base_capacity, WP_MEM_ALLOC_RESERVE, true))
|
(wapp_mem_arena_init_allocated_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE, true))
|
||||||
#define wpMemArenaInitAllocatedCommitAndZero(arena_dptr, base_capacity) \
|
#define wapp_mem_arena_init_allocated_commit_and_zero(arena_dptr, base_capacity) \
|
||||||
(wpMemArenaInitAllocatedCustom(arena_dptr, base_capacity, WP_MEM_ALLOC_RESERVE | WP_MEM_ALLOC_COMMIT, true))
|
(wapp_mem_arena_init_allocated_custom(arena_dptr, base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, true))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WpArena initialisation function. `wpMemArenaInitAllocatedCustom` provides the most
|
* Arena initialisation function. `wapp_mem_arena_init_allocated_custom` provides the most
|
||||||
* control over how the WpArena is initialised. Wrapper macros are provided for
|
* control over how the Arena is initialised. Wrapper macros are provided for
|
||||||
* easier use.
|
* easier use.
|
||||||
*/
|
*/
|
||||||
b8 wpMemArenaInitAllocatedCustom(WpArena **arena, u64 base_capacity, WpMemAllocFlags flags, b8 zero_buffer);
|
b8 wapp_mem_arena_init_allocated_custom(Arena **arena, u64 base_capacity, MemAllocFlags flags, b8 zero_buffer);
|
||||||
b8 wpMemArenaInitBuffer(WpArena **arena, u8 *buffer, u64 buffer_size);
|
b8 wapp_mem_arena_init_buffer(Arena **arena, u8 *buffer, u64 buffer_size);
|
||||||
void *wpMemArenaAlloc(WpArena *arena, u64 size);
|
void *wapp_mem_arena_alloc(Arena *arena, u64 size);
|
||||||
void *wpMemArenaAllocAligned(WpArena *arena, u64 size, u64 alignment);
|
void *wapp_mem_arena_alloc_aligned(Arena *arena, u64 size, u64 alignment);
|
||||||
void *wpMemArenaRealloc(WpArena *arena, void *ptr, u64 old_size, u64 new_size);
|
void *wapp_mem_arena_realloc(Arena *arena, void *ptr, u64 old_size, u64 new_size);
|
||||||
void *wpMemArenaReallocAligned(WpArena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment);
|
void *wapp_mem_arena_realloc_aligned(Arena *arena, void *ptr, u64 old_size, u64 new_size, u64 alignment);
|
||||||
void wpMemArenaTempBegin(WpArena *arena);
|
void wapp_mem_arena_temp_begin(Arena *arena);
|
||||||
void wpMemArenaTempEnd(WpArena *arena);
|
void wapp_mem_arena_temp_end(Arena *arena);
|
||||||
void wpMemArenaClear(WpArena *arena);
|
void wapp_mem_arena_clear(Arena *arena);
|
||||||
void wpMemArenaDestroy(WpArena **arena);
|
void wapp_mem_arena_destroy(Arena **arena);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ wp_intern void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *a
|
|||||||
wp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
wp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
||||||
void *alloc_obj);
|
void *alloc_obj);
|
||||||
|
|
||||||
WpAllocator wpMemArenaAllocatorInitWithBuffer(u8 *buffer, u64 buffer_size) {
|
WpAllocator wapp_mem_arena_allocator_init_with_buffer(u8 *buffer, u64 buffer_size) {
|
||||||
WpAllocator allocator = {0};
|
WpAllocator allocator = {0};
|
||||||
b8 initialised = wpMemArenaInitBuffer((WpArena **)(&allocator.obj), buffer, buffer_size);
|
b8 initialised = wapp_mem_arena_init_buffer((Arena **)(&allocator.obj), buffer, buffer_size);
|
||||||
if (!initialised) {
|
if (!initialised) {
|
||||||
return allocator;
|
return allocator;
|
||||||
}
|
}
|
||||||
@@ -25,9 +25,9 @@ WpAllocator wpMemArenaAllocatorInitWithBuffer(u8 *buffer, u64 buffer_size) {
|
|||||||
return allocator;
|
return allocator;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpAllocator wpMemArenaAllocatorInitCustom(u64 base_capacity, WpMemAllocFlags flags, b8 zero_buffer) {
|
WpAllocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags flags, b8 zero_buffer) {
|
||||||
WpAllocator allocator = {0};
|
WpAllocator allocator = {0};
|
||||||
b8 initialised = wpMemArenaInitAllocatedCustom((WpArena **)(&allocator.obj), base_capacity, flags, zero_buffer);
|
b8 initialised = wapp_mem_arena_init_allocated_custom((Arena **)(&allocator.obj), base_capacity, flags, zero_buffer);
|
||||||
if (!initialised) {
|
if (!initialised) {
|
||||||
return allocator;
|
return allocator;
|
||||||
}
|
}
|
||||||
@@ -37,24 +37,24 @@ WpAllocator wpMemArenaAllocatorInitCustom(u64 base_capacity, WpMemAllocFlags fla
|
|||||||
return allocator;
|
return allocator;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaAllocatorTempBegin(const WpAllocator *allocator) {
|
void wapp_mem_arena_allocator_temp_begin(const WpAllocator *allocator) {
|
||||||
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
||||||
wpMemArenaTempBegin((WpArena *)(allocator->obj));
|
wapp_mem_arena_temp_begin((Arena *)(allocator->obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaAllocatorTempEnd(const WpAllocator *allocator) {
|
void wapp_mem_arena_allocator_temp_end(const WpAllocator *allocator) {
|
||||||
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
||||||
wpMemArenaTempEnd((WpArena *)(allocator->obj));
|
wapp_mem_arena_temp_end((Arena *)(allocator->obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaAllocatorClear(WpAllocator *allocator) {
|
void wapp_mem_arena_allocator_clear(WpAllocator *allocator) {
|
||||||
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
||||||
wpMemArenaClear((WpArena *)(allocator->obj));
|
wapp_mem_arena_clear((Arena *)(allocator->obj));
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpMemArenaAllocatorDestroy(WpAllocator *allocator) {
|
void wapp_mem_arena_allocator_destroy(WpAllocator *allocator) {
|
||||||
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
wpDebugAssert(allocator != NULL, "`allocator` should not be NULL");
|
||||||
wpMemArenaDestroy((WpArena **)(&(allocator->obj)));
|
wapp_mem_arena_destroy((Arena **)(&(allocator->obj)));
|
||||||
*allocator = (WpAllocator){0};
|
*allocator = (WpAllocator){0};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,22 +66,22 @@ wp_intern void initialise_arena_allocator(WpAllocator *allocator) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wp_intern void *mem_arena_alloc(u64 size, void *alloc_obj) {
|
wp_intern void *mem_arena_alloc(u64 size, void *alloc_obj) {
|
||||||
WpArena *arena = (WpArena *)alloc_obj;
|
Arena *arena = (Arena *)alloc_obj;
|
||||||
return wpMemArenaAlloc(arena, size);
|
return wapp_mem_arena_alloc(arena, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_intern void *mem_arena_alloc_aligned(u64 size, u64 alignment, void *alloc_obj) {
|
wp_intern void *mem_arena_alloc_aligned(u64 size, u64 alignment, void *alloc_obj) {
|
||||||
WpArena *arena = (WpArena *)alloc_obj;
|
Arena *arena = (Arena *)alloc_obj;
|
||||||
return wpMemArenaAllocAligned(arena, size, alignment);
|
return wapp_mem_arena_alloc_aligned(arena, size, alignment);
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_intern void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *alloc_obj) {
|
wp_intern void *mem_arena_realloc(void *ptr, u64 old_size, u64 new_size, void *alloc_obj) {
|
||||||
WpArena *arena = (WpArena *)alloc_obj;
|
Arena *arena = (Arena *)alloc_obj;
|
||||||
return wpMemArenaRealloc(arena, ptr, old_size, new_size);
|
return wapp_mem_arena_realloc(arena, ptr, old_size, new_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
wp_intern void *mem_arena_realloc_aligned(void *ptr, u64 old_size, u64 new_size, u64 alignment,
|
||||||
void *alloc_obj) {
|
void *alloc_obj) {
|
||||||
WpArena *arena = (WpArena *)alloc_obj;
|
Arena *arena = (Arena *)alloc_obj;
|
||||||
return wpMemArenaReallocAligned(arena, ptr, old_size, new_size, alignment);
|
return wapp_mem_arena_realloc_aligned(arena, ptr, old_size, new_size, alignment);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,32 +12,32 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
#define wpMemArenaAllocatorInit(base_capacity) \
|
#define wapp_mem_arena_allocator_init(base_capacity) \
|
||||||
(wpMemArenaAllocatorInitCustom(base_capacity, WP_MEM_ALLOC_RESERVE, false))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE, false))
|
||||||
#define wpMemArenaAllocatorInitCommit(base_capacity) \
|
#define wapp_mem_arena_allocator_init_commit(base_capacity) \
|
||||||
(wpMemArenaAllocatorInitCustom(base_capacity, WP_MEM_ALLOC_RESERVE | WP_MEM_ALLOC_COMMIT, false))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, false))
|
||||||
#define wpMemArenaAllocatorInitZero(base_capacity) \
|
#define wapp_mem_arena_allocator_init_zero(base_capacity) \
|
||||||
(wpMemArenaAllocatorInitCustom(base_capacity, WP_MEM_ALLOC_RESERVE, true))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE, true))
|
||||||
#define wpMemArenaAllocatorInitCommitAndZero(base_capacity) \
|
#define wapp_mem_arena_allocator_init_commit_and_zero(base_capacity) \
|
||||||
(wpMemArenaAllocatorInitCustom(base_capacity, WP_MEM_ALLOC_RESERVE | WP_MEM_ALLOC_COMMIT, true))
|
(wapp_mem_arena_allocator_init_custom(base_capacity, WAPP_MEM_ALLOC_RESERVE | WAPP_MEM_ALLOC_COMMIT, true))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wraps a WpArena in a WpAllocator object. It attempts to initialise the WpArena
|
* Wraps an Arena in an WpAllocator object. It attempts to initialise the Arena
|
||||||
* and, if successful, defines the operations supported by it to be used by the
|
* and, if successful, defines the operations supported by it to be used by the
|
||||||
* WpAllocator.
|
* WpAllocator.
|
||||||
*
|
*
|
||||||
* An WpArena allocator only supports normal allocation and aligned allocation.
|
* An Arena allocator only supports normal allocation and aligned allocation.
|
||||||
* Reallocation, aligned reallocation and freeing aren't implemented.
|
* Reallocation, aligned reallocation and freeing aren't implemented.
|
||||||
*
|
*
|
||||||
* The `wpMemArenaAllocatorInitCustom` provides the most control over how
|
* The `wapp_mem_arena_allocator_init_custom` provides the most control over how
|
||||||
* the WpArena is initialised. Wrapper macros are provided for easier use.
|
* the Arena is initialised. Wrapper macros are provided for easier use.
|
||||||
*/
|
*/
|
||||||
WpAllocator wpMemArenaAllocatorInitCustom(u64 base_capacity, WpMemAllocFlags flags, b8 zero_buffer);
|
WpAllocator wapp_mem_arena_allocator_init_custom(u64 base_capacity, MemAllocFlags flags, b8 zero_buffer);
|
||||||
WpAllocator wpMemArenaAllocatorInitWithBuffer(u8 *buffer, u64 buffer_size);
|
WpAllocator wapp_mem_arena_allocator_init_with_buffer(u8 *buffer, u64 buffer_size);
|
||||||
void wpMemArenaAllocatorTempBegin(const WpAllocator *allocator);
|
void wapp_mem_arena_allocator_temp_begin(const WpAllocator *allocator);
|
||||||
void wpMemArenaAllocatorTempEnd(const WpAllocator *allocator);
|
void wapp_mem_arena_allocator_temp_end(const WpAllocator *allocator);
|
||||||
void wpMemArenaAllocatorClear(WpAllocator *allocator);
|
void wapp_mem_arena_allocator_clear(WpAllocator *allocator);
|
||||||
void wpMemArenaAllocatorDestroy(WpAllocator *allocator);
|
void wapp_mem_arena_allocator_destroy(WpAllocator *allocator);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
+20
-18
@@ -8,26 +8,28 @@
|
|||||||
#include "../../base/mem/allocator/mem_allocator.h"
|
#include "../../base/mem/allocator/mem_allocator.h"
|
||||||
#include "../../base/strings/str8/str8.h"
|
#include "../../base/strings/str8/str8.h"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
u32 wpCpathJoinPath(WpStr8 *dst, const WpStr8List *parts) {
|
u32 wapp_cpath_join_path(WpStr8 *dst, const WpStr8List *parts) {
|
||||||
if (!dst || !parts) {
|
if (!dst || !parts) {
|
||||||
return WP_CPATH_JOIN_RESULT_INVALID_ARGS;
|
return CPATH_JOIN_INVALID_ARGS;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (parts->node_count == 0) {
|
if (parts->node_count == 0) {
|
||||||
return WP_CPATH_JOIN_RESULT_EMPTY_PARTS;
|
return CPATH_JOIN_EMPTY_PARTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpStr8 separator = wpStr8Buf(4);
|
WpStr8 separator = wpStr8Buf(4);
|
||||||
wpStr8PushBack(&separator, WP_PATH_SEP);
|
wpStr8PushBack(&separator, WAPP_PATH_SEP);
|
||||||
|
|
||||||
u64 required_capacity = parts->node_count * separator.size + wpStr8ListTotalSize(parts);
|
u64 required_capacity = parts->node_count * separator.size + wpStr8ListTotalSize(parts);
|
||||||
if (dst->capacity < required_capacity) {
|
if (dst->capacity < required_capacity) {
|
||||||
return WP_CPATH_JOIN_RESULT_INSUFFICIENT_DST_CAPACITY;
|
return CPATH_JOIN_INSUFFICIENT_DST_CAPACITY;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle first node
|
// Handle first node
|
||||||
WpStr8 *first_node = wpDblListGet(WpStr8, parts, 0);
|
WpStr8 *first_node = wapp_dbl_list_get(WpStr8, parts, 0);
|
||||||
wpStr8CopyStr8Capped(dst, first_node);
|
wpStr8CopyStr8Capped(dst, first_node);
|
||||||
|
|
||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
@@ -36,7 +38,7 @@ u32 wpCpathJoinPath(WpStr8 *dst, const WpStr8List *parts) {
|
|||||||
u64 node_index = 1;
|
u64 node_index = 1;
|
||||||
b8 running = node_index < parts->node_count;
|
b8 running = node_index < parts->node_count;
|
||||||
while (running) {
|
while (running) {
|
||||||
node = wpDblListGet(WpStr8, parts, node_index);
|
node = wapp_dbl_list_get(WpStr8, parts, node_index);
|
||||||
if (node->size == 0) {
|
if (node->size == 0) {
|
||||||
goto CPATH_JOIN_LOOP_END;
|
goto CPATH_JOIN_LOOP_END;
|
||||||
}
|
}
|
||||||
@@ -44,7 +46,7 @@ u32 wpCpathJoinPath(WpStr8 *dst, const WpStr8List *parts) {
|
|||||||
if (dst->size > 0) {
|
if (dst->size > 0) {
|
||||||
char dst_last = wpStr8Get(dst, dst->size - 1);
|
char dst_last = wpStr8Get(dst, dst->size - 1);
|
||||||
char node_start = wpStr8Get(node, 0);
|
char node_start = wpStr8Get(node, 0);
|
||||||
b8 add_path_sep = dst_last != WP_PATH_SEP && node_start != WP_PATH_SEP;
|
b8 add_path_sep = dst_last != WAPP_PATH_SEP && node_start != WAPP_PATH_SEP;
|
||||||
|
|
||||||
if (add_path_sep) {
|
if (add_path_sep) {
|
||||||
wpStr8ConcatCapped(dst, &separator);
|
wpStr8ConcatCapped(dst, &separator);
|
||||||
@@ -58,18 +60,18 @@ CPATH_JOIN_LOOP_END:
|
|||||||
running = node_index < parts->node_count;
|
running = node_index < parts->node_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
return WP_CPATH_JOIN_RESULT_SUCCESS;
|
return CPATH_JOIN_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
WpStr8 *dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
||||||
WpStr8 *output = NULL;
|
WpStr8 *output = NULL;
|
||||||
if (!allocator || !path) {
|
if (!allocator || !path) {
|
||||||
goto RETURN_DIRUP;
|
goto RETURN_DIRUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
b8 absolute = wpStr8Get(path, 0) == WP_PATH_SEP;
|
b8 absolute = wpStr8Get(path, 0) == WAPP_PATH_SEP;
|
||||||
WpStr8 separator = wpStr8Buf(4);
|
WpStr8 separator = wpStr8Buf(4);
|
||||||
wpStr8PushBack(&separator, WP_PATH_SEP);
|
wpStr8PushBack(&separator, WAPP_PATH_SEP);
|
||||||
|
|
||||||
if (path->size == 0) {
|
if (path->size == 0) {
|
||||||
output = wpStr8AllocBuf(allocator, 16);
|
output = wpStr8AllocBuf(allocator, 16);
|
||||||
@@ -77,7 +79,7 @@ WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
|||||||
goto RETURN_DIRUP;
|
goto RETURN_DIRUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpStr8PushBack(output, absolute ? WP_PATH_SEP : '.');
|
wpStr8PushBack(output, absolute ? WAPP_PATH_SEP : '.');
|
||||||
goto RETURN_DIRUP;
|
goto RETURN_DIRUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +88,7 @@ WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
|||||||
goto RETURN_DIRUP;
|
goto RETURN_DIRUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpAllocator tmp_arena = wpMemArenaAllocatorInit(MiB(8));
|
WpAllocator tmp_arena = wapp_mem_arena_allocator_init(MiB(8));
|
||||||
if (wpMemAllocatorInvalid(&tmp_arena)) {
|
if (wpMemAllocatorInvalid(&tmp_arena)) {
|
||||||
goto RETURN_DIRUP;
|
goto RETURN_DIRUP;
|
||||||
}
|
}
|
||||||
@@ -102,10 +104,10 @@ WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
|||||||
goto LIST_CLEANUP_DIRUP;
|
goto LIST_CLEANUP_DIRUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpStr8PushBack(output, absolute ? WP_PATH_SEP : '.');
|
wpStr8PushBack(output, absolute ? WAPP_PATH_SEP : '.');
|
||||||
} else {
|
} else {
|
||||||
for (u64 i = 0; i < levels; ++i) {
|
for (u64 i = 0; i < levels; ++i) {
|
||||||
wpDblListPopBack(WpStr8, parts);
|
wapp_dbl_list_pop_back(WpStr8, parts);
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 alignment = sizeof(void *) * 2;
|
u64 alignment = sizeof(void *) * 2;
|
||||||
@@ -116,7 +118,7 @@ WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
|||||||
output = wpStr8AllocBuf(allocator, alloc_size);
|
output = wpStr8AllocBuf(allocator, alloc_size);
|
||||||
if (output) {
|
if (output) {
|
||||||
if (absolute) {
|
if (absolute) {
|
||||||
wpStr8PushBack(output, WP_PATH_SEP);
|
wpStr8PushBack(output, WAPP_PATH_SEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpStr8 *joined = wpStr8Join(&tmp_arena, parts, &separator);
|
WpStr8 *joined = wpStr8Join(&tmp_arena, parts, &separator);
|
||||||
@@ -127,7 +129,7 @@ WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
LIST_CLEANUP_DIRUP:
|
LIST_CLEANUP_DIRUP:
|
||||||
wpMemArenaAllocatorDestroy(&tmp_arena);
|
wapp_mem_arena_allocator_destroy(&tmp_arena);
|
||||||
|
|
||||||
RETURN_DIRUP:
|
RETURN_DIRUP:
|
||||||
return output;
|
return output;
|
||||||
|
|||||||
+14
-14
@@ -14,29 +14,29 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#ifdef WP_PLATFORM_POSIX
|
#ifdef WP_PLATFORM_POSIX
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#define WP_PATH_SEP '/'
|
#define WAPP_PATH_SEP '/'
|
||||||
#define WP_PATH_MAX PATH_MAX
|
#define WAPP_PATH_MAX PATH_MAX
|
||||||
#elif defined(WP_PLATFORM_WINDOWS)
|
#elif defined(WP_PLATFORM_WINDOWS)
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#define WP_PATH_SEP '\\'
|
#define WAPP_PATH_SEP '\\'
|
||||||
#define WP_PATH_MAX MAX_PATH
|
#define WAPP_PATH_MAX MAX_PATH
|
||||||
#else
|
#else
|
||||||
#error "Unrecognised platform"
|
#error "Unrecognised platform"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define wpCpathDirname(ALLOCATOR, PATH) _dirup(ALLOCATOR, PATH, 1)
|
#define wapp_cpath_dirname(ALLOCATOR, PATH) dirup(ALLOCATOR, PATH, 1)
|
||||||
#define wpCpathDirup(ALLOCATOR, PATH, COUNT) _dirup(ALLOCATOR, PATH, COUNT)
|
#define wapp_cpath_dirup(ALLOCATOR, PATH, COUNT) dirup(ALLOCATOR, PATH, COUNT)
|
||||||
|
|
||||||
typedef enum {
|
enum {
|
||||||
WP_CPATH_JOIN_RESULT_SUCCESS = 0,
|
CPATH_JOIN_SUCCESS = 0,
|
||||||
WP_CPATH_JOIN_RESULT_INVALID_ARGS,
|
CPATH_JOIN_INVALID_ARGS,
|
||||||
WP_CPATH_JOIN_RESULT_EMPTY_PARTS,
|
CPATH_JOIN_EMPTY_PARTS,
|
||||||
WP_CPATH_JOIN_RESULT_INSUFFICIENT_DST_CAPACITY,
|
CPATH_JOIN_INSUFFICIENT_DST_CAPACITY,
|
||||||
} WpCpathJoinResult;
|
};
|
||||||
|
|
||||||
WpCpathJoinResult wpCpathJoinPath(WpStr8 *dst, const WpStr8List *parts);
|
u32 wapp_cpath_join_path(WpStr8 *dst, const WpStr8List *parts);
|
||||||
WpStr8 *_dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels);
|
WpStr8 *dirup(const WpAllocator *allocator, WpStr8RO *path, u64 levels);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
+43
-43
@@ -7,77 +7,77 @@
|
|||||||
#include "../../base/array/array.h"
|
#include "../../base/array/array.h"
|
||||||
#include "../../base/strings/str8/str8.h"
|
#include "../../base/strings/str8/str8.h"
|
||||||
|
|
||||||
WpFile *wpFileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccessMode mode) {
|
WFile *wapp_file_open(const WpAllocator *allocator, WpStr8RO *filepath, FileAccessMode mode) {
|
||||||
wpDebugAssert(allocator != NULL && filepath != NULL, "`allocator` and `filepath` should not be NULL");
|
wpDebugAssert(allocator != NULL && filepath != NULL, "`allocator` and `filepath` should not be NULL");
|
||||||
wpDebugAssert(filepath->size < WP_PATH_MAX, "`filepath` exceeds max path limit.");
|
wpDebugAssert(filepath->size < WAPP_PATH_MAX, "`filepath` exceeds max path limit.");
|
||||||
return _fileOpen(allocator, filepath, mode);
|
return _file_open(allocator, filepath, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 wpFileGetCurrentPosition(WpFile *file) {
|
i64 wapp_file_get_current_position(WFile *file) {
|
||||||
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
||||||
return _fileSeek(file, 0, WP_SEEK_CURRENT);
|
return _file_seek(file, 0, WAPP_SEEK_CURRENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 wpFileSeek(WpFile *file, i64 offset, WpFileSeekOrigin origin) {
|
i64 wapp_file_seek(WFile *file, i64 offset, FileSeekOrigin origin) {
|
||||||
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
||||||
return _fileSeek(file, offset, origin);
|
return _file_seek(file, offset, origin);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 wpFileGetLength(WpFile *file) {
|
i64 wapp_file_get_length(WFile *file) {
|
||||||
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
||||||
|
|
||||||
i64 current = wpFileGetCurrentPosition(file);
|
i64 current = wapp_file_get_current_position(file);
|
||||||
|
|
||||||
_fileSeek(file, 0, WP_SEEK_END);
|
_file_seek(file, 0, WAPP_SEEK_END);
|
||||||
|
|
||||||
i64 output = wpFileGetCurrentPosition(file);
|
i64 output = wapp_file_get_current_position(file);
|
||||||
|
|
||||||
// Restore position
|
// Restore position
|
||||||
_fileSeek(file, current, WP_SEEK_START);
|
_file_seek(file, current, WAPP_SEEK_START);
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 wpFileRead(void *dst_buf, WpFile *file, u64 byte_count) {
|
u64 wapp_file_read(void *dst_buf, WFile *file, u64 byte_count) {
|
||||||
wpDebugAssert(dst_buf != NULL && file != NULL,
|
wpDebugAssert(dst_buf != NULL && file != NULL,
|
||||||
"`dst_buf` and `file` should not be NULL.");
|
"`dst_buf` and `file` should not be NULL.");
|
||||||
|
|
||||||
i64 file_length = wpFileGetLength(file);
|
i64 file_length = wapp_file_get_length(file);
|
||||||
if (file_length < 0) {
|
if (file_length < 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return _fileRead(dst_buf, byte_count, file, file_length);
|
return _file_read(dst_buf, byte_count, file, file_length);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 wpFileWrite(const void *src_buf, WpFile *file, u64 byte_count) {
|
i64 wapp_file_write(const void *src_buf, WFile *file, u64 byte_count) {
|
||||||
wpDebugAssert(src_buf != NULL && file != NULL,
|
wpDebugAssert(src_buf != NULL && file != NULL,
|
||||||
"`src_buf` and `file` should not be NULL.");
|
"`src_buf` and `file` should not be NULL.");
|
||||||
return _fileWrite(src_buf, file, byte_count);
|
return _file_write(src_buf, file, byte_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 wpFileReadStr8(WpStr8 *str, WpFile *file) {
|
u64 wapp_file_read_str8(WpStr8 *str, WFile *file) {
|
||||||
wpDebugAssert(str != NULL, "`str` should not be NULL.");
|
wpDebugAssert(str != NULL, "`str` should not be NULL.");
|
||||||
return wpFileRead((void *)(str->buf), file, str->size);
|
return wapp_file_read((void *)(str->buf), file, str->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 wpFileWriteStr8(WpStr8RO *str, WpFile *file) {
|
i64 wapp_file_write_str8(WpStr8RO *str, WFile *file) {
|
||||||
wpDebugAssert(str != NULL, "`str` should not be NULL.");
|
wpDebugAssert(str != NULL, "`str` should not be NULL.");
|
||||||
return wpFileWrite((void *)(str->buf), file, str->size);
|
return wapp_file_write((void *)(str->buf), file, str->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 wpFileReadArray(WpArray dst_buf, WpFile *file, u64 item_count) {
|
u64 wapp_file_read_array(GenericArray dst_buf, WFile *file, u64 item_count) {
|
||||||
wpDebugAssert(dst_buf != NULL && file != NULL,
|
wpDebugAssert(dst_buf != NULL && file != NULL,
|
||||||
"`dst_buf` and `file` should not be NULL.");
|
"`dst_buf` and `file` should not be NULL.");
|
||||||
|
|
||||||
i64 _file_length = wpFileGetLength(file);
|
i64 _file_length = wapp_file_get_length(file);
|
||||||
if (_file_length < 0) {
|
if (_file_length < 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 file_length = (u64)_file_length;
|
u64 file_length = (u64)_file_length;
|
||||||
u64 item_size = wpArrayItemSize(dst_buf);
|
u64 item_size = wapp_array_item_size(dst_buf);
|
||||||
u64 dst_byte_capacity = wpArrayCapacity(dst_buf) * item_size;
|
u64 dst_byte_capacity = wapp_array_capacity(dst_buf) * item_size;
|
||||||
u64 req_byte_count = item_count * item_size;
|
u64 req_byte_count = item_count * item_size;
|
||||||
u64 copy_byte_count = 0;
|
u64 copy_byte_count = 0;
|
||||||
|
|
||||||
@@ -87,26 +87,26 @@ u64 wpFileReadArray(WpArray dst_buf, WpFile *file, u64 item_count) {
|
|||||||
copy_byte_count = file_length <= dst_byte_capacity ? file_length : dst_byte_capacity;
|
copy_byte_count = file_length <= dst_byte_capacity ? file_length : dst_byte_capacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 byte_count = _fileRead(dst_buf, copy_byte_count, file, file_length);
|
u64 byte_count = _file_read(dst_buf, copy_byte_count, file, file_length);
|
||||||
if (byte_count == 0) {
|
if (byte_count == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpArraySetCount(dst_buf, byte_count / item_size);
|
wapp_array_set_count(dst_buf, byte_count / item_size);
|
||||||
|
|
||||||
return wpArrayCount(dst_buf);
|
return wapp_array_count(dst_buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 wpFileWriteArray(const WpArray src_buf, WpFile *file, u64 item_count) {
|
i64 wapp_file_write_array(const GenericArray src_buf, WFile *file, u64 item_count) {
|
||||||
wpDebugAssert(src_buf != NULL && file != NULL,
|
wpDebugAssert(src_buf != NULL && file != NULL,
|
||||||
"`src_buf` and `file` should not be NULL.");
|
"`src_buf` and `file` should not be NULL.");
|
||||||
|
|
||||||
u64 item_size = wpArrayItemSize(src_buf);
|
u64 item_size = wapp_array_item_size(src_buf);
|
||||||
u64 src_byte_count = wpArrayCount(src_buf) * item_size;
|
u64 src_byte_count = wapp_array_count(src_buf) * item_size;
|
||||||
u64 req_byte_count = item_count * item_size;
|
u64 req_byte_count = item_count * item_size;
|
||||||
u64 to_copy = req_byte_count <= src_byte_count ? req_byte_count : src_byte_count;
|
u64 to_copy = req_byte_count <= src_byte_count ? req_byte_count : src_byte_count;
|
||||||
|
|
||||||
i64 bytes_written = _fileWrite(src_buf, file, to_copy);
|
i64 bytes_written = _file_write(src_buf, file, to_copy);
|
||||||
if (bytes_written < 0) {
|
if (bytes_written < 0) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -114,26 +114,26 @@ i64 wpFileWriteArray(const WpArray src_buf, WpFile *file, u64 item_count) {
|
|||||||
return (u64)bytes_written / item_size;
|
return (u64)bytes_written / item_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 wpFileFlush(WpFile *file) {
|
i32 wapp_file_flush(WFile *file) {
|
||||||
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
||||||
return _fileFlush(file);
|
return _file_flush(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 wpFileClose(WpFile *file) {
|
i32 wapp_file_close(WFile *file) {
|
||||||
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
wpDebugAssert(file != NULL, "`file` should not be NULL.");
|
||||||
return _fileClose(file);
|
return _file_close(file);
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 wpFileRename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
i32 wapp_file_rename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
||||||
wpDebugAssert(old_filepath != NULL && new_filepath != NULL,
|
wpDebugAssert(old_filepath != NULL && new_filepath != NULL,
|
||||||
"`old_filepath` and `new_filepath` should not be NULL");
|
"`old_filepath` and `new_filepath` should not be NULL");
|
||||||
wpDebugAssert(old_filepath->size < WP_PATH_MAX, "`old_filepath` exceeds max path limit.");
|
wpDebugAssert(old_filepath->size < WAPP_PATH_MAX, "`old_filepath` exceeds max path limit.");
|
||||||
wpDebugAssert(new_filepath->size < WP_PATH_MAX, "`new_filepath` exceeds max path limit.");
|
wpDebugAssert(new_filepath->size < WAPP_PATH_MAX, "`new_filepath` exceeds max path limit.");
|
||||||
return _fileRename(old_filepath, new_filepath);
|
return _file_rename(old_filepath, new_filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 wpFileRemove(WpStr8RO *filepath) {
|
i32 wapp_file_remove(WpStr8RO *filepath) {
|
||||||
wpDebugAssert(filepath != NULL, "`filepath` should not be NULL");
|
wpDebugAssert(filepath != NULL, "`filepath` should not be NULL");
|
||||||
wpDebugAssert(filepath->size < WP_PATH_MAX, "`filepath` exceeds max path limit.");
|
wpDebugAssert(filepath->size < WAPP_PATH_MAX, "`filepath` exceeds max path limit.");
|
||||||
return _fileRemove(filepath);
|
return _file_remove(filepath);
|
||||||
}
|
}
|
||||||
|
|||||||
+44
-44
@@ -11,64 +11,64 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef struct WpFile WpFile;
|
typedef struct WFile WFile;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WP_ACCESS_READ, // Equivalent to r
|
WAPP_ACCESS_READ, // Equivalent to r
|
||||||
WP_ACCESS_WRITE, // Equivalent to w
|
WAPP_ACCESS_WRITE, // Equivalent to w
|
||||||
WP_ACCESS_APPEND, // Equivalent to a
|
WAPP_ACCESS_APPEND, // Equivalent to a
|
||||||
WP_ACCESS_READ_EX, // Equivalent to r+
|
WAPP_ACCESS_READ_EX, // Equivalent to r+
|
||||||
WP_ACCESS_WRITE_EX, // Equivalent to w+
|
WAPP_ACCESS_WRITE_EX, // Equivalent to w+
|
||||||
WP_ACCESS_APPEND_EX, // Equivalent to a+
|
WAPP_ACCESS_APPEND_EX, // Equivalent to a+
|
||||||
WP_ACCESS_WRITE_FAIL_ON_EXIST, // Equivalent to wx
|
WAPP_ACCESS_WRITE_FAIL_ON_EXIST, // Equivalent to wx
|
||||||
WP_ACCESS_WRITE_FAIL_ON_EXIST_EX, // Equivalent to wx+
|
WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX, // Equivalent to wx+
|
||||||
|
|
||||||
COUNT_FILE_ACCESS_MODE,
|
FILE_ACCESS_MODE_COUNT,
|
||||||
} WpFileAccessMode;
|
} FileAccessMode;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WP_SEEK_START,
|
WAPP_SEEK_START,
|
||||||
WP_SEEK_CURRENT,
|
WAPP_SEEK_CURRENT,
|
||||||
WP_SEEK_END,
|
WAPP_SEEK_END,
|
||||||
|
|
||||||
COUNT_FILE_SEEK_ORIGIN,
|
FILE_SEEK_ORIGIN_COUNT,
|
||||||
} WpFileSeekOrigin;
|
} FileSeekOrigin;
|
||||||
|
|
||||||
// Return value should not be cached as it's not guaranteed to remain the same. Always call
|
// Return value should not be cached as it's not guaranteed to remain the same. Always call
|
||||||
// wpFileStdin to get the standard input stream
|
// wapp_file_stdin to get the standard input stream
|
||||||
wp_extern WpFile *wpFileStdin(void);
|
wp_extern WFile *wapp_file_stdin(void);
|
||||||
|
|
||||||
// Return value should not be cached as it's not guaranteed to remain the same. Always call
|
// Return value should not be cached as it's not guaranteed to remain the same. Always call
|
||||||
// wpFileStdout to get the standard output stream
|
// wapp_file_stdout to get the standard output stream
|
||||||
wp_extern WpFile *wpFileStdout(void);
|
wp_extern WFile *wapp_file_stdout(void);
|
||||||
|
|
||||||
// Return value should not be cached as it's not guaranteed to remain the same. Always call
|
// Return value should not be cached as it's not guaranteed to remain the same. Always call
|
||||||
// wpFileStderr to get the standard error stream
|
// wapp_file_stderr to get the standard error stream
|
||||||
wp_extern WpFile *wpFileStderr(void);
|
wp_extern WFile *wapp_file_stderr(void);
|
||||||
|
|
||||||
WpFile *wpFileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccessMode mode);
|
WFile *wapp_file_open(const WpAllocator *allocator, WpStr8RO *filepath, FileAccessMode mode);
|
||||||
i64 wpFileGetCurrentPosition(WpFile *file);
|
i64 wapp_file_get_current_position(WFile *file);
|
||||||
i64 wpFileSeek(WpFile *file, i64 offset, WpFileSeekOrigin origin);
|
i64 wapp_file_seek(WFile *file, i64 offset, FileSeekOrigin origin);
|
||||||
i64 wpFileGetLength(WpFile *file);
|
i64 wapp_file_get_length(WFile *file);
|
||||||
u64 wpFileRead(void *dst_buf, WpFile *file, u64 byte_count);
|
u64 wapp_file_read(void *dst_buf, WFile *file, u64 byte_count);
|
||||||
i64 wpFileWrite(const void *src_buf, WpFile *file, u64 byte_count);
|
i64 wapp_file_write(const void *src_buf, WFile *file, u64 byte_count);
|
||||||
u64 wpFileReadStr8(WpStr8 *str, WpFile *file);
|
u64 wapp_file_read_str8(WpStr8 *str, WFile *file);
|
||||||
i64 wpFileWriteStr8(WpStr8RO *str, WpFile *file);
|
i64 wapp_file_write_str8(WpStr8RO *str, WFile *file);
|
||||||
u64 wpFileReadArray(WpArray dst_buf, WpFile *file, u64 item_count);
|
u64 wapp_file_read_array(GenericArray dst_buf, WFile *file, u64 item_count);
|
||||||
i64 wpFileWriteArray(const WpArray src_buf, WpFile *file, u64 item_count);
|
i64 wapp_file_write_array(const GenericArray src_buf, WFile *file, u64 item_count);
|
||||||
i32 wpFileFlush(WpFile *file);
|
i32 wapp_file_flush(WFile *file);
|
||||||
i32 wpFileClose(WpFile *file);
|
i32 wapp_file_close(WFile *file);
|
||||||
i32 wpFileRename(WpStr8RO *old_filepath, WpStr8RO *new_filepath);
|
i32 wapp_file_rename(WpStr8RO *old_filepath, WpStr8RO *new_filepath);
|
||||||
i32 wpFileRemove(WpStr8RO *filepath);
|
i32 wapp_file_remove(WpStr8RO *filepath);
|
||||||
|
|
||||||
wp_extern WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccessMode mode);
|
wp_extern WFile *_file_open(const WpAllocator *allocator, WpStr8RO *filepath, FileAccessMode mode);
|
||||||
wp_extern i64 _fileSeek(WpFile *file, i64 offset, WpFileSeekOrigin origin);
|
wp_extern i64 _file_seek(WFile *file, i64 offset, FileSeekOrigin origin);
|
||||||
wp_extern u64 _fileRead(void *dst_buf, u64 byte_count, WpFile *file, u64 file_length);
|
wp_extern u64 _file_read(void *dst_buf, u64 byte_count, WFile *file, u64 file_length);
|
||||||
wp_extern i64 _fileWrite(const void *src_buf, WpFile *file, u64 byte_count);
|
wp_extern i64 _file_write(const void *src_buf, WFile *file, u64 byte_count);
|
||||||
wp_extern i32 _fileFlush(WpFile *file);
|
wp_extern i32 _file_flush(WFile *file);
|
||||||
wp_extern i32 _fileClose(WpFile *file);
|
wp_extern i32 _file_close(WFile *file);
|
||||||
wp_extern i32 _fileRename(WpStr8RO *old_filepath, WpStr8RO *new_filepath);
|
wp_extern i32 _file_rename(WpStr8RO *old_filepath, WpStr8RO *new_filepath);
|
||||||
wp_extern i32 _fileRemove(WpStr8RO *filepath);
|
wp_extern i32 _file_remove(WpStr8RO *filepath);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -21,52 +21,52 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
|
||||||
wp_intern i32 file_flags[COUNT_FILE_ACCESS_MODE] = {
|
wp_intern i32 file_flags[FILE_ACCESS_MODE_COUNT] = {
|
||||||
[WP_ACCESS_READ] = O_RDONLY,
|
[WAPP_ACCESS_READ] = O_RDONLY,
|
||||||
[WP_ACCESS_WRITE] = O_WRONLY | O_CREAT,
|
[WAPP_ACCESS_WRITE] = O_WRONLY | O_CREAT,
|
||||||
[WP_ACCESS_APPEND] = O_WRONLY | O_APPEND | O_CREAT,
|
[WAPP_ACCESS_APPEND] = O_WRONLY | O_APPEND | O_CREAT,
|
||||||
[WP_ACCESS_READ_EX] = O_RDWR,
|
[WAPP_ACCESS_READ_EX] = O_RDWR,
|
||||||
[WP_ACCESS_WRITE_EX] = O_RDWR | O_CREAT,
|
[WAPP_ACCESS_WRITE_EX] = O_RDWR | O_CREAT,
|
||||||
[WP_ACCESS_APPEND_EX] = O_RDWR | O_APPEND | O_CREAT,
|
[WAPP_ACCESS_APPEND_EX] = O_RDWR | O_APPEND | O_CREAT,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST] = O_WRONLY | O_CREAT | O_EXCL,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST] = O_WRONLY | O_CREAT | O_EXCL,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = O_RDWR | O_CREAT | O_EXCL,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = O_RDWR | O_CREAT | O_EXCL,
|
||||||
};
|
};
|
||||||
|
|
||||||
wp_intern mode_t file_modes[COUNT_FILE_ACCESS_MODE] = {
|
wp_intern mode_t file_modes[FILE_ACCESS_MODE_COUNT] = {
|
||||||
[WP_ACCESS_READ] = 0,
|
[WAPP_ACCESS_READ] = 0,
|
||||||
[WP_ACCESS_WRITE] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
[WAPP_ACCESS_WRITE] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
[WP_ACCESS_APPEND] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
[WAPP_ACCESS_APPEND] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
[WP_ACCESS_READ_EX] = 0,
|
[WAPP_ACCESS_READ_EX] = 0,
|
||||||
[WP_ACCESS_WRITE_EX] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
[WAPP_ACCESS_WRITE_EX] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
[WP_ACCESS_APPEND_EX] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
[WAPP_ACCESS_APPEND_EX] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
|
||||||
};
|
};
|
||||||
|
|
||||||
wp_intern i32 file_seek_origins[COUNT_FILE_SEEK_ORIGIN] = {
|
wp_intern i32 file_seek_origins[FILE_SEEK_ORIGIN_COUNT] = {
|
||||||
[WP_SEEK_START] = SEEK_SET,
|
[WAPP_SEEK_START] = SEEK_SET,
|
||||||
[WP_SEEK_CURRENT] = SEEK_CUR,
|
[WAPP_SEEK_CURRENT] = SEEK_CUR,
|
||||||
[WP_SEEK_END] = SEEK_END,
|
[WAPP_SEEK_END] = SEEK_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
WpFile *wpFileStdin(void) {
|
WFile *wapp_file_stdin(void) {
|
||||||
wp_persist WpFile _stdin = { .fd = STDIN_FILENO };
|
wp_persist WFile _stdin = { .fd = STDIN_FILENO };
|
||||||
return &_stdin;
|
return &_stdin;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *wpFileStdout(void) {
|
WFile *wapp_file_stdout(void) {
|
||||||
wp_persist WpFile _stdout = { .fd = STDOUT_FILENO };
|
wp_persist WFile _stdout = { .fd = STDOUT_FILENO };
|
||||||
return &_stdout;
|
return &_stdout;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *wpFileStderr(void) {
|
WFile *wapp_file_stderr(void) {
|
||||||
wp_persist WpFile _stderr = { .fd = STDERR_FILENO };
|
wp_persist WFile _stderr = { .fd = STDERR_FILENO };
|
||||||
return &_stderr;
|
return &_stderr;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccessMode mode) {
|
WFile *_file_open(const WpAllocator *allocator, WpStr8RO *filepath, FileAccessMode mode) {
|
||||||
wp_persist c8 tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 tmp[WAPP_PATH_MAX] = {0};
|
||||||
memset(tmp, 0, WP_PATH_MAX);
|
memset(tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(tmp, filepath->buf, filepath->size);
|
memcpy(tmp, filepath->buf, filepath->size);
|
||||||
|
|
||||||
i32 fd = open((const char *)tmp, file_flags[mode], file_modes[mode]);
|
i32 fd = open((const char *)tmp, file_flags[mode], file_modes[mode]);
|
||||||
@@ -74,7 +74,7 @@ WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccess
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *output = wpMemAllocatorAlloc(allocator, sizeof(WpFile));
|
WFile *output = wpMemAllocatorAlloc(allocator, sizeof(WFile));
|
||||||
if (output) {
|
if (output) {
|
||||||
output->fd = fd;
|
output->fd = fd;
|
||||||
}
|
}
|
||||||
@@ -82,11 +82,11 @@ WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccess
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 _fileSeek(WpFile *file, i64 offset, WpFileSeekOrigin origin) {
|
i64 _file_seek(WFile *file, i64 offset, FileSeekOrigin origin) {
|
||||||
return lseek64(file->fd, offset, file_seek_origins[origin]);
|
return lseek64(file->fd, offset, file_seek_origins[origin]);
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 _fileRead(void *dst_buf, u64 byte_count, WpFile *file, u64 file_length) {
|
u64 _file_read(void *dst_buf, u64 byte_count, WFile *file, u64 file_length) {
|
||||||
u64 copy_byte_count = file_length <= byte_count ? file_length : byte_count;
|
u64 copy_byte_count = file_length <= byte_count ? file_length : byte_count;
|
||||||
|
|
||||||
i64 count = read(file->fd, dst_buf, copy_byte_count);
|
i64 count = read(file->fd, dst_buf, copy_byte_count);
|
||||||
@@ -95,37 +95,37 @@ u64 _fileRead(void *dst_buf, u64 byte_count, WpFile *file, u64 file_length) {
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 _fileWrite(const void *src_buf, WpFile *file, u64 byte_count) {
|
i64 _file_write(const void *src_buf, WFile *file, u64 byte_count) {
|
||||||
return write(file->fd, src_buf, byte_count);
|
return write(file->fd, src_buf, byte_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileFlush(WpFile *file) {
|
i32 _file_flush(WFile *file) {
|
||||||
return fsync(file->fd);
|
return fsync(file->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileClose(WpFile *file) {
|
i32 _file_close(WFile *file) {
|
||||||
return close(file->fd);
|
return close(file->fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileRename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
i32 _file_rename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
||||||
wp_persist c8 old_tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 old_tmp[WAPP_PATH_MAX] = {0};
|
||||||
wp_persist c8 new_tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 new_tmp[WAPP_PATH_MAX] = {0};
|
||||||
memset(old_tmp, 0, WP_PATH_MAX);
|
memset(old_tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(old_tmp, old_filepath->buf, old_filepath->size);
|
memcpy(old_tmp, old_filepath->buf, old_filepath->size);
|
||||||
memset(new_tmp, 0, WP_PATH_MAX);
|
memset(new_tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(new_tmp, new_filepath->buf, new_filepath->size);
|
memcpy(new_tmp, new_filepath->buf, new_filepath->size);
|
||||||
|
|
||||||
i32 link_result = link((const char *)old_tmp, (const char *)new_tmp);
|
i32 link_result = link((const char *)old_tmp, (const char *)new_tmp);
|
||||||
if (link_result == 0) {
|
if (link_result == 0) {
|
||||||
_fileRemove(old_filepath);
|
_file_remove(old_filepath);
|
||||||
}
|
}
|
||||||
|
|
||||||
return link_result;
|
return link_result;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileRemove(WpStr8RO *filepath) {
|
i32 _file_remove(WpStr8RO *filepath) {
|
||||||
wp_persist c8 tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 tmp[WAPP_PATH_MAX] = {0};
|
||||||
memset(tmp, 0, WP_PATH_MAX);
|
memset(tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(tmp, filepath->buf, filepath->size);
|
memcpy(tmp, filepath->buf, filepath->size);
|
||||||
|
|
||||||
return unlink((const char *)tmp);
|
return unlink((const char *)tmp);
|
||||||
|
|||||||
@@ -12,9 +12,9 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#ifdef WP_PLATFORM_POSIX
|
#ifdef WP_PLATFORM_POSIX
|
||||||
|
|
||||||
#define WP_END_OF_LINE "\n"
|
#define END_OF_LINE "\n"
|
||||||
|
|
||||||
struct WpFile {
|
struct WFile {
|
||||||
i32 fd;
|
i32 fd;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+54
-54
@@ -15,66 +15,66 @@
|
|||||||
#include <fileapi.h>
|
#include <fileapi.h>
|
||||||
#include <intsafe.h>
|
#include <intsafe.h>
|
||||||
|
|
||||||
wp_intern DWORD file_accesses[COUNT_FILE_ACCESS_MODE] = {
|
wp_intern DWORD file_accesses[FILE_ACCESS_MODE_COUNT] = {
|
||||||
[WP_ACCESS_READ] = FILE_READ_DATA,
|
[WAPP_ACCESS_READ] = FILE_READ_DATA,
|
||||||
[WP_ACCESS_WRITE] = FILE_WRITE_DATA,
|
[WAPP_ACCESS_WRITE] = FILE_WRITE_DATA,
|
||||||
[WP_ACCESS_APPEND] = FILE_APPEND_DATA,
|
[WAPP_ACCESS_APPEND] = FILE_APPEND_DATA,
|
||||||
[WP_ACCESS_READ_EX] = FILE_READ_DATA | FILE_WRITE_DATA,
|
[WAPP_ACCESS_READ_EX] = FILE_READ_DATA | FILE_WRITE_DATA,
|
||||||
[WP_ACCESS_WRITE_EX] = FILE_READ_DATA | FILE_WRITE_DATA,
|
[WAPP_ACCESS_WRITE_EX] = FILE_READ_DATA | FILE_WRITE_DATA,
|
||||||
[WP_ACCESS_APPEND_EX] = FILE_READ_DATA | FILE_APPEND_DATA,
|
[WAPP_ACCESS_APPEND_EX] = FILE_READ_DATA | FILE_APPEND_DATA,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST] = FILE_WRITE_DATA,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST] = FILE_WRITE_DATA,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = FILE_READ_DATA | FILE_WRITE_DATA,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = FILE_READ_DATA | FILE_WRITE_DATA,
|
||||||
};
|
};
|
||||||
|
|
||||||
wp_intern DWORD creation_dispositions[COUNT_FILE_ACCESS_MODE] = {
|
wp_intern DWORD creation_dispositions[FILE_ACCESS_MODE_COUNT] = {
|
||||||
[WP_ACCESS_READ] = OPEN_EXISTING,
|
[WAPP_ACCESS_READ] = OPEN_EXISTING,
|
||||||
[WP_ACCESS_WRITE] = CREATE_ALWAYS,
|
[WAPP_ACCESS_WRITE] = CREATE_ALWAYS,
|
||||||
[WP_ACCESS_APPEND] = OPEN_ALWAYS,
|
[WAPP_ACCESS_APPEND] = OPEN_ALWAYS,
|
||||||
[WP_ACCESS_READ_EX] = OPEN_EXISTING,
|
[WAPP_ACCESS_READ_EX] = OPEN_EXISTING,
|
||||||
[WP_ACCESS_WRITE_EX] = CREATE_ALWAYS,
|
[WAPP_ACCESS_WRITE_EX] = CREATE_ALWAYS,
|
||||||
[WP_ACCESS_APPEND_EX] = OPEN_ALWAYS,
|
[WAPP_ACCESS_APPEND_EX] = OPEN_ALWAYS,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST] = CREATE_NEW,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST] = CREATE_NEW,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = CREATE_NEW,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = CREATE_NEW,
|
||||||
};
|
};
|
||||||
|
|
||||||
wp_intern DWORD sharing_modes[COUNT_FILE_ACCESS_MODE] = {
|
wp_intern DWORD sharing_modes[FILE_ACCESS_MODE_COUNT] = {
|
||||||
[WP_ACCESS_READ] = FILE_SHARE_READ | FILE_SHARE_WRITE,
|
[WAPP_ACCESS_READ] = FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||||
[WP_ACCESS_WRITE] = FILE_SHARE_READ,
|
[WAPP_ACCESS_WRITE] = FILE_SHARE_READ,
|
||||||
[WP_ACCESS_APPEND] = FILE_SHARE_READ,
|
[WAPP_ACCESS_APPEND] = FILE_SHARE_READ,
|
||||||
[WP_ACCESS_READ_EX] = FILE_SHARE_READ | FILE_SHARE_WRITE,
|
[WAPP_ACCESS_READ_EX] = FILE_SHARE_READ | FILE_SHARE_WRITE,
|
||||||
[WP_ACCESS_WRITE_EX] = FILE_SHARE_READ,
|
[WAPP_ACCESS_WRITE_EX] = FILE_SHARE_READ,
|
||||||
[WP_ACCESS_APPEND_EX] = FILE_SHARE_READ,
|
[WAPP_ACCESS_APPEND_EX] = FILE_SHARE_READ,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST] = FILE_SHARE_READ,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST] = FILE_SHARE_READ,
|
||||||
[WP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = FILE_SHARE_READ,
|
[WAPP_ACCESS_WRITE_FAIL_ON_EXIST_EX] = FILE_SHARE_READ,
|
||||||
};
|
};
|
||||||
|
|
||||||
wp_intern DWORD file_seek_origins[COUNT_FILE_SEEK_ORIGIN] = {
|
wp_intern DWORD file_seek_origins[FILE_SEEK_ORIGIN_COUNT] = {
|
||||||
[WP_SEEK_START] = FILE_BEGIN,
|
[WAPP_SEEK_START] = FILE_BEGIN,
|
||||||
[WP_SEEK_CURRENT] = FILE_CURRENT,
|
[WAPP_SEEK_CURRENT] = FILE_CURRENT,
|
||||||
[WP_SEEK_END] = FILE_END,
|
[WAPP_SEEK_END] = FILE_END,
|
||||||
};
|
};
|
||||||
|
|
||||||
WpFile *wpFileStdin(void) {
|
WFile *wapp_file_stdin(void) {
|
||||||
wp_persist WpFile _stdin = { .fh = INVALID_HANDLE_VALUE };
|
wp_persist WFile _stdin = { .fh = INVALID_HANDLE_VALUE };
|
||||||
_stdin.fh = GetStdHandle(STD_INPUT_HANDLE);
|
_stdin.fh = GetStdHandle(STD_INPUT_HANDLE);
|
||||||
return &_stdin;
|
return &_stdin;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *wpFileStdout(void) {
|
WFile *wapp_file_stdout(void) {
|
||||||
wp_persist WpFile _stdout = { .fh = INVALID_HANDLE_VALUE };
|
wp_persist WFile _stdout = { .fh = INVALID_HANDLE_VALUE };
|
||||||
_stdout.fh = GetStdHandle(STD_OUTPUT_HANDLE);
|
_stdout.fh = GetStdHandle(STD_OUTPUT_HANDLE);
|
||||||
return &_stdout;
|
return &_stdout;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *wpFileStderr(void) {
|
WFile *wapp_file_stderr(void) {
|
||||||
wp_persist WpFile _stderr = { .fh = INVALID_HANDLE_VALUE };
|
wp_persist WFile _stderr = { .fh = INVALID_HANDLE_VALUE };
|
||||||
_stderr.fh = GetStdHandle(STD_ERROR_HANDLE);
|
_stderr.fh = GetStdHandle(STD_ERROR_HANDLE);
|
||||||
return &_stderr;
|
return &_stderr;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccessMode mode) {
|
WFile *_file_open(const WpAllocator *allocator, WpStr8RO *filepath, FileAccessMode mode) {
|
||||||
wp_persist c8 tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 tmp[WAPP_PATH_MAX] = {0};
|
||||||
memset(tmp, 0, WP_PATH_MAX);
|
memset(tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(tmp, filepath->buf, filepath->size);
|
memcpy(tmp, filepath->buf, filepath->size);
|
||||||
|
|
||||||
HANDLE fh = CreateFileA((LPCSTR)tmp,
|
HANDLE fh = CreateFileA((LPCSTR)tmp,
|
||||||
@@ -88,7 +88,7 @@ WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccess
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
WpFile *output = wpMemAllocatorAlloc(allocator, sizeof(WpFile));
|
WFile *output = wpMemAllocatorAlloc(allocator, sizeof(WFile));
|
||||||
if (output) {
|
if (output) {
|
||||||
output->fh = fh;
|
output->fh = fh;
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ WpFile *_fileOpen(const WpAllocator *allocator, WpStr8RO *filepath, WpFileAccess
|
|||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 _fileSeek(WpFile *file, i64 offset, WpFileSeekOrigin origin) {
|
i64 _file_seek(WFile *file, i64 offset, FileSeekOrigin origin) {
|
||||||
LARGE_INTEGER distance = {0};
|
LARGE_INTEGER distance = {0};
|
||||||
LARGE_INTEGER output = {0};
|
LARGE_INTEGER output = {0};
|
||||||
|
|
||||||
@@ -109,7 +109,7 @@ i64 _fileSeek(WpFile *file, i64 offset, WpFileSeekOrigin origin) {
|
|||||||
return output.QuadPart;
|
return output.QuadPart;
|
||||||
}
|
}
|
||||||
|
|
||||||
u64 _fileRead(void* dst_buf, u64 byte_count, WpFile* file, u64 file_length) {
|
u64 _file_read(void* dst_buf, u64 byte_count, WFile* file, u64 file_length) {
|
||||||
u64 copy_byte_count = file_length <= byte_count ? file_length : byte_count;
|
u64 copy_byte_count = file_length <= byte_count ? file_length : byte_count;
|
||||||
wpDebugAssert(copy_byte_count <= DWORD_MAX, "Attempting to read large number of bytes at once");
|
wpDebugAssert(copy_byte_count <= DWORD_MAX, "Attempting to read large number of bytes at once");
|
||||||
|
|
||||||
@@ -121,7 +121,7 @@ u64 _fileRead(void* dst_buf, u64 byte_count, WpFile* file, u64 file_length) {
|
|||||||
return (u64)read_count;
|
return (u64)read_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
i64 _fileWrite(const void *src_buf, WpFile *file, u64 byte_count) {
|
i64 _file_write(const void *src_buf, WFile *file, u64 byte_count) {
|
||||||
wpDebugAssert(byte_count <= DWORD_MAX, "Attempting to write large number of bytes at once");
|
wpDebugAssert(byte_count <= DWORD_MAX, "Attempting to write large number of bytes at once");
|
||||||
|
|
||||||
DWORD write_count = 0;
|
DWORD write_count = 0;
|
||||||
@@ -131,7 +131,7 @@ i64 _fileWrite(const void *src_buf, WpFile *file, u64 byte_count) {
|
|||||||
return (i64)write_count;
|
return (i64)write_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileFlush(WpFile *file) {
|
i32 _file_flush(WFile *file) {
|
||||||
if (!FlushFileBuffers(file->fh)) {
|
if (!FlushFileBuffers(file->fh)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -139,7 +139,7 @@ i32 _fileFlush(WpFile *file) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileClose(WpFile *file) {
|
i32 _file_close(WFile *file) {
|
||||||
if (!CloseHandle(file->fh)) {
|
if (!CloseHandle(file->fh)) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@@ -147,12 +147,12 @@ i32 _fileClose(WpFile *file) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileRename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
i32 _file_rename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
||||||
wp_persist c8 old_tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 old_tmp[WAPP_PATH_MAX] = {0};
|
||||||
wp_persist c8 new_tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 new_tmp[WAPP_PATH_MAX] = {0};
|
||||||
memset(old_tmp, 0, WP_PATH_MAX);
|
memset(old_tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(old_tmp, old_filepath->buf, old_filepath->size);
|
memcpy(old_tmp, old_filepath->buf, old_filepath->size);
|
||||||
memset(new_tmp, 0, WP_PATH_MAX);
|
memset(new_tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(new_tmp, new_filepath->buf, new_filepath->size);
|
memcpy(new_tmp, new_filepath->buf, new_filepath->size);
|
||||||
|
|
||||||
if (!MoveFile((LPCSTR)old_tmp, (LPCSTR)new_tmp)) {
|
if (!MoveFile((LPCSTR)old_tmp, (LPCSTR)new_tmp)) {
|
||||||
@@ -162,9 +162,9 @@ i32 _fileRename(WpStr8RO *old_filepath, WpStr8RO *new_filepath) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 _fileRemove(WpStr8RO *filepath) {
|
i32 _file_remove(WpStr8RO *filepath) {
|
||||||
wp_persist c8 tmp[WP_PATH_MAX] = {0};
|
wp_persist c8 tmp[WAPP_PATH_MAX] = {0};
|
||||||
memset(tmp, 0, WP_PATH_MAX);
|
memset(tmp, 0, WAPP_PATH_MAX);
|
||||||
memcpy(tmp, filepath->buf, filepath->size);
|
memcpy(tmp, filepath->buf, filepath->size);
|
||||||
|
|
||||||
if (!DeleteFile((LPCSTR)tmp)) {
|
if (!DeleteFile((LPCSTR)tmp)) {
|
||||||
|
|||||||
@@ -12,13 +12,13 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#ifdef WP_PLATFORM_WINDOWS
|
#ifdef WP_PLATFORM_WINDOWS
|
||||||
|
|
||||||
#define WP_END_OF_LINE "\r\n"
|
#define END_OF_LINE "\r\n"
|
||||||
|
|
||||||
#define WIN32_LEAN_AND_MEAN
|
#define WIN32_LEAN_AND_MEAN
|
||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <fileapi.h>
|
#include <fileapi.h>
|
||||||
|
|
||||||
struct WpFile {
|
struct WFile {
|
||||||
HANDLE fh;
|
HANDLE fh;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -15,16 +15,16 @@
|
|||||||
#error "Unrecognised platform"
|
#error "Unrecognised platform"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void *wpOsMemAlloc(void *addr, u64 size, WpMemAccess access, WpMemAllocFlags flags, WpMemInitType type) {
|
void *wapp_os_mem_alloc(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
||||||
void *output = _osMemAllocate(addr, size, access, flags, type);
|
void *output = os_mem_allocate(addr, size, access, flags, type);
|
||||||
|
|
||||||
if (type == WP_MEM_INIT_INITIALISED) {
|
if (type == WAPP_MEM_INIT_INITIALISED) {
|
||||||
memset(output, 0, size);
|
memset(output, 0, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpOsMemFree(void *ptr, u64 size) {
|
void wapp_os_mem_free(void *ptr, u64 size) {
|
||||||
_osMemFree(ptr, size);
|
os_mem_free(ptr, size);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -20,11 +20,11 @@ BEGIN_C_LINKAGE
|
|||||||
#error "Unrecognised platform"
|
#error "Unrecognised platform"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void *wpOsMemAlloc(void *addr, u64 size, WpMemAccess access, WpMemAllocFlags flags, WpMemInitType type);
|
void *wapp_os_mem_alloc(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type);
|
||||||
void wpOsMemFree(void *ptr, u64 size);
|
void wapp_os_mem_free(void *ptr, u64 size);
|
||||||
|
|
||||||
wp_extern void *_osMemAllocate(void *addr, u64 size, WpMemAccess access, WpMemAllocFlags flags, WpMemInitType type);
|
wp_extern void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type);
|
||||||
wp_extern void _osMemFree(void *ptr, u64 size);
|
wp_extern void os_mem_free(void *ptr, u64 size);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
+12
-12
@@ -9,19 +9,19 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum mem_access {
|
||||||
WP_MEM_ACCESS_NONE,
|
WAPP_MEM_ACCESS_NONE,
|
||||||
WP_MEM_ACCESS_READ_ONLY,
|
WAPP_MEM_ACCESS_READ_ONLY,
|
||||||
WP_MEM_ACCESS_EXEC_ONLY,
|
WAPP_MEM_ACCESS_EXEC_ONLY,
|
||||||
WP_MEM_ACCESS_READ_WRITE,
|
WAPP_MEM_ACCESS_READ_WRITE,
|
||||||
WP_MEM_ACCESS_READ_EXEC,
|
WAPP_MEM_ACCESS_READ_EXEC,
|
||||||
WP_MEM_ACCESS_READ_WRITE_EXEC,
|
WAPP_MEM_ACCESS_READ_WRITE_EXEC,
|
||||||
} WpMemAccess;
|
} MemAccess;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum mem_init_type {
|
||||||
WP_MEM_INIT_UNINITIALISED,
|
WAPP_MEM_INIT_UNINITIALISED,
|
||||||
WP_MEM_INIT_INITIALISED,
|
WAPP_MEM_INIT_INITIALISED,
|
||||||
} WpMemInitType;
|
} MemInitType;
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -10,15 +10,15 @@
|
|||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
wp_intern const i32 access_types[] = {
|
wp_intern const i32 access_types[] = {
|
||||||
[WP_MEM_ACCESS_NONE] = PROT_NONE,
|
[WAPP_MEM_ACCESS_NONE] = PROT_NONE,
|
||||||
[WP_MEM_ACCESS_READ_ONLY] = PROT_READ,
|
[WAPP_MEM_ACCESS_READ_ONLY] = PROT_READ,
|
||||||
[WP_MEM_ACCESS_EXEC_ONLY] = PROT_EXEC,
|
[WAPP_MEM_ACCESS_EXEC_ONLY] = PROT_EXEC,
|
||||||
[WP_MEM_ACCESS_READ_WRITE] = PROT_READ | PROT_WRITE,
|
[WAPP_MEM_ACCESS_READ_WRITE] = PROT_READ | PROT_WRITE,
|
||||||
[WP_MEM_ACCESS_READ_EXEC] = PROT_READ | PROT_EXEC,
|
[WAPP_MEM_ACCESS_READ_EXEC] = PROT_READ | PROT_EXEC,
|
||||||
[WP_MEM_ACCESS_READ_WRITE_EXEC] = PROT_READ | PROT_WRITE | PROT_EXEC,
|
[WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||||
};
|
};
|
||||||
|
|
||||||
void *_osMemAllocate(void *addr, u64 size, WpMemAccess access, WpMemAllocFlags flags, WpMemInitType type) {
|
void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
||||||
(void)type;
|
(void)type;
|
||||||
i32 alloc_flags = flags | MAP_ANON | MAP_PRIVATE;
|
i32 alloc_flags = flags | MAP_ANON | MAP_PRIVATE;
|
||||||
|
|
||||||
@@ -29,7 +29,7 @@ void *_osMemAllocate(void *addr, u64 size, WpMemAccess access, WpMemAllocFlags f
|
|||||||
return mmap(addr, size, access_types[access], alloc_flags, -1, 0);
|
return mmap(addr, size, access_types[access], alloc_flags, -1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _osMemFree(void *ptr, u64 size) {
|
void os_mem_free(void *ptr, u64 size) {
|
||||||
munmap(ptr, size);
|
munmap(ptr, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,18 +13,18 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
#include <sys/mman.h>
|
#include <sys/mman.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum mem_alloc_flags {
|
||||||
#if defined(WP_PLATFORM_LINUX) || defined(WP_PLATFORM_GNU)
|
#if defined(WP_PLATFORM_LINUX) || defined(WP_PLATFORM_GNU)
|
||||||
WP_MEM_ALLOC_RESERVE = 0,
|
WAPP_MEM_ALLOC_RESERVE = 0,
|
||||||
WP_MEM_ALLOC_COMMIT = MAP_POPULATE,
|
WAPP_MEM_ALLOC_COMMIT = MAP_POPULATE,
|
||||||
#elif defined(WP_PLATFORM_FREE_BSD)
|
#elif defined(WP_PLATFORM_FREE_BSD)
|
||||||
WP_MEM_ALLOC_RESERVE = 0,
|
WAPP_MEM_ALLOC_RESERVE = 0,
|
||||||
WP_MEM_ALLOC_COMMIT = MAP_PREFAULT_READ,
|
WAPP_MEM_ALLOC_COMMIT = MAP_PREFAULT_READ,
|
||||||
#elif defined(WP_PLATFORM_BSD) || defined(WP_PLATFORM_UNIX) || defined(WP_PLATFORM_APPLE)
|
#elif defined(WP_PLATFORM_BSD) || defined(WP_PLATFORM_UNIX) || defined(WP_PLATFORM_APPLE)
|
||||||
WP_MEM_ALLOC_RESERVE = 0,
|
WAPP_MEM_ALLOC_RESERVE = 0,
|
||||||
WP_MEM_ALLOC_COMMIT = 0,
|
WAPP_MEM_ALLOC_COMMIT = 0,
|
||||||
#endif
|
#endif
|
||||||
} WpMemAllocFlags;
|
} MemAllocFlags;
|
||||||
|
|
||||||
#endif // !WP_PLATFORM_POSIX
|
#endif // !WP_PLATFORM_POSIX
|
||||||
|
|
||||||
|
|||||||
+10
-10
@@ -13,24 +13,24 @@
|
|||||||
#include <memoryapi.h>
|
#include <memoryapi.h>
|
||||||
|
|
||||||
wp_intern const i32 access_types[] = {
|
wp_intern const i32 access_types[] = {
|
||||||
[WP_MEM_ACCESS_NONE] = PAGE_NOACCESS,
|
[WAPP_MEM_ACCESS_NONE] = PAGE_NOACCESS,
|
||||||
[WP_MEM_ACCESS_READ_ONLY] = PAGE_READONLY,
|
[WAPP_MEM_ACCESS_READ_ONLY] = PAGE_READONLY,
|
||||||
[WP_MEM_ACCESS_EXEC_ONLY] = PAGE_EXECUTE,
|
[WAPP_MEM_ACCESS_EXEC_ONLY] = PAGE_EXECUTE,
|
||||||
[WP_MEM_ACCESS_READ_WRITE] = PAGE_READWRITE,
|
[WAPP_MEM_ACCESS_READ_WRITE] = PAGE_READWRITE,
|
||||||
[WP_MEM_ACCESS_READ_EXEC] = PAGE_EXECUTE_READ,
|
[WAPP_MEM_ACCESS_READ_EXEC] = PAGE_EXECUTE_READ,
|
||||||
[WP_MEM_ACCESS_READ_WRITE_EXEC] = PAGE_EXECUTE_READWRITE,
|
[WAPP_MEM_ACCESS_READ_WRITE_EXEC] = PAGE_EXECUTE_READWRITE,
|
||||||
};
|
};
|
||||||
|
|
||||||
void *_osMemAllocate(void *addr, u64 size, WpMemAccess access, WpMemAllocFlags flags, WpMemInitType type) {
|
void *os_mem_allocate(void *addr, u64 size, MemAccess access, MemAllocFlags flags, MemInitType type) {
|
||||||
// Ensure memory is committed if it's meant to be initialised
|
// Ensure memory is committed if it's meant to be initialised
|
||||||
if (type == WP_MEM_INIT_INITIALISED) {
|
if (type == WAPP_MEM_INIT_INITIALISED) {
|
||||||
flags |= WP_MEM_ALLOC_COMMIT;
|
flags |= WAPP_MEM_ALLOC_COMMIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
return VirtualAlloc(addr, (SIZE_T)size, flags, access_types[access]);
|
return VirtualAlloc(addr, (SIZE_T)size, flags, access_types[access]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _osMemFree(void *ptr, u64 size) {
|
void os_mem_free(void *ptr, u64 size) {
|
||||||
VirtualFree(ptr, size, MEM_RELEASE);
|
VirtualFree(ptr, size, MEM_RELEASE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,10 +15,10 @@ BEGIN_C_LINKAGE
|
|||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <memoryapi.h>
|
#include <memoryapi.h>
|
||||||
|
|
||||||
typedef enum {
|
typedef enum mem_alloc_flags {
|
||||||
WP_MEM_ALLOC_RESERVE = MEM_RESERVE,
|
WAPP_MEM_ALLOC_RESERVE = MEM_RESERVE,
|
||||||
WP_MEM_ALLOC_COMMIT = MEM_COMMIT,
|
WAPP_MEM_ALLOC_COMMIT = MEM_COMMIT,
|
||||||
} WpMemAllocFlags;
|
} MemAllocFlags;
|
||||||
|
|
||||||
#endif // !WP_PLATFORM_WINDOWS
|
#endif // !WP_PLATFORM_WINDOWS
|
||||||
|
|
||||||
|
|||||||
@@ -17,85 +17,85 @@
|
|||||||
#define CMD_BUF_LEN 8192
|
#define CMD_BUF_LEN 8192
|
||||||
#define OUT_BUF_LEN 4096
|
#define OUT_BUF_LEN 4096
|
||||||
|
|
||||||
wp_intern WpCmdResult executeCommand(WpStr8RO *cmd, WpCmdOutHandling out_handling, WpStr8 *out_buf);
|
wp_intern CMDResult execute_command(WpStr8RO *cmd, CMDOutHandling out_handling, WpStr8 *out_buf);
|
||||||
wp_intern WpCmdError getCommandOutput(FILE *fp, WpCmdOutHandling out_handling, WpStr8 *out_buf);
|
wp_intern CMDError get_command_output(FILE *fp, CMDOutHandling out_handling, WpStr8 *out_buf);
|
||||||
|
|
||||||
WpCmdResult wpShellCommanderExecute(WpCmdOutHandling out_handling, WpStr8 *out_buf, const WpStr8List *cmd) {
|
CMDResult wapp_shell_commander_execute(CMDOutHandling out_handling, WpStr8 *out_buf, const WpStr8List *cmd) {
|
||||||
if (!cmd) {
|
if (!cmd) {
|
||||||
return wpCmdNoExit(WP_SHELL_ERR_INVALID_ARGS);
|
return CMD_NO_EXIT(SHELL_ERR_INVALID_ARGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(500));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(500));
|
||||||
|
|
||||||
WpStr8 *cmd_str = wpStr8Join(&arena, cmd, &wpStr8LitRo(" "));
|
WpStr8 *cmd_str = wpStr8Join(&arena, cmd, &wpStr8LitRo(" "));
|
||||||
if (!cmd_str) {
|
if (!cmd_str) {
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
return wpCmdNoExit(WP_SHELL_ERR_ALLOCATION_FAIL);
|
return CMD_NO_EXIT(SHELL_ERR_ALLOCATION_FAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Redirect output
|
// Redirect output
|
||||||
cmd_str = wpStr8AllocConcat(&arena, cmd_str, &wpStr8LitRo(" 2>&1"));
|
cmd_str = wpStr8AllocConcat(&arena, cmd_str, &wpStr8LitRo(" 2>&1"));
|
||||||
|
|
||||||
WpCmdResult output = executeCommand(cmd_str, out_handling, out_buf);
|
CMDResult output = execute_command(cmd_str, out_handling, out_buf);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_intern WpCmdResult executeCommand(WpStr8RO *cmd, WpCmdOutHandling out_handling, WpStr8 *out_buf) {
|
wp_intern CMDResult execute_command(WpStr8RO *cmd, CMDOutHandling out_handling, WpStr8 *out_buf) {
|
||||||
char cmd_buf[CMD_BUF_LEN] = {0};
|
char cmd_buf[CMD_BUF_LEN] = {0};
|
||||||
wpStr8CopyToCstr(cmd_buf, cmd, CMD_BUF_LEN);
|
wpStr8CopyToCstr(cmd_buf, cmd, CMD_BUF_LEN);
|
||||||
|
|
||||||
FILE *fp = wpShellUtilsPopen(cmd_buf, "r");
|
FILE *fp = wapp_shell_utils_popen(cmd_buf, "r");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
return wpCmdNoExit(WP_SHELL_ERR_PROC_START_FAIL);
|
return CMD_NO_EXIT(SHELL_ERR_PROC_START_FAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpCmdResult output;
|
CMDResult output;
|
||||||
|
|
||||||
WpCmdError err = getCommandOutput(fp, out_handling, out_buf);
|
CMDError err = get_command_output(fp, out_handling, out_buf);
|
||||||
if (err > WP_SHELL_ERR_NO_ERROR) {
|
if (err > SHELL_ERR_NO_ERROR) {
|
||||||
output = wpCmdNoExit(err);
|
output = CMD_NO_EXIT(err);
|
||||||
goto executeCommand_CLOSE;
|
goto EXECUTE_COMMAND_CLOSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 st = EXIT_SUCCESS;
|
i32 st = EXIT_SUCCESS;
|
||||||
err = _getOutputStatus(fp, &st);
|
err = get_output_status(fp, &st);
|
||||||
if (err > WP_SHELL_ERR_NO_ERROR) {
|
if (err > SHELL_ERR_NO_ERROR) {
|
||||||
output = wpCmdNoExit(err);
|
output = CMD_NO_EXIT(err);
|
||||||
goto executeCommand_CLOSE;
|
goto EXECUTE_COMMAND_CLOSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process is already closed in _getOutputStatus
|
// Process is already closed in get_output_status
|
||||||
fp = NULL;
|
fp = NULL;
|
||||||
|
|
||||||
output = (WpCmdResult){
|
output = (CMDResult){
|
||||||
.exited = true,
|
.exited = true,
|
||||||
.exit_code = st,
|
.exit_code = st,
|
||||||
.error = WP_SHELL_ERR_NO_ERROR,
|
.error = SHELL_ERR_NO_ERROR,
|
||||||
};
|
};
|
||||||
|
|
||||||
executeCommand_CLOSE:
|
EXECUTE_COMMAND_CLOSE:
|
||||||
if (fp) {
|
if (fp) {
|
||||||
wpShellUtilsPclose(fp);
|
wapp_shell_utils_pclose(fp);
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
wp_intern WpCmdError getCommandOutput(FILE *fp, WpCmdOutHandling out_handling, WpStr8 *out_buf) {
|
wp_intern CMDError get_command_output(FILE *fp, CMDOutHandling out_handling, WpStr8 *out_buf) {
|
||||||
WpStr8 out = wpStr8Buf(OUT_BUF_LEN);
|
WpStr8 out = wpStr8Buf(OUT_BUF_LEN);
|
||||||
|
|
||||||
out.size = fread((void *)out.buf, sizeof(c8), out.capacity, fp);
|
out.size = fread((void *)out.buf, sizeof(c8), out.capacity, fp);
|
||||||
if (out_handling == WP_SHELL_OUTPUT_CAPTURE && out_buf != NULL) {
|
if (out_handling == SHELL_OUTPUT_CAPTURE && out_buf != NULL) {
|
||||||
if (out.size >= out_buf->capacity) {
|
if (out.size >= out_buf->capacity) {
|
||||||
return WP_SHELL_ERR_OUT_BUF_FULL;
|
return SHELL_ERR_OUT_BUF_FULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpStr8ConcatCapped(out_buf, &out);
|
wpStr8ConcatCapped(out_buf, &out);
|
||||||
} else if (out_handling == WP_SHELL_OUTPUT_PRINT) {
|
} else if (out_handling == SHELL_OUTPUT_PRINT) {
|
||||||
printf(WP_STR8_SPEC, wpStr8Varg(out));
|
printf(WP_STR8_SPEC, wpStr8Varg(out));
|
||||||
}
|
}
|
||||||
|
|
||||||
return WP_SHELL_ERR_NO_ERROR;
|
return SHELL_ERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,11 +16,11 @@
|
|||||||
BEGIN_C_LINKAGE
|
BEGIN_C_LINKAGE
|
||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
#define wpCmdNoExit(ERR) ((WpCmdResult){.exited = false, .exit_code = EXIT_FAILURE, .error = ERR})
|
#define CMD_NO_EXIT(ERR) ((CMDResult){.exited = false, .exit_code = EXIT_FAILURE, .error = ERR})
|
||||||
|
|
||||||
WpCmdResult wpShellCommanderExecute(WpCmdOutHandling out_handling, WpStr8 *out_buf, const WpStr8List *cmd);
|
CMDResult wapp_shell_commander_execute(CMDOutHandling out_handling, WpStr8 *out_buf, const WpStr8List *cmd);
|
||||||
|
|
||||||
wp_extern WpCmdError _getOutputStatus(FILE *fp, i32 *status_out);
|
wp_extern CMDError get_output_status(FILE *fp, i32 *status_out);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -12,27 +12,27 @@ BEGIN_C_LINKAGE
|
|||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WP_SHELL_OUTPUT_DISCARD,
|
SHELL_OUTPUT_DISCARD,
|
||||||
WP_SHELL_OUTPUT_PRINT,
|
SHELL_OUTPUT_PRINT,
|
||||||
WP_SHELL_OUTPUT_CAPTURE,
|
SHELL_OUTPUT_CAPTURE,
|
||||||
} WpCmdOutHandling;
|
} CMDOutHandling;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WP_SHELL_ERR_NO_ERROR,
|
SHELL_ERR_NO_ERROR,
|
||||||
WP_SHELL_ERR_INVALID_ARGS,
|
SHELL_ERR_INVALID_ARGS,
|
||||||
WP_SHELL_ERR_ALLOCATION_FAIL,
|
SHELL_ERR_ALLOCATION_FAIL,
|
||||||
WP_SHELL_ERR_PROC_START_FAIL,
|
SHELL_ERR_PROC_START_FAIL,
|
||||||
WP_SHELL_ERR_OUT_BUF_FULL,
|
SHELL_ERR_OUT_BUF_FULL,
|
||||||
WP_SHELL_ERR_PROC_EXIT_FAIL,
|
SHELL_ERR_PROC_EXIT_FAIL,
|
||||||
} WpCmdError;
|
} CMDError;
|
||||||
|
|
||||||
typedef struct WpCmdResult WpCmdResult;
|
typedef struct CMDResult CMDResult;
|
||||||
struct WpCmdResult {
|
struct CMDResult {
|
||||||
i32 exit_code;
|
i32 exit_code;
|
||||||
WpCmdError error;
|
CMDError error;
|
||||||
b8 exited;
|
b8 exited;
|
||||||
|
|
||||||
wpMiscUtilsReservePadding(sizeof(b8) + sizeof(i32) + sizeof(WpCmdError));
|
wpMiscUtilsReservePadding(sizeof(b8) + sizeof(i32) + sizeof(CMDError));
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
|
|||||||
@@ -10,16 +10,16 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
WpCmdError _getOutputStatus(FILE *fp, i32 *status_out) {
|
CMDError get_output_status(FILE *fp, i32 *status_out) {
|
||||||
*status_out = wpShellUtilsPclose(fp);
|
*status_out = wapp_shell_utils_pclose(fp);
|
||||||
|
|
||||||
if (!WIFEXITED(*status_out)) {
|
if (!WIFEXITED(*status_out)) {
|
||||||
return WP_SHELL_ERR_PROC_EXIT_FAIL;
|
return SHELL_ERR_PROC_EXIT_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
*status_out = WEXITSTATUS(*status_out);
|
*status_out = WEXITSTATUS(*status_out);
|
||||||
|
|
||||||
return WP_SHELL_ERR_NO_ERROR;
|
return SHELL_ERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // !WP_PLATFORM_POSIX
|
#endif // !WP_PLATFORM_POSIX
|
||||||
|
|||||||
@@ -9,16 +9,16 @@
|
|||||||
#include "../../utils/shell_utils.h"
|
#include "../../utils/shell_utils.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
WpCmdError _getOutputStatus(FILE *fp, i32 *status_out) {
|
CMDError get_output_status(FILE *fp, i32 *status_out) {
|
||||||
if (!feof(fp)) {
|
if (!feof(fp)) {
|
||||||
// Ensure process is closed on failure
|
// Ensure process is closed on failure
|
||||||
wpShellUtilsPclose(fp);
|
wapp_shell_utils_pclose(fp);
|
||||||
return WP_SHELL_ERR_PROC_EXIT_FAIL;
|
return SHELL_ERR_PROC_EXIT_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
*status_out = wpShellUtilsPclose(fp);
|
*status_out = wapp_shell_utils_pclose(fp);
|
||||||
|
|
||||||
return WP_SHELL_ERR_NO_ERROR;
|
return SHELL_ERR_NO_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // !WP_PLATFORM_WINDOWS
|
#endif // !WP_PLATFORM_WINDOWS
|
||||||
|
|||||||
@@ -10,26 +10,26 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
wp_intern WpStr8RO colours[COUNT_TERM_COLOUR] = {
|
wp_intern WpStr8RO colours[COUNT_TERM_COLOUR] = {
|
||||||
[WP_TERM_COLOUR_FG_BLACK] = wpStr8LitRoInitialiserList("\033[30m"),
|
[WAPP_TERM_COLOUR_FG_BLACK] = wpStr8LitRoInitialiserList("\033[30m"),
|
||||||
[WP_TERM_COLOUR_FG_RED] = wpStr8LitRoInitialiserList("\033[31m"),
|
[WAPP_TERM_COLOUR_FG_RED] = wpStr8LitRoInitialiserList("\033[31m"),
|
||||||
[WP_TERM_COLOUR_FG_GREEN] = wpStr8LitRoInitialiserList("\033[32m"),
|
[WAPP_TERM_COLOUR_FG_GREEN] = wpStr8LitRoInitialiserList("\033[32m"),
|
||||||
[WP_TERM_COLOUR_FG_BLUE] = wpStr8LitRoInitialiserList("\033[34m"),
|
[WAPP_TERM_COLOUR_FG_BLUE] = wpStr8LitRoInitialiserList("\033[34m"),
|
||||||
[WP_TERM_COLOUR_FG_CYAN] = wpStr8LitRoInitialiserList("\033[36m"),
|
[WAPP_TERM_COLOUR_FG_CYAN] = wpStr8LitRoInitialiserList("\033[36m"),
|
||||||
[WP_TERM_COLOUR_FG_MAGENTA] = wpStr8LitRoInitialiserList("\033[35m"),
|
[WAPP_TERM_COLOUR_FG_MAGENTA] = wpStr8LitRoInitialiserList("\033[35m"),
|
||||||
[WP_TERM_COLOUR_FG_YELLOW] = wpStr8LitRoInitialiserList("\033[33m"),
|
[WAPP_TERM_COLOUR_FG_YELLOW] = wpStr8LitRoInitialiserList("\033[33m"),
|
||||||
[WP_TERM_COLOUR_FG_WHITE] = wpStr8LitRoInitialiserList("\033[37m"),
|
[WAPP_TERM_COLOUR_FG_WHITE] = wpStr8LitRoInitialiserList("\033[37m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_BLACK] = wpStr8LitRoInitialiserList("\033[90m"),
|
[WAPP_TERM_COLOUR_FG_BR_BLACK] = wpStr8LitRoInitialiserList("\033[90m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_RED] = wpStr8LitRoInitialiserList("\033[91m"),
|
[WAPP_TERM_COLOUR_FG_BR_RED] = wpStr8LitRoInitialiserList("\033[91m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_GREEN] = wpStr8LitRoInitialiserList("\033[92m"),
|
[WAPP_TERM_COLOUR_FG_BR_GREEN] = wpStr8LitRoInitialiserList("\033[92m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_BLUE] = wpStr8LitRoInitialiserList("\033[94m"),
|
[WAPP_TERM_COLOUR_FG_BR_BLUE] = wpStr8LitRoInitialiserList("\033[94m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_CYAN] = wpStr8LitRoInitialiserList("\033[96m"),
|
[WAPP_TERM_COLOUR_FG_BR_CYAN] = wpStr8LitRoInitialiserList("\033[96m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_MAGENTA] = wpStr8LitRoInitialiserList("\033[95m"),
|
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = wpStr8LitRoInitialiserList("\033[95m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_YELLOW] = wpStr8LitRoInitialiserList("\033[93m"),
|
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = wpStr8LitRoInitialiserList("\033[93m"),
|
||||||
[WP_TERM_COLOUR_FG_BR_WHITE] = wpStr8LitRoInitialiserList("\033[97m"),
|
[WAPP_TERM_COLOUR_FG_BR_WHITE] = wpStr8LitRoInitialiserList("\033[97m"),
|
||||||
[WP_TERM_COLOUR_CLEAR] = wpStr8LitRoInitialiserList("\033[0m"),
|
[WAPP_TERM_COLOUR_CLEAR] = wpStr8LitRoInitialiserList("\033[0m"),
|
||||||
};
|
};
|
||||||
|
|
||||||
void _printColouredText(WpStr8RO *text, WpTerminalColour colour) {
|
void print_coloured_text(WpStr8RO *text, TerminalColour colour) {
|
||||||
printf(WP_STR8_SPEC WP_STR8_SPEC, wpStr8Varg(colours[colour]), wpStr8Varg((*text)));
|
printf(WP_STR8_SPEC WP_STR8_SPEC, wpStr8Varg(colours[colour]), wpStr8Varg((*text)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,15 +4,15 @@
|
|||||||
#include "terminal_colours.h"
|
#include "terminal_colours.h"
|
||||||
#include "../../../base/strings/str8/str8.h"
|
#include "../../../base/strings/str8/str8.h"
|
||||||
|
|
||||||
void wpShellTermcolourPrintText(WpStr8RO *text, WpTerminalColour colour) {
|
void wapp_shell_termcolour_print_text(WpStr8RO *text, TerminalColour colour) {
|
||||||
if (colour < WP_TERM_COLOUR_FG_BLACK || colour > WP_TERM_COLOUR_FG_BR_WHITE) {
|
if (colour < WAPP_TERM_COLOUR_FG_BLACK || colour > WAPP_TERM_COLOUR_FG_BR_WHITE) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_printColouredText(text, colour);
|
print_coloured_text(text, colour);
|
||||||
}
|
}
|
||||||
|
|
||||||
void wpShellTermcolourClearColour(void) {
|
void wapp_shell_termcolour_clear_colour(void) {
|
||||||
WpStr8RO empty = wpStr8LitRo("");
|
WpStr8RO empty = wpStr8LitRo("");
|
||||||
_printColouredText(&empty, WP_TERM_COLOUR_CLEAR);
|
print_coloured_text(&empty, WAPP_TERM_COLOUR_CLEAR);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,10 +14,10 @@ BEGIN_C_LINKAGE
|
|||||||
|
|
||||||
// TODO (Abdelrahman): Look into moving away from stdio in the implementation
|
// TODO (Abdelrahman): Look into moving away from stdio in the implementation
|
||||||
|
|
||||||
void wpShellTermcolourPrintText(WpStr8RO *text, WpTerminalColour colour);
|
void wapp_shell_termcolour_print_text(WpStr8RO *text, TerminalColour colour);
|
||||||
void wpShellTermcolourClearColour(void);
|
void wapp_shell_termcolour_clear_colour(void);
|
||||||
|
|
||||||
wp_extern void _printColouredText(WpStr8RO *text, WpTerminalColour colour);
|
wp_extern void print_coloured_text(WpStr8RO *text, TerminalColour colour);
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -11,26 +11,26 @@ BEGIN_C_LINKAGE
|
|||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
WP_TERM_COLOUR_FG_BLACK,
|
WAPP_TERM_COLOUR_FG_BLACK,
|
||||||
WP_TERM_COLOUR_FG_RED,
|
WAPP_TERM_COLOUR_FG_RED,
|
||||||
WP_TERM_COLOUR_FG_GREEN,
|
WAPP_TERM_COLOUR_FG_GREEN,
|
||||||
WP_TERM_COLOUR_FG_BLUE,
|
WAPP_TERM_COLOUR_FG_BLUE,
|
||||||
WP_TERM_COLOUR_FG_CYAN,
|
WAPP_TERM_COLOUR_FG_CYAN,
|
||||||
WP_TERM_COLOUR_FG_MAGENTA,
|
WAPP_TERM_COLOUR_FG_MAGENTA,
|
||||||
WP_TERM_COLOUR_FG_YELLOW,
|
WAPP_TERM_COLOUR_FG_YELLOW,
|
||||||
WP_TERM_COLOUR_FG_WHITE,
|
WAPP_TERM_COLOUR_FG_WHITE,
|
||||||
WP_TERM_COLOUR_FG_BR_BLACK,
|
WAPP_TERM_COLOUR_FG_BR_BLACK,
|
||||||
WP_TERM_COLOUR_FG_BR_RED,
|
WAPP_TERM_COLOUR_FG_BR_RED,
|
||||||
WP_TERM_COLOUR_FG_BR_GREEN,
|
WAPP_TERM_COLOUR_FG_BR_GREEN,
|
||||||
WP_TERM_COLOUR_FG_BR_BLUE,
|
WAPP_TERM_COLOUR_FG_BR_BLUE,
|
||||||
WP_TERM_COLOUR_FG_BR_CYAN,
|
WAPP_TERM_COLOUR_FG_BR_CYAN,
|
||||||
WP_TERM_COLOUR_FG_BR_MAGENTA,
|
WAPP_TERM_COLOUR_FG_BR_MAGENTA,
|
||||||
WP_TERM_COLOUR_FG_BR_YELLOW,
|
WAPP_TERM_COLOUR_FG_BR_YELLOW,
|
||||||
WP_TERM_COLOUR_FG_BR_WHITE,
|
WAPP_TERM_COLOUR_FG_BR_WHITE,
|
||||||
WP_TERM_COLOUR_CLEAR,
|
WAPP_TERM_COLOUR_CLEAR,
|
||||||
|
|
||||||
COUNT_TERM_COLOUR,
|
COUNT_TERM_COLOUR,
|
||||||
} WpTerminalColour;
|
} TerminalColour;
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
END_C_LINKAGE
|
END_C_LINKAGE
|
||||||
|
|||||||
@@ -25,31 +25,31 @@ struct TermcolourData {
|
|||||||
wp_intern void init_data(TermcolourData *data);
|
wp_intern void init_data(TermcolourData *data);
|
||||||
|
|
||||||
wp_intern WORD colours[COUNT_TERM_COLOUR] = {
|
wp_intern WORD colours[COUNT_TERM_COLOUR] = {
|
||||||
[WP_TERM_COLOUR_FG_BLACK] = 0,
|
[WAPP_TERM_COLOUR_FG_BLACK] = 0,
|
||||||
[WP_TERM_COLOUR_FG_RED] = FOREGROUND_RED,
|
[WAPP_TERM_COLOUR_FG_RED] = FOREGROUND_RED,
|
||||||
[WP_TERM_COLOUR_FG_GREEN] = FOREGROUND_GREEN,
|
[WAPP_TERM_COLOUR_FG_GREEN] = FOREGROUND_GREEN,
|
||||||
[WP_TERM_COLOUR_FG_BLUE] = FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_BLUE] = FOREGROUND_BLUE,
|
||||||
[WP_TERM_COLOUR_FG_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||||
[WP_TERM_COLOUR_FG_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE,
|
||||||
[WP_TERM_COLOUR_FG_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN,
|
[WAPP_TERM_COLOUR_FG_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN,
|
||||||
[WP_TERM_COLOUR_FG_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
[WAPP_TERM_COLOUR_FG_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE,
|
||||||
[WP_TERM_COLOUR_FG_BR_BLACK] = FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_BLACK] = FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_RED] = FOREGROUND_RED | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_RED] = FOREGROUND_RED | FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_GREEN] = FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_GREEN] = FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_BLUE] = FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_BLUE] = FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_CYAN] = FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_MAGENTA] = FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_YELLOW] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_INTENSITY,
|
||||||
[WP_TERM_COLOUR_FG_BR_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
[WAPP_TERM_COLOUR_FG_BR_WHITE] = FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_INTENSITY,
|
||||||
};
|
};
|
||||||
|
|
||||||
void _printColouredText(WpStr8RO *text, WpTerminalColour colour) {
|
void print_coloured_text(WpStr8RO *text, TerminalColour colour) {
|
||||||
wp_persist TermcolourData data = {0};
|
wp_persist TermcolourData data = {0};
|
||||||
if (data.handle == 0) {
|
if (data.handle == 0) {
|
||||||
init_data(&data);
|
init_data(&data);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (colour == WP_TERM_COLOUR_CLEAR) {
|
if (colour == WAPP_TERM_COLOUR_CLEAR) {
|
||||||
data.current_colour = data.default_colour;
|
data.current_colour = data.default_colour;
|
||||||
} else {
|
} else {
|
||||||
data.current_colour = colours[colour];
|
data.current_colour = colours[colour];
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ BEGIN_C_LINKAGE
|
|||||||
#endif // !WP_PLATFORM_CPP
|
#endif // !WP_PLATFORM_CPP
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_WINDOWS
|
#ifdef WP_PLATFORM_WINDOWS
|
||||||
#define wpShellUtilsPopen _popen
|
#define wapp_shell_utils_popen _popen
|
||||||
#define wpShellUtilsPclose _pclose
|
#define wapp_shell_utils_pclose _pclose
|
||||||
#else
|
#else
|
||||||
#define wpShellUtilsPopen popen
|
#define wapp_shell_utils_popen popen
|
||||||
#define wpShellUtilsPclose pclose
|
#define wapp_shell_utils_pclose pclose
|
||||||
#endif /* ifdef WP_PLATFORM_WINDOWS */
|
#endif /* ifdef WP_PLATFORM_WINDOWS */
|
||||||
|
|
||||||
#ifdef WP_PLATFORM_CPP
|
#ifdef WP_PLATFORM_CPP
|
||||||
|
|||||||
@@ -33,20 +33,20 @@ void _runTests(WpTestFunc *func1, ...) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
wp_intern void handleTestResult(WpTestFuncResult result) {
|
wp_intern void handleTestResult(WpTestFuncResult result) {
|
||||||
WpTerminalColour colour;
|
TerminalColour colour;
|
||||||
WpStr8 result_text = wpStr8Buf(64);
|
WpStr8 result_text = wpStr8Buf(64);
|
||||||
|
|
||||||
if (result.passed) {
|
if (result.passed) {
|
||||||
colour = WP_TERM_COLOUR_FG_BR_GREEN;
|
colour = WAPP_TERM_COLOUR_FG_BR_GREEN;
|
||||||
wpStr8CopyCstrCapped(&result_text, "PASSED");
|
wpStr8CopyCstrCapped(&result_text, "PASSED");
|
||||||
} else {
|
} else {
|
||||||
colour = WP_TERM_COLOUR_FG_BR_RED;
|
colour = WAPP_TERM_COLOUR_FG_BR_RED;
|
||||||
wpStr8CopyCstrCapped(&result_text, "FAILED");
|
wpStr8CopyCstrCapped(&result_text, "FAILED");
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("[");
|
printf("[");
|
||||||
wpShellTermcolourPrintText(&result_text, colour);
|
wapp_shell_termcolour_print_text(&result_text, colour);
|
||||||
wpShellTermcolourClearColour();
|
wapp_shell_termcolour_clear_colour();
|
||||||
printf("] " WP_STR8_SPEC "\n", wpStr8Varg(result.name));
|
printf("] " WP_STR8_SPEC "\n", wpStr8Varg(result.name));
|
||||||
|
|
||||||
if (!result.passed) {
|
if (!result.passed) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ wp_intern u8 temp_buf[TEMP_BUF_SIZE] = {0};
|
|||||||
wp_intern WpAllocator temp_allocator = {0};
|
wp_intern WpAllocator temp_allocator = {0};
|
||||||
|
|
||||||
WpTestFuncResult test_arena_allocator(void) {
|
WpTestFuncResult test_arena_allocator(void) {
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(4096);
|
WpAllocator allocator = wapp_mem_arena_allocator_init(4096);
|
||||||
b8 result = allocator.obj != NULL && allocator.alloc != NULL &&
|
b8 result = allocator.obj != NULL && allocator.alloc != NULL &&
|
||||||
allocator.alloc_aligned != NULL &&
|
allocator.alloc_aligned != NULL &&
|
||||||
allocator.realloc != NULL && allocator.realloc_aligned != NULL &&
|
allocator.realloc != NULL && allocator.realloc_aligned != NULL &&
|
||||||
@@ -18,7 +18,7 @@ WpTestFuncResult test_arena_allocator(void) {
|
|||||||
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
||||||
result = result && (ptr != NULL);
|
result = result && (ptr != NULL);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ WpTestFuncResult test_arena_allocator(void) {
|
|||||||
WpTestFuncResult test_arena_allocator_with_buffer(void) {
|
WpTestFuncResult test_arena_allocator_with_buffer(void) {
|
||||||
u8 buffer[KiB(4)] = {0};
|
u8 buffer[KiB(4)] = {0};
|
||||||
|
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInitWithBuffer(buffer, KiB(4));
|
WpAllocator allocator = wapp_mem_arena_allocator_init_with_buffer(buffer, KiB(4));
|
||||||
b8 result = allocator.obj != NULL && allocator.alloc != NULL &&
|
b8 result = allocator.obj != NULL && allocator.alloc != NULL &&
|
||||||
allocator.alloc_aligned != NULL &&
|
allocator.alloc_aligned != NULL &&
|
||||||
allocator.realloc != NULL && allocator.realloc_aligned != NULL &&
|
allocator.realloc != NULL && allocator.realloc_aligned != NULL &&
|
||||||
@@ -34,18 +34,18 @@ WpTestFuncResult test_arena_allocator_with_buffer(void) {
|
|||||||
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
||||||
result = result && (ptr != NULL);
|
result = result && (ptr != NULL);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_allocator_temp_begin(void) {
|
WpTestFuncResult test_arena_allocator_temp_begin(void) {
|
||||||
temp_allocator = wpMemArenaAllocatorInitWithBuffer(temp_buf, TEMP_BUF_SIZE);
|
temp_allocator = wapp_mem_arena_allocator_init_with_buffer(temp_buf, TEMP_BUF_SIZE);
|
||||||
|
|
||||||
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
b8 result = num1 != NULL;
|
b8 result = num1 != NULL;
|
||||||
|
|
||||||
wpMemArenaAllocatorTempBegin(&temp_allocator);
|
wapp_mem_arena_allocator_temp_begin(&temp_allocator);
|
||||||
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
result = result && num2 != NULL;
|
result = result && num2 != NULL;
|
||||||
i32 *num3 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num3 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
@@ -55,13 +55,13 @@ WpTestFuncResult test_arena_allocator_temp_begin(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_allocator_temp_end(void) {
|
WpTestFuncResult test_arena_allocator_temp_end(void) {
|
||||||
wpMemArenaAllocatorTempEnd(&temp_allocator);
|
wapp_mem_arena_allocator_temp_end(&temp_allocator);
|
||||||
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
b8 result = num1 != NULL;
|
b8 result = num1 != NULL;
|
||||||
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
result = result && num2 == NULL;
|
result = result && num2 == NULL;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&temp_allocator);
|
wapp_mem_arena_allocator_destroy(&temp_allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ wp_intern u8 temp_buf[TEMP_BUF_SIZE] = {};
|
|||||||
wp_intern WpAllocator temp_allocator = {};
|
wp_intern WpAllocator temp_allocator = {};
|
||||||
|
|
||||||
WpTestFuncResult test_arena_allocator(void) {
|
WpTestFuncResult test_arena_allocator(void) {
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(4096);
|
WpAllocator allocator = wapp_mem_arena_allocator_init(4096);
|
||||||
b8 result = allocator.obj != nullptr && allocator.alloc != nullptr &&
|
b8 result = allocator.obj != nullptr && allocator.alloc != nullptr &&
|
||||||
allocator.alloc_aligned != nullptr &&
|
allocator.alloc_aligned != nullptr &&
|
||||||
allocator.realloc != nullptr && allocator.realloc_aligned != nullptr &&
|
allocator.realloc != nullptr && allocator.realloc_aligned != nullptr &&
|
||||||
@@ -18,7 +18,7 @@ WpTestFuncResult test_arena_allocator(void) {
|
|||||||
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
||||||
result = result && (ptr != nullptr);
|
result = result && (ptr != nullptr);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ WpTestFuncResult test_arena_allocator(void) {
|
|||||||
WpTestFuncResult test_arena_allocator_with_buffer(void) {
|
WpTestFuncResult test_arena_allocator_with_buffer(void) {
|
||||||
u8 buffer[KiB(4)] = {0};
|
u8 buffer[KiB(4)] = {0};
|
||||||
|
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInitWithBuffer(buffer, KiB(4));
|
WpAllocator allocator = wapp_mem_arena_allocator_init_with_buffer(buffer, KiB(4));
|
||||||
b8 result = allocator.obj != NULL && allocator.alloc != NULL &&
|
b8 result = allocator.obj != NULL && allocator.alloc != NULL &&
|
||||||
allocator.alloc_aligned != NULL &&
|
allocator.alloc_aligned != NULL &&
|
||||||
allocator.realloc != NULL && allocator.realloc_aligned != NULL &&
|
allocator.realloc != NULL && allocator.realloc_aligned != NULL &&
|
||||||
@@ -34,18 +34,18 @@ WpTestFuncResult test_arena_allocator_with_buffer(void) {
|
|||||||
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
void *ptr = wpMemAllocatorAlloc(&allocator, 20);
|
||||||
result = result && (ptr != NULL);
|
result = result && (ptr != NULL);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_allocator_temp_begin(void) {
|
WpTestFuncResult test_arena_allocator_temp_begin(void) {
|
||||||
temp_allocator = wpMemArenaAllocatorInitWithBuffer(temp_buf, TEMP_BUF_SIZE);
|
temp_allocator = wapp_mem_arena_allocator_init_with_buffer(temp_buf, TEMP_BUF_SIZE);
|
||||||
|
|
||||||
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
b8 result = num1 != NULL;
|
b8 result = num1 != NULL;
|
||||||
|
|
||||||
wpMemArenaAllocatorTempBegin(&temp_allocator);
|
wapp_mem_arena_allocator_temp_begin(&temp_allocator);
|
||||||
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
result = result && num2 != NULL;
|
result = result && num2 != NULL;
|
||||||
i32 *num3 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num3 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
@@ -55,13 +55,13 @@ WpTestFuncResult test_arena_allocator_temp_begin(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_allocator_temp_end(void) {
|
WpTestFuncResult test_arena_allocator_temp_end(void) {
|
||||||
wpMemArenaAllocatorTempEnd(&temp_allocator);
|
wapp_mem_arena_allocator_temp_end(&temp_allocator);
|
||||||
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num1 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
b8 result = num1 != NULL;
|
b8 result = num1 != NULL;
|
||||||
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
i32 *num2 = (i32 *)wpMemAllocatorAlloc(&temp_allocator, sizeof(i32));
|
||||||
result = result && num2 == NULL;
|
result = result && num2 == NULL;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&temp_allocator);
|
wapp_mem_arena_allocator_destroy(&temp_allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-28
@@ -4,42 +4,42 @@
|
|||||||
|
|
||||||
#define ARENA_CAPACITY KiB(16)
|
#define ARENA_CAPACITY KiB(16)
|
||||||
#define ARENA_BUF_SIZE KiB(4)
|
#define ARENA_BUF_SIZE KiB(4)
|
||||||
// NOTE (Abdelrahman): Cannot query size of WpArena here so it's hardcoded. Similarly, since arena
|
// NOTE (Abdelrahman): Cannot query size of Arena here so it's hardcoded. Similarly, since arena
|
||||||
// allocation are aligned to power of 2 boundaries, the number of i32 values needed is hardcoded.
|
// allocation are aligned to power of 2 boundaries, the number of i32 values needed is hardcoded.
|
||||||
#define TEMP_BUF_SIZE (40 + sizeof(i32) * 8)
|
#define TEMP_BUF_SIZE (40 + sizeof(i32) * 8)
|
||||||
|
|
||||||
wp_intern WpArena *arena = NULL;
|
wp_intern Arena *arena = NULL;
|
||||||
wp_intern i32 count = 20;
|
wp_intern i32 count = 20;
|
||||||
wp_intern i32 *array = NULL;
|
wp_intern i32 *array = NULL;
|
||||||
wp_intern WpArena *buf_arena = NULL;
|
wp_intern Arena *buf_arena = NULL;
|
||||||
wp_intern u8 buf[ARENA_BUF_SIZE] = {0};
|
wp_intern u8 buf[ARENA_BUF_SIZE] = {0};
|
||||||
wp_intern WpArena *temp_arena = NULL;
|
wp_intern Arena *temp_arena = NULL;
|
||||||
wp_intern u8 temp_buf[TEMP_BUF_SIZE] = {0};
|
wp_intern u8 temp_buf[TEMP_BUF_SIZE] = {0};
|
||||||
|
|
||||||
WpTestFuncResult test_arena_init_buffer(void) {
|
WpTestFuncResult test_arena_init_buffer(void) {
|
||||||
b8 result = wpMemArenaInitBuffer(&buf_arena, buf, ARENA_BUF_SIZE);
|
b8 result = wapp_mem_arena_init_buffer(&buf_arena, buf, ARENA_BUF_SIZE);
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_init_allocated(void) {
|
WpTestFuncResult test_arena_init_allocated(void) {
|
||||||
b8 result = wpMemArenaInitAllocated(&arena, ARENA_CAPACITY);
|
b8 result = wapp_mem_arena_init_allocated(&arena, ARENA_CAPACITY);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_init_succeeds_when_reserving_very_large_size(void) {
|
WpTestFuncResult test_arena_init_succeeds_when_reserving_very_large_size(void) {
|
||||||
WpArena *large_arena = NULL;
|
Arena *large_arena = NULL;
|
||||||
u64 capacity = GiB(512);
|
u64 capacity = GiB(512);
|
||||||
b8 result = wpMemArenaInitAllocated(&large_arena, capacity);
|
b8 result = wapp_mem_arena_init_allocated(&large_arena, capacity);
|
||||||
if (result) {
|
if (result) {
|
||||||
wpMemArenaDestroy(&large_arena);
|
wapp_mem_arena_destroy(&large_arena);
|
||||||
}
|
}
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_alloc_with_buffer(void) {
|
WpTestFuncResult test_arena_alloc_with_buffer(void) {
|
||||||
i32 *arr = (i32 *)wpMemArenaAlloc(arena, count * sizeof(i32));
|
i32 *arr = (i32 *)wapp_mem_arena_alloc(arena, count * sizeof(i32));
|
||||||
b8 result = arr != NULL;
|
b8 result = arr != NULL;
|
||||||
|
|
||||||
for (i32 i = 0; i < count; ++i) {
|
for (i32 i = 0; i < count; ++i) {
|
||||||
@@ -50,7 +50,7 @@ WpTestFuncResult test_arena_alloc_with_buffer(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_alloc_succeeds_when_within_capacity(void) {
|
WpTestFuncResult test_arena_alloc_succeeds_when_within_capacity(void) {
|
||||||
array = wpMemArenaAlloc(arena, count * sizeof(i32));
|
array = wapp_mem_arena_alloc(arena, count * sizeof(i32));
|
||||||
b8 result = array != NULL;
|
b8 result = array != NULL;
|
||||||
|
|
||||||
for (i32 i = 0; i < count; ++i) {
|
for (i32 i = 0; i < count; ++i) {
|
||||||
@@ -61,7 +61,7 @@ WpTestFuncResult test_arena_alloc_succeeds_when_within_capacity(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_alloc_fails_when_over_capacity(void) {
|
WpTestFuncResult test_arena_alloc_fails_when_over_capacity(void) {
|
||||||
u8 *bytes = wpMemArenaAlloc(arena, ARENA_CAPACITY * 2);
|
u8 *bytes = wapp_mem_arena_alloc(arena, ARENA_CAPACITY * 2);
|
||||||
b8 result = bytes == NULL;
|
b8 result = bytes == NULL;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -70,13 +70,13 @@ WpTestFuncResult test_arena_alloc_fails_when_over_capacity(void) {
|
|||||||
WpTestFuncResult test_arena_realloc_bigger_size(void) {
|
WpTestFuncResult test_arena_realloc_bigger_size(void) {
|
||||||
u64 old_count = 10;
|
u64 old_count = 10;
|
||||||
u64 new_count = 20;
|
u64 new_count = 20;
|
||||||
i32 *bytes = wpMemArenaAlloc(arena, old_count * sizeof(i32));
|
i32 *bytes = wapp_mem_arena_alloc(arena, old_count * sizeof(i32));
|
||||||
|
|
||||||
for (u64 i = 0; i < old_count; ++i) {
|
for (u64 i = 0; i < old_count; ++i) {
|
||||||
bytes[i] = (i32)i;
|
bytes[i] = (i32)i;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 *new_bytes = wpMemArenaRealloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
i32 *new_bytes = wapp_mem_arena_realloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
||||||
if (!new_bytes) {
|
if (!new_bytes) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -93,13 +93,13 @@ WpTestFuncResult test_arena_realloc_bigger_size(void) {
|
|||||||
WpTestFuncResult test_arena_realloc_smaller_size(void) {
|
WpTestFuncResult test_arena_realloc_smaller_size(void) {
|
||||||
u64 old_count = 10;
|
u64 old_count = 10;
|
||||||
u64 new_count = 5;
|
u64 new_count = 5;
|
||||||
i32 *bytes = wpMemArenaAlloc(arena, old_count * sizeof(i32));
|
i32 *bytes = wapp_mem_arena_alloc(arena, old_count * sizeof(i32));
|
||||||
|
|
||||||
for (u64 i = 0; i < old_count; ++i) {
|
for (u64 i = 0; i < old_count; ++i) {
|
||||||
bytes[i] = (i32)i;
|
bytes[i] = (i32)i;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 *new_bytes = wpMemArenaRealloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
i32 *new_bytes = wapp_mem_arena_realloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
||||||
if (!new_bytes) {
|
if (!new_bytes) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -114,33 +114,33 @@ WpTestFuncResult test_arena_realloc_smaller_size(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_temp_begin(void) {
|
WpTestFuncResult test_arena_temp_begin(void) {
|
||||||
b8 result = wpMemArenaInitBuffer(&temp_arena, temp_buf, TEMP_BUF_SIZE);
|
b8 result = wapp_mem_arena_init_buffer(&temp_arena, temp_buf, TEMP_BUF_SIZE);
|
||||||
i32 *num1 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num1 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num1 != NULL;
|
result = result && num1 != NULL;
|
||||||
|
|
||||||
wpMemArenaTempBegin(temp_arena);
|
wapp_mem_arena_temp_begin(temp_arena);
|
||||||
i32 *num2 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num2 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num2 != NULL;
|
result = result && num2 != NULL;
|
||||||
i32 *num3 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num3 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num3 == NULL;
|
result = result && num3 == NULL;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_temp_end(void) {
|
WpTestFuncResult test_arena_temp_end(void) {
|
||||||
wpMemArenaTempEnd(temp_arena);
|
wapp_mem_arena_temp_end(temp_arena);
|
||||||
i32 *num1 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num1 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
b8 result = num1 != NULL;
|
b8 result = num1 != NULL;
|
||||||
i32 *num2 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num2 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num2 == NULL;
|
result = result && num2 == NULL;
|
||||||
|
|
||||||
wpMemArenaDestroy(&temp_arena);
|
wapp_mem_arena_destroy(&temp_arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_clear(void) {
|
WpTestFuncResult test_arena_clear(void) {
|
||||||
wpMemArenaClear(arena);
|
wapp_mem_arena_clear(arena);
|
||||||
b8 result = true;
|
b8 result = true;
|
||||||
|
|
||||||
for (i32 i = 0; i < count; ++i) {
|
for (i32 i = 0; i < count; ++i) {
|
||||||
@@ -154,14 +154,14 @@ WpTestFuncResult test_arena_clear(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_destroy_buffer(void) {
|
WpTestFuncResult test_arena_destroy_buffer(void) {
|
||||||
wpMemArenaDestroy(&buf_arena);
|
wapp_mem_arena_destroy(&buf_arena);
|
||||||
b8 result = buf_arena == NULL;
|
b8 result = buf_arena == NULL;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_destroy_allocated(void) {
|
WpTestFuncResult test_arena_destroy_allocated(void) {
|
||||||
wpMemArenaDestroy(&arena);
|
wapp_mem_arena_destroy(&arena);
|
||||||
b8 result = arena == NULL;
|
b8 result = arena == NULL;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
|
|||||||
+28
-28
@@ -4,42 +4,42 @@
|
|||||||
|
|
||||||
#define ARENA_CAPACITY KiB(16)
|
#define ARENA_CAPACITY KiB(16)
|
||||||
#define ARENA_BUF_SIZE KiB(4)
|
#define ARENA_BUF_SIZE KiB(4)
|
||||||
// NOTE (Abdelrahman): Cannot query size of WpArena here so it's hardcoded. Similarly, since arena
|
// NOTE (Abdelrahman): Cannot query size of Arena here so it's hardcoded. Similarly, since arena
|
||||||
// allocation are aligned to power of 2 boundaries, the number of i32 values needed is hardcoded.
|
// allocation are aligned to power of 2 boundaries, the number of i32 values needed is hardcoded.
|
||||||
#define TEMP_BUF_SIZE (40 + sizeof(i32) * 8)
|
#define TEMP_BUF_SIZE (40 + sizeof(i32) * 8)
|
||||||
|
|
||||||
wp_intern WpArena *arena = NULL;
|
wp_intern Arena *arena = NULL;
|
||||||
wp_intern i32 count = 20;
|
wp_intern i32 count = 20;
|
||||||
wp_intern i32 *array = NULL;
|
wp_intern i32 *array = NULL;
|
||||||
wp_intern WpArena *buf_arena = NULL;
|
wp_intern Arena *buf_arena = NULL;
|
||||||
wp_intern u8 buf[ARENA_BUF_SIZE] = {};
|
wp_intern u8 buf[ARENA_BUF_SIZE] = {};
|
||||||
wp_intern WpArena *temp_arena = NULL;
|
wp_intern Arena *temp_arena = NULL;
|
||||||
wp_intern u8 temp_buf[TEMP_BUF_SIZE] = {};
|
wp_intern u8 temp_buf[TEMP_BUF_SIZE] = {};
|
||||||
|
|
||||||
WpTestFuncResult test_arena_init_buffer(void) {
|
WpTestFuncResult test_arena_init_buffer(void) {
|
||||||
b8 result = wpMemArenaInitBuffer(&buf_arena, buf, ARENA_BUF_SIZE);
|
b8 result = wapp_mem_arena_init_buffer(&buf_arena, buf, ARENA_BUF_SIZE);
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_init_allocated(void) {
|
WpTestFuncResult test_arena_init_allocated(void) {
|
||||||
b8 result = wpMemArenaInitAllocated(&arena, ARENA_CAPACITY);
|
b8 result = wapp_mem_arena_init_allocated(&arena, ARENA_CAPACITY);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_init_succeeds_when_reserving_very_large_size(void) {
|
WpTestFuncResult test_arena_init_succeeds_when_reserving_very_large_size(void) {
|
||||||
WpArena *large_arena = nullptr;
|
Arena *large_arena = nullptr;
|
||||||
u64 capacity = GiB(512);
|
u64 capacity = GiB(512);
|
||||||
b8 result = wpMemArenaInitAllocated(&large_arena, capacity);
|
b8 result = wapp_mem_arena_init_allocated(&large_arena, capacity);
|
||||||
if (result) {
|
if (result) {
|
||||||
wpMemArenaDestroy(&large_arena);
|
wapp_mem_arena_destroy(&large_arena);
|
||||||
}
|
}
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_alloc_with_buffer(void) {
|
WpTestFuncResult test_arena_alloc_with_buffer(void) {
|
||||||
i32 *arr = (i32 *)wpMemArenaAlloc(arena, count * sizeof(i32));
|
i32 *arr = (i32 *)wapp_mem_arena_alloc(arena, count * sizeof(i32));
|
||||||
b8 result = arr != NULL;
|
b8 result = arr != NULL;
|
||||||
|
|
||||||
for (i32 i = 0; i < count; ++i) {
|
for (i32 i = 0; i < count; ++i) {
|
||||||
@@ -50,7 +50,7 @@ WpTestFuncResult test_arena_alloc_with_buffer(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_alloc_succeeds_when_within_capacity(void) {
|
WpTestFuncResult test_arena_alloc_succeeds_when_within_capacity(void) {
|
||||||
array = (i32 *)wpMemArenaAlloc(arena, count * sizeof(i32));
|
array = (i32 *)wapp_mem_arena_alloc(arena, count * sizeof(i32));
|
||||||
b8 result = array != nullptr;
|
b8 result = array != nullptr;
|
||||||
|
|
||||||
for (i32 i = 0; i < count; ++i) {
|
for (i32 i = 0; i < count; ++i) {
|
||||||
@@ -61,7 +61,7 @@ WpTestFuncResult test_arena_alloc_succeeds_when_within_capacity(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_alloc_fails_when_over_capacity(void) {
|
WpTestFuncResult test_arena_alloc_fails_when_over_capacity(void) {
|
||||||
u8 *bytes = (u8 *)wpMemArenaAlloc(arena, ARENA_CAPACITY * 2);
|
u8 *bytes = (u8 *)wapp_mem_arena_alloc(arena, ARENA_CAPACITY * 2);
|
||||||
b8 result = bytes == nullptr;
|
b8 result = bytes == nullptr;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -70,13 +70,13 @@ WpTestFuncResult test_arena_alloc_fails_when_over_capacity(void) {
|
|||||||
WpTestFuncResult test_arena_realloc_bigger_size(void) {
|
WpTestFuncResult test_arena_realloc_bigger_size(void) {
|
||||||
u64 old_count = 10;
|
u64 old_count = 10;
|
||||||
u64 new_count = 20;
|
u64 new_count = 20;
|
||||||
i32 *bytes = (i32 *)wpMemArenaAlloc(arena, old_count * sizeof(i32));
|
i32 *bytes = (i32 *)wapp_mem_arena_alloc(arena, old_count * sizeof(i32));
|
||||||
|
|
||||||
for (u64 i = 0; i < old_count; ++i) {
|
for (u64 i = 0; i < old_count; ++i) {
|
||||||
bytes[i] = (i32)i;
|
bytes[i] = (i32)i;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 *new_bytes = (i32 *)wpMemArenaRealloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
i32 *new_bytes = (i32 *)wapp_mem_arena_realloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
||||||
if (!new_bytes) {
|
if (!new_bytes) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -93,13 +93,13 @@ WpTestFuncResult test_arena_realloc_bigger_size(void) {
|
|||||||
WpTestFuncResult test_arena_realloc_smaller_size(void) {
|
WpTestFuncResult test_arena_realloc_smaller_size(void) {
|
||||||
u64 old_count = 10;
|
u64 old_count = 10;
|
||||||
u64 new_count = 5;
|
u64 new_count = 5;
|
||||||
i32 *bytes = (i32 *)wpMemArenaAlloc(arena, old_count * sizeof(i32));
|
i32 *bytes = (i32 *)wapp_mem_arena_alloc(arena, old_count * sizeof(i32));
|
||||||
|
|
||||||
for (u64 i = 0; i < old_count; ++i) {
|
for (u64 i = 0; i < old_count; ++i) {
|
||||||
bytes[i] = (i32)i;
|
bytes[i] = (i32)i;
|
||||||
}
|
}
|
||||||
|
|
||||||
i32 *new_bytes = (i32 *)wpMemArenaRealloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
i32 *new_bytes = (i32 *)wapp_mem_arena_realloc(arena, bytes, old_count * sizeof(i32), new_count * sizeof(i32));
|
||||||
if (!new_bytes) {
|
if (!new_bytes) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -114,33 +114,33 @@ WpTestFuncResult test_arena_realloc_smaller_size(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_temp_begin(void) {
|
WpTestFuncResult test_arena_temp_begin(void) {
|
||||||
b8 result = wpMemArenaInitBuffer(&temp_arena, temp_buf, TEMP_BUF_SIZE);
|
b8 result = wapp_mem_arena_init_buffer(&temp_arena, temp_buf, TEMP_BUF_SIZE);
|
||||||
i32 *num1 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num1 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num1 != NULL;
|
result = result && num1 != NULL;
|
||||||
|
|
||||||
wpMemArenaTempBegin(temp_arena);
|
wapp_mem_arena_temp_begin(temp_arena);
|
||||||
i32 *num2 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num2 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num2 != NULL;
|
result = result && num2 != NULL;
|
||||||
i32 *num3 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num3 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num3 == NULL;
|
result = result && num3 == NULL;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_temp_end(void) {
|
WpTestFuncResult test_arena_temp_end(void) {
|
||||||
wpMemArenaTempEnd(temp_arena);
|
wapp_mem_arena_temp_end(temp_arena);
|
||||||
i32 *num1 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num1 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
b8 result = num1 != NULL;
|
b8 result = num1 != NULL;
|
||||||
i32 *num2 = (i32 *)wpMemArenaAlloc(temp_arena, sizeof(i32));
|
i32 *num2 = (i32 *)wapp_mem_arena_alloc(temp_arena, sizeof(i32));
|
||||||
result = result && num2 == NULL;
|
result = result && num2 == NULL;
|
||||||
|
|
||||||
wpMemArenaDestroy(&temp_arena);
|
wapp_mem_arena_destroy(&temp_arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_clear(void) {
|
WpTestFuncResult test_arena_clear(void) {
|
||||||
wpMemArenaClear(arena);
|
wapp_mem_arena_clear(arena);
|
||||||
b8 result = true;
|
b8 result = true;
|
||||||
|
|
||||||
for (i32 i = 0; i < count; ++i) {
|
for (i32 i = 0; i < count; ++i) {
|
||||||
@@ -154,14 +154,14 @@ WpTestFuncResult test_arena_clear(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_destroy_buffer(void) {
|
WpTestFuncResult test_arena_destroy_buffer(void) {
|
||||||
wpMemArenaDestroy(&buf_arena);
|
wapp_mem_arena_destroy(&buf_arena);
|
||||||
b8 result = buf_arena == NULL;
|
b8 result = buf_arena == NULL;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_arena_destroy_allocated(void) {
|
WpTestFuncResult test_arena_destroy_allocated(void) {
|
||||||
wpMemArenaDestroy(&arena);
|
wapp_mem_arena_destroy(&arena);
|
||||||
b8 result = arena == nullptr;
|
b8 result = arena == nullptr;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
|
|||||||
+60
-60
@@ -13,75 +13,75 @@ WpTestFuncResult test_cpath_join_path(void) {
|
|||||||
WpStr8 out = wpStr8Buf(MAIN_BUF_SIZE);
|
WpStr8 out = wpStr8Buf(MAIN_BUF_SIZE);
|
||||||
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
||||||
|
|
||||||
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&tmp, "%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
WpStr8List parts = wpDblList(WpStr8);
|
WpStr8List parts = wapp_dbl_list(WpStr8);
|
||||||
wpDblListPushBack(WpStr8, &parts, &tmp);
|
wapp_dbl_list_push_back(WpStr8, &parts, &tmp);
|
||||||
wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("home"));
|
wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("home"));
|
||||||
wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("abdelrahman"));
|
wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("abdelrahman"));
|
||||||
wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("Documents"));
|
wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("Documents"));
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = wpStr8Equal(&out, &expected);
|
result = wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
|
|
||||||
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpStr8ConcatCapped(&tmp, &wpStr8LitRo("home"));
|
wpStr8ConcatCapped(&tmp, &wpStr8LitRo("home"));
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
wpDblListPushFront(WpStr8, &parts, &tmp);
|
wapp_dbl_list_push_front(WpStr8, &parts, &tmp);
|
||||||
|
|
||||||
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpStr8Format(&tmp, "home%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "home%c", WAPP_PATH_SEP);
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
wpDblListPushFront(WpStr8, &parts, &wpStr8Lit("home"));
|
wapp_dbl_list_push_front(WpStr8, &parts, &wpStr8Lit("home"));
|
||||||
|
|
||||||
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListEmpty(WpStr8, &parts);
|
wapp_dbl_list_empty(WpStr8, &parts);
|
||||||
|
|
||||||
wpStr8Format(&tmp, "%chome", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome", WAPP_PATH_SEP);
|
||||||
wpDblListPushBack(WpStr8, &parts, &tmp);
|
wapp_dbl_list_push_back(WpStr8, &parts, &tmp);
|
||||||
wpDblListPushBack(WpStr8, &parts, &wpStr8Lit(""));
|
wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit(""));
|
||||||
|
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
wpDblListPushBack(WpStr8, &parts, &wpStr8Lit(""));
|
wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit(""));
|
||||||
|
|
||||||
wpStr8Format(&expected, "%s", "");
|
wpStr8Format(&expected, "%s", "");
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListPopBack(WpStr8, &parts);
|
wapp_dbl_list_pop_back(WpStr8, &parts);
|
||||||
wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("home"));
|
wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("home"));
|
||||||
|
|
||||||
wpStr8CopyCstrCapped(&expected, "home");
|
wpStr8CopyCstrCapped(&expected, "home");
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_cpath_dirname(void) {
|
WpTestFuncResult test_cpath_dirname(void) {
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(MiB(8));
|
WpAllocator arena = wapp_mem_arena_allocator_init(MiB(8));
|
||||||
if (wpMemAllocatorInvalid(&arena)) {
|
if (wpMemAllocatorInvalid(&arena)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -93,43 +93,43 @@ WpTestFuncResult test_cpath_dirname(void) {
|
|||||||
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
||||||
|
|
||||||
// CASE 1
|
// CASE 1
|
||||||
wpStr8Format(&tmp, "%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%c", WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%c", WP_PATH_SEP);
|
wpStr8Format(&expected, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &tmp);
|
output = wapp_cpath_dirname(&arena, &tmp);
|
||||||
result = output != NULL && wpStr8Equal(output, &expected);
|
result = output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 2
|
// CASE 2
|
||||||
wpStr8Format(&expected, "%s", ".");
|
wpStr8Format(&expected, "%s", ".");
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &wpStr8Lit("home"));
|
output = wapp_cpath_dirname(&arena, &wpStr8Lit("home"));
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 3
|
// CASE 3
|
||||||
output = wpCpathDirname(&arena, &wpStr8Lit(""));
|
output = wapp_cpath_dirname(&arena, &wpStr8Lit(""));
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 4
|
// CASE 4
|
||||||
wpStr8Format(&tmp, "%chome%ctest", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%ctest", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &tmp);
|
output = wapp_cpath_dirname(&arena, &tmp);
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 5
|
// CASE 5
|
||||||
wpStr8Format(&tmp, "%chome%ctest%c", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%ctest%c", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &tmp);
|
output = wapp_cpath_dirname(&arena, &tmp);
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_cpath_dirup(void) {
|
WpTestFuncResult test_cpath_dirup(void) {
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(MiB(8));
|
WpAllocator arena = wapp_mem_arena_allocator_init(MiB(8));
|
||||||
if (wpMemAllocatorInvalid(&arena)) {
|
if (wpMemAllocatorInvalid(&arena)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -141,41 +141,41 @@ WpTestFuncResult test_cpath_dirup(void) {
|
|||||||
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
||||||
|
|
||||||
// CASE 1
|
// CASE 1
|
||||||
wpStr8Format(&tmp, "%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%c", WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%c", WP_PATH_SEP);
|
wpStr8Format(&expected, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 3);
|
output = wapp_cpath_dirup(&arena, &tmp, 3);
|
||||||
result = output != NULL && wpStr8Equal(output, &expected);
|
result = output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 2
|
// CASE 2
|
||||||
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%c", WP_PATH_SEP);
|
wpStr8Format(&expected, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 3);
|
output = wapp_cpath_dirup(&arena, &tmp, 3);
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 3
|
// CASE 3
|
||||||
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8CopyCstrCapped(&expected, ".");
|
wpStr8CopyCstrCapped(&expected, ".");
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 3);
|
output = wapp_cpath_dirup(&arena, &tmp, 3);
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 4
|
// CASE 4
|
||||||
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 2);
|
output = wapp_cpath_dirup(&arena, &tmp, 2);
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 5
|
// CASE 5
|
||||||
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8CopyCstrCapped(&expected, "home");
|
wpStr8CopyCstrCapped(&expected, "home");
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 2);
|
output = wapp_cpath_dirup(&arena, &tmp, 2);
|
||||||
result = result && output != NULL && wpStr8Equal(output, &expected);
|
result = result && output != NULL && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|||||||
+60
-60
@@ -13,93 +13,93 @@ WpTestFuncResult test_cpath_join_path(void) {
|
|||||||
WpStr8 out = wpStr8Buf(MAIN_BUF_SIZE);
|
WpStr8 out = wpStr8Buf(MAIN_BUF_SIZE);
|
||||||
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
||||||
|
|
||||||
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&tmp, "%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
WpStr8List parts = wpDblList(WpStr8);
|
WpStr8List parts = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &parts, &tmp);
|
wapp_dbl_list_push_back(WpStr8, &parts, &tmp);
|
||||||
|
|
||||||
WpStr8 home = wpStr8Lit("home");
|
WpStr8 home = wpStr8Lit("home");
|
||||||
wpDblListPushBack(WpStr8, &parts, &home);
|
wapp_dbl_list_push_back(WpStr8, &parts, &home);
|
||||||
|
|
||||||
WpStr8 user = wpStr8Lit("abdelrahman");
|
WpStr8 user = wpStr8Lit("abdelrahman");
|
||||||
wpDblListPushBack(WpStr8, &parts, &user);
|
wapp_dbl_list_push_back(WpStr8, &parts, &user);
|
||||||
|
|
||||||
WpStr8 docs = wpStr8Lit("Documents");
|
WpStr8 docs = wpStr8Lit("Documents");
|
||||||
wpDblListPushBack(WpStr8, &parts, &docs);
|
wapp_dbl_list_push_back(WpStr8, &parts, &docs);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = wpStr8Equal(&out, &expected);
|
result = wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
|
|
||||||
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
WpStr8RO str = wpStr8LitRo("home");
|
WpStr8RO str = wpStr8LitRo("home");
|
||||||
wpStr8ConcatCapped(&tmp, &str);
|
wpStr8ConcatCapped(&tmp, &str);
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &parts, &tmp);
|
wapp_dbl_list_push_front(WpStr8, &parts, &tmp);
|
||||||
|
|
||||||
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpStr8Format(&tmp, "home%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "home%c", WAPP_PATH_SEP);
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
|
|
||||||
WpStr8 home_2 = wpStr8Lit("home");
|
WpStr8 home_2 = wpStr8Lit("home");
|
||||||
wpDblListPushFront(WpStr8, &parts, &home_2);
|
wapp_dbl_list_push_front(WpStr8, &parts, &home_2);
|
||||||
|
|
||||||
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListEmpty(WpStr8, &parts);
|
wapp_dbl_list_empty(WpStr8, &parts);
|
||||||
|
|
||||||
wpStr8Format(&tmp, "%chome", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &parts, &tmp);
|
wapp_dbl_list_push_back(WpStr8, &parts, &tmp);
|
||||||
|
|
||||||
WpStr8 empty = wpStr8Lit("");
|
WpStr8 empty = wpStr8Lit("");
|
||||||
wpDblListPushBack(WpStr8, &parts, &empty);
|
wapp_dbl_list_push_back(WpStr8, &parts, &empty);
|
||||||
|
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListPopFront(WpStr8, &parts);
|
wapp_dbl_list_pop_front(WpStr8, &parts);
|
||||||
|
|
||||||
WpStr8 empty_2 = wpStr8Lit("");
|
WpStr8 empty_2 = wpStr8Lit("");
|
||||||
wpDblListPushBack(WpStr8, &parts, &empty_2);
|
wapp_dbl_list_push_back(WpStr8, &parts, &empty_2);
|
||||||
|
|
||||||
wpStr8Format(&expected, "%s", "");
|
wpStr8Format(&expected, "%s", "");
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
wpDblListPopBack(WpStr8, &parts);
|
wapp_dbl_list_pop_back(WpStr8, &parts);
|
||||||
|
|
||||||
WpStr8 home_3 = wpStr8Lit("home");
|
WpStr8 home_3 = wpStr8Lit("home");
|
||||||
wpDblListPushBack(WpStr8, &parts, &home_3);
|
wapp_dbl_list_push_back(WpStr8, &parts, &home_3);
|
||||||
|
|
||||||
wpStr8CopyCstrCapped(&expected, "home");
|
wpStr8CopyCstrCapped(&expected, "home");
|
||||||
|
|
||||||
wpCpathJoinPath(&out, &parts);
|
wapp_cpath_join_path(&out, &parts);
|
||||||
result = result && wpStr8Equal(&out, &expected);
|
result = result && wpStr8Equal(&out, &expected);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_cpath_dirname(void) {
|
WpTestFuncResult test_cpath_dirname(void) {
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(MiB(8));
|
WpAllocator arena = wapp_mem_arena_allocator_init(MiB(8));
|
||||||
if (wpMemAllocatorInvalid(&arena)) {
|
if (wpMemAllocatorInvalid(&arena)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -111,45 +111,45 @@ WpTestFuncResult test_cpath_dirname(void) {
|
|||||||
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
||||||
|
|
||||||
// CASE 1
|
// CASE 1
|
||||||
wpStr8Format(&tmp, "%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%c", WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%c", WP_PATH_SEP);
|
wpStr8Format(&expected, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &tmp);
|
output = wapp_cpath_dirname(&arena, &tmp);
|
||||||
result = output != nullptr && wpStr8Equal(output, &expected);
|
result = output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 2
|
// CASE 2
|
||||||
wpStr8Format(&expected, "%s", ".");
|
wpStr8Format(&expected, "%s", ".");
|
||||||
|
|
||||||
WpStr8 path = wpStr8Lit("home");
|
WpStr8 path = wpStr8Lit("home");
|
||||||
output = wpCpathDirname(&arena, &path);
|
output = wapp_cpath_dirname(&arena, &path);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 3
|
// CASE 3
|
||||||
path = wpStr8Lit("");
|
path = wpStr8Lit("");
|
||||||
output = wpCpathDirname(&arena, &path);
|
output = wapp_cpath_dirname(&arena, &path);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 4
|
// CASE 4
|
||||||
wpStr8Format(&tmp, "%chome%ctest", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%ctest", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &tmp);
|
output = wapp_cpath_dirname(&arena, &tmp);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 5
|
// CASE 5
|
||||||
wpStr8Format(&tmp, "%chome%ctest%c", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%ctest%c", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirname(&arena, &tmp);
|
output = wapp_cpath_dirname(&arena, &tmp);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_cpath_dirup(void) {
|
WpTestFuncResult test_cpath_dirup(void) {
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(MiB(8));
|
WpAllocator arena = wapp_mem_arena_allocator_init(MiB(8));
|
||||||
if (wpMemAllocatorInvalid(&arena)) {
|
if (wpMemAllocatorInvalid(&arena)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -161,41 +161,41 @@ WpTestFuncResult test_cpath_dirup(void) {
|
|||||||
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE);
|
||||||
|
|
||||||
// CASE 1
|
// CASE 1
|
||||||
wpStr8Format(&tmp, "%c", WP_PATH_SEP);
|
wpStr8Format(&tmp, "%c", WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%c", WP_PATH_SEP);
|
wpStr8Format(&expected, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 3);
|
output = wapp_cpath_dirup(&arena, &tmp, 3);
|
||||||
result = output != nullptr && wpStr8Equal(output, &expected);
|
result = output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 2
|
// CASE 2
|
||||||
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%c", WP_PATH_SEP);
|
wpStr8Format(&expected, "%c", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 3);
|
output = wapp_cpath_dirup(&arena, &tmp, 3);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 3
|
// CASE 3
|
||||||
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8CopyCstrCapped(&expected, ".");
|
wpStr8CopyCstrCapped(&expected, ".");
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 3);
|
output = wapp_cpath_dirup(&arena, &tmp, 3);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 4
|
// CASE 4
|
||||||
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8Format(&expected, "%chome", WP_PATH_SEP);
|
wpStr8Format(&expected, "%chome", WAPP_PATH_SEP);
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 2);
|
output = wapp_cpath_dirup(&arena, &tmp, 2);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
// CASE 5
|
// CASE 5
|
||||||
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP);
|
wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP);
|
||||||
wpStr8CopyCstrCapped(&expected, "home");
|
wpStr8CopyCstrCapped(&expected, "home");
|
||||||
|
|
||||||
output = wpCpathDirup(&arena, &tmp, 2);
|
output = wapp_cpath_dirup(&arena, &tmp, 2);
|
||||||
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
result = result && output != nullptr && wpStr8Equal(output, &expected);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|||||||
+33
-33
@@ -6,45 +6,45 @@
|
|||||||
wp_intern WpAllocator arena = {0};
|
wp_intern WpAllocator arena = {0};
|
||||||
wp_intern WpStr8RO test_filename = wpStr8LitRoInitialiserList("wapptest.bin");
|
wp_intern WpStr8RO test_filename = wpStr8LitRoInitialiserList("wapptest.bin");
|
||||||
wp_intern WpStr8RO new_filename = wpStr8LitRoInitialiserList("wapptest2.bin");
|
wp_intern WpStr8RO new_filename = wpStr8LitRoInitialiserList("wapptest2.bin");
|
||||||
wp_intern WpFile *test_fp = NULL;
|
wp_intern WFile *test_fp = NULL;
|
||||||
wp_intern WpI32Array src_array1 = wpArray(i32, 0, 1, 2, 3, 4);
|
wp_intern I32Array src_array1 = wapp_array(i32, 0, 1, 2, 3, 4);
|
||||||
wp_intern WpI32Array src_array2 = wpArray(i32, 5, 6, 7, 8, 9);
|
wp_intern I32Array src_array2 = wapp_array(i32, 5, 6, 7, 8, 9);
|
||||||
wp_intern WpI32Array src_array3 = wpArray(i32, 10, 11, 12, 13, 14);
|
wp_intern I32Array src_array3 = wapp_array(i32, 10, 11, 12, 13, 14);
|
||||||
wp_intern WpI32Array dst_array = wpArrayWithCapacity(i32, DST_CAPACITY, false);
|
wp_intern I32Array dst_array = wapp_array_with_capacity(i32, DST_CAPACITY, false);
|
||||||
wp_intern i32 dst_buf[DST_CAPACITY] = {0};
|
wp_intern i32 dst_buf[DST_CAPACITY] = {0};
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_open(void) {
|
WpTestFuncResult test_wapp_file_open(void) {
|
||||||
arena = wpMemArenaAllocatorInit(KiB(16));
|
arena = wapp_mem_arena_allocator_init(KiB(16));
|
||||||
test_fp = wpFileOpen(&arena, &test_filename, WP_ACCESS_WRITE_EX);
|
test_fp = wapp_file_open(&arena, &test_filename, WAPP_ACCESS_WRITE_EX);
|
||||||
return wpTesterResult(test_fp != NULL);
|
return wpTesterResult(test_fp != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_get_current_position(void) {
|
WpTestFuncResult test_wapp_file_get_current_position(void) {
|
||||||
i64 pos = wpFileGetCurrentPosition(test_fp);
|
i64 pos = wapp_file_get_current_position(test_fp);
|
||||||
return wpTesterResult(pos == 0);
|
return wpTesterResult(pos == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_seek(void) {
|
WpTestFuncResult test_wapp_file_seek(void) {
|
||||||
wpFileWriteArray((WpArray)src_array1, test_fp, wpArrayCount(src_array1));
|
wapp_file_write_array((GenericArray)src_array1, test_fp, wapp_array_count(src_array1));
|
||||||
|
|
||||||
i64 seek_result = wpFileSeek(test_fp, 0, WP_SEEK_END);
|
i64 seek_result = wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||||
b8 result = seek_result == (i64)(wpArrayCount(src_array1) * wpArrayItemSize(src_array1));
|
b8 result = seek_result == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1));
|
||||||
|
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_START);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_get_length(void) {
|
WpTestFuncResult test_wapp_file_get_length(void) {
|
||||||
i64 length = wpFileGetLength(test_fp);
|
i64 length = wapp_file_get_length(test_fp);
|
||||||
return wpTesterResult(length == (i64)(wpArrayCount(src_array1) * wpArrayItemSize(src_array1)));
|
return wpTesterResult(length == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_read(void) {
|
WpTestFuncResult test_wapp_file_read(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_START);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||||
|
|
||||||
u64 byte_count = DST_CAPACITY * sizeof(i32);
|
u64 byte_count = DST_CAPACITY * sizeof(i32);
|
||||||
u64 count = wpFileRead((void *)dst_buf, test_fp, byte_count);
|
u64 count = wapp_file_read((void *)dst_buf, test_fp, byte_count);
|
||||||
b8 result = count == byte_count;
|
b8 result = count == byte_count;
|
||||||
|
|
||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
@@ -52,7 +52,7 @@ WpTestFuncResult test_wapp_file_read(void) {
|
|||||||
u64 index = 0;
|
u64 index = 0;
|
||||||
b8 running = true;
|
b8 running = true;
|
||||||
while (running) {
|
while (running) {
|
||||||
result = result && (dst_buf[index] == *wpArrayGet(i32, src_array1, index));
|
result = result && (dst_buf[index] == *wapp_array_get(i32, src_array1, index));
|
||||||
++index;
|
++index;
|
||||||
running = index < DST_CAPACITY;
|
running = index < DST_CAPACITY;
|
||||||
}
|
}
|
||||||
@@ -61,58 +61,58 @@ WpTestFuncResult test_wapp_file_read(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_write(void) {
|
WpTestFuncResult test_wapp_file_write(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_END);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||||
|
|
||||||
u64 expected_count = wpArrayCount(src_array2) * wpArrayItemSize(src_array2);
|
u64 expected_count = wapp_array_count(src_array2) * wapp_array_item_size(src_array2);
|
||||||
i64 count = wpFileWrite((void *)src_array2, test_fp, expected_count);
|
i64 count = wapp_file_write((void *)src_array2, test_fp, expected_count);
|
||||||
|
|
||||||
return wpTesterResult(count >= 0 && (u64)count == expected_count);
|
return wpTesterResult(count >= 0 && (u64)count == expected_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_read_array(void) {
|
WpTestFuncResult test_wapp_file_read_array(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_START);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||||
|
|
||||||
u64 count = wpFileReadArray((WpArray)dst_array, test_fp, wpArrayCount(src_array1));
|
u64 count = wapp_file_read_array((GenericArray)dst_array, test_fp, wapp_array_count(src_array1));
|
||||||
b8 result = count == wpArrayCount(src_array1) &&
|
b8 result = count == wapp_array_count(src_array1) &&
|
||||||
wpArrayCount(dst_array) == wpArrayCount(src_array1);
|
wapp_array_count(dst_array) == wapp_array_count(src_array1);
|
||||||
|
|
||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
u64 index = 0;
|
u64 index = 0;
|
||||||
b8 running = true;
|
b8 running = true;
|
||||||
while (running) {
|
while (running) {
|
||||||
result = result && (*wpArrayGet(i32, dst_array, index) == *wpArrayGet(i32, src_array1, index));
|
result = result && (*wapp_array_get(i32, dst_array, index) == *wapp_array_get(i32, src_array1, index));
|
||||||
++index;
|
++index;
|
||||||
running = index < wpArrayCount(dst_array);
|
running = index < wapp_array_count(dst_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_write_array(void) {
|
WpTestFuncResult test_wapp_file_write_array(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_END);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||||
|
|
||||||
i64 count = wpFileWriteArray((WpArray)src_array3, test_fp, wpArrayCount(src_array3));
|
i64 count = wapp_file_write_array((GenericArray)src_array3, test_fp, wapp_array_count(src_array3));
|
||||||
|
|
||||||
return wpTesterResult(count >= 0 && (u64)count == wpArrayCount(src_array3));
|
return wpTesterResult(count >= 0 && (u64)count == wapp_array_count(src_array3));
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_flush(void) {
|
WpTestFuncResult test_wapp_file_flush(void) {
|
||||||
i32 flush_result = wpFileFlush(test_fp);
|
i32 flush_result = wapp_file_flush(test_fp);
|
||||||
return wpTesterResult(flush_result == 0);
|
return wpTesterResult(flush_result == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_close(void) {
|
WpTestFuncResult test_wapp_file_close(void) {
|
||||||
i32 close_result = wpFileClose(test_fp);
|
i32 close_result = wapp_file_close(test_fp);
|
||||||
return wpTesterResult(close_result == 0);
|
return wpTesterResult(close_result == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_rename(void) {
|
WpTestFuncResult test_wapp_file_rename(void) {
|
||||||
i32 rename_result = wpFileRename(&test_filename, &new_filename);
|
i32 rename_result = wapp_file_rename(&test_filename, &new_filename);
|
||||||
return wpTesterResult(rename_result == 0);
|
return wpTesterResult(rename_result == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_remove(void) {
|
WpTestFuncResult test_wapp_file_remove(void) {
|
||||||
i32 remove_result = wpFileRemove(&new_filename);
|
i32 remove_result = wapp_file_remove(&new_filename);
|
||||||
return wpTesterResult(remove_result == 0);
|
return wpTesterResult(remove_result == 0);
|
||||||
}
|
}
|
||||||
|
|||||||
+37
-37
@@ -6,49 +6,49 @@
|
|||||||
wp_intern WpAllocator arena = {};
|
wp_intern WpAllocator arena = {};
|
||||||
wp_intern WpStr8RO test_filename = wpStr8LitRoInitialiserList("wapptest.bin");
|
wp_intern WpStr8RO test_filename = wpStr8LitRoInitialiserList("wapptest.bin");
|
||||||
wp_intern WpStr8RO new_filename = wpStr8LitRoInitialiserList("wapptest2.bin");
|
wp_intern WpStr8RO new_filename = wpStr8LitRoInitialiserList("wapptest2.bin");
|
||||||
wp_intern WpFile *test_fp = NULL;
|
wp_intern WFile *test_fp = NULL;
|
||||||
wp_intern i32 dst_buf[DST_CAPACITY] = {0};
|
wp_intern i32 dst_buf[DST_CAPACITY] = {0};
|
||||||
wp_intern WpI32Array src_array1;
|
wp_intern I32Array src_array1;
|
||||||
wp_intern WpI32Array src_array2;
|
wp_intern I32Array src_array2;
|
||||||
wp_intern WpI32Array src_array3;
|
wp_intern I32Array src_array3;
|
||||||
wp_intern WpI32Array dst_array ;
|
wp_intern I32Array dst_array ;
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_open(void) {
|
WpTestFuncResult test_wapp_file_open(void) {
|
||||||
arena = wpMemArenaAllocatorInit(KiB(16));
|
arena = wapp_mem_arena_allocator_init(KiB(16));
|
||||||
src_array1 = wpArray(i32, 0, 1, 2, 3, 4);
|
src_array1 = wapp_array(i32, 0, 1, 2, 3, 4);
|
||||||
src_array2 = wpArray(i32, 5, 6, 7, 8, 9);
|
src_array2 = wapp_array(i32, 5, 6, 7, 8, 9);
|
||||||
src_array3 = wpArray(i32, 10, 11, 12, 13, 14);
|
src_array3 = wapp_array(i32, 10, 11, 12, 13, 14);
|
||||||
dst_array = wpArrayWithCapacity(i32, DST_CAPACITY, false);
|
dst_array = wapp_array_with_capacity(i32, DST_CAPACITY, false);
|
||||||
test_fp = wpFileOpen(&arena, &test_filename, WP_ACCESS_WRITE_EX);
|
test_fp = wapp_file_open(&arena, &test_filename, WAPP_ACCESS_WRITE_EX);
|
||||||
return wpTesterResult(test_fp != NULL);
|
return wpTesterResult(test_fp != NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_get_current_position(void) {
|
WpTestFuncResult test_wapp_file_get_current_position(void) {
|
||||||
i64 pos = wpFileGetCurrentPosition(test_fp);
|
i64 pos = wapp_file_get_current_position(test_fp);
|
||||||
return wpTesterResult(pos == 0);
|
return wpTesterResult(pos == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_seek(void) {
|
WpTestFuncResult test_wapp_file_seek(void) {
|
||||||
wpFileWriteArray((WpArray)src_array1, test_fp, wpArrayCount(src_array1));
|
wapp_file_write_array((GenericArray)src_array1, test_fp, wapp_array_count(src_array1));
|
||||||
|
|
||||||
i64 seek_result = wpFileSeek(test_fp, 0, WP_SEEK_END);
|
i64 seek_result = wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||||
b8 result = seek_result == (i64)(wpArrayCount(src_array1) * wpArrayItemSize(src_array1));
|
b8 result = seek_result == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1));
|
||||||
|
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_START);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_get_length(void) {
|
WpTestFuncResult test_wapp_file_get_length(void) {
|
||||||
i64 length = wpFileGetLength(test_fp);
|
i64 length = wapp_file_get_length(test_fp);
|
||||||
return wpTesterResult(length == (i64)(wpArrayCount(src_array1) * wpArrayItemSize(src_array1)));
|
return wpTesterResult(length == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_read(void) {
|
WpTestFuncResult test_wapp_file_read(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_START);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||||
|
|
||||||
u64 byte_count = DST_CAPACITY * sizeof(i32);
|
u64 byte_count = DST_CAPACITY * sizeof(i32);
|
||||||
u64 count = wpFileRead((void *)dst_buf, test_fp, byte_count);
|
u64 count = wapp_file_read((void *)dst_buf, test_fp, byte_count);
|
||||||
b8 result = count == byte_count;
|
b8 result = count == byte_count;
|
||||||
|
|
||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
@@ -56,7 +56,7 @@ WpTestFuncResult test_wapp_file_read(void) {
|
|||||||
u64 index = 0;
|
u64 index = 0;
|
||||||
b8 running = true;
|
b8 running = true;
|
||||||
while (running) {
|
while (running) {
|
||||||
result = result && (dst_buf[index] == *wpArrayGet(i32, src_array1, index));
|
result = result && (dst_buf[index] == *wapp_array_get(i32, src_array1, index));
|
||||||
++index;
|
++index;
|
||||||
running = index < DST_CAPACITY;
|
running = index < DST_CAPACITY;
|
||||||
}
|
}
|
||||||
@@ -65,58 +65,58 @@ WpTestFuncResult test_wapp_file_read(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_write(void) {
|
WpTestFuncResult test_wapp_file_write(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_END);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||||
|
|
||||||
u64 expected_count = wpArrayCount(src_array2) * wpArrayItemSize(src_array2);
|
u64 expected_count = wapp_array_count(src_array2) * wapp_array_item_size(src_array2);
|
||||||
i64 count = wpFileWrite((void *)src_array2, test_fp, expected_count);
|
i64 count = wapp_file_write((void *)src_array2, test_fp, expected_count);
|
||||||
|
|
||||||
return wpTesterResult(count >= 0 && (u64)count == expected_count);
|
return wpTesterResult(count >= 0 && (u64)count == expected_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_read_array(void) {
|
WpTestFuncResult test_wapp_file_read_array(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_START);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||||
|
|
||||||
u64 count = wpFileReadArray((WpArray)dst_array, test_fp, wpArrayCount(src_array1));
|
u64 count = wapp_file_read_array((GenericArray)dst_array, test_fp, wapp_array_count(src_array1));
|
||||||
b8 result = count == wpArrayCount(src_array1) &&
|
b8 result = count == wapp_array_count(src_array1) &&
|
||||||
wpArrayCount(dst_array) == wpArrayCount(src_array1);
|
wapp_array_count(dst_array) == wapp_array_count(src_array1);
|
||||||
|
|
||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
u64 index = 0;
|
u64 index = 0;
|
||||||
b8 running = true;
|
b8 running = true;
|
||||||
while (running) {
|
while (running) {
|
||||||
result = result && (*wpArrayGet(i32, dst_array, index) == *wpArrayGet(i32, src_array1, index));
|
result = result && (*wapp_array_get(i32, dst_array, index) == *wapp_array_get(i32, src_array1, index));
|
||||||
++index;
|
++index;
|
||||||
running = index < wpArrayCount(dst_array);
|
running = index < wapp_array_count(dst_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_write_array(void) {
|
WpTestFuncResult test_wapp_file_write_array(void) {
|
||||||
wpFileSeek(test_fp, 0, WP_SEEK_END);
|
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||||
|
|
||||||
i64 count = wpFileWriteArray((WpArray)src_array3, test_fp, wpArrayCount(src_array3));
|
i64 count = wapp_file_write_array((GenericArray)src_array3, test_fp, wapp_array_count(src_array3));
|
||||||
|
|
||||||
return wpTesterResult(count >= 0 && (u64)count == wpArrayCount(src_array3));
|
return wpTesterResult(count >= 0 && (u64)count == wapp_array_count(src_array3));
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_flush(void) {
|
WpTestFuncResult test_wapp_file_flush(void) {
|
||||||
i32 flush_result = wpFileFlush(test_fp);
|
i32 flush_result = wapp_file_flush(test_fp);
|
||||||
return wpTesterResult(flush_result == 0);
|
return wpTesterResult(flush_result == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_close(void) {
|
WpTestFuncResult test_wapp_file_close(void) {
|
||||||
i32 close_result = wpFileClose(test_fp);
|
i32 close_result = wapp_file_close(test_fp);
|
||||||
return wpTesterResult(close_result == 0);
|
return wpTesterResult(close_result == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_rename(void) {
|
WpTestFuncResult test_wapp_file_rename(void) {
|
||||||
i32 rename_result = wpFileRename(&test_filename, &new_filename);
|
i32 rename_result = wapp_file_rename(&test_filename, &new_filename);
|
||||||
return wpTesterResult(rename_result == 0);
|
return wpTesterResult(rename_result == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_wapp_file_remove(void) {
|
WpTestFuncResult test_wapp_file_remove(void) {
|
||||||
i32 remove_result = wpFileRemove(&new_filename);
|
i32 remove_result = wapp_file_remove(&new_filename);
|
||||||
return wpTesterResult(remove_result == 0);
|
return wpTesterResult(remove_result == 0);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ WpTestFuncResult test_queue_push(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_queue_push_alloc(void) {
|
WpTestFuncResult test_queue_push_alloc(void) {
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(MiB(64));
|
WpAllocator arena = wapp_mem_arena_allocator_init(MiB(64));
|
||||||
WpI32Queue queue = wpQueue(i32, CAPACITY);
|
WpI32Queue queue = wpQueue(i32, CAPACITY);
|
||||||
|
|
||||||
for (u64 i = 0; i < CAPACITY; ++i) {
|
for (u64 i = 0; i < CAPACITY; ++i) {
|
||||||
@@ -65,7 +65,7 @@ WpTestFuncResult test_queue_push_alloc(void) {
|
|||||||
result = result && arr[i] == (i32)(2 + i);
|
result = result && arr[i] == (i32)(2 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ WpTestFuncResult test_queue_push(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_queue_push_alloc(void) {
|
WpTestFuncResult test_queue_push_alloc(void) {
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(MiB(64));
|
WpAllocator arena = wapp_mem_arena_allocator_init(MiB(64));
|
||||||
WpI32Queue queue = wpQueue(i32, CAPACITY);
|
WpI32Queue queue = wpQueue(i32, CAPACITY);
|
||||||
|
|
||||||
for (u64 i = 0; i < CAPACITY; ++i) {
|
for (u64 i = 0; i < CAPACITY; ++i) {
|
||||||
@@ -63,7 +63,7 @@ WpTestFuncResult test_queue_push_alloc(void) {
|
|||||||
result = result && arr[i] == (i32)(2 + i);
|
result = result && arr[i] == (i32)(2 + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,24 +5,24 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
WpTestFuncResult test_commander_cmd_success(void) {
|
WpTestFuncResult test_commander_cmd_success(void) {
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit("echo"));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit("echo"));
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit("hello world"));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit("hello world"));
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_DISCARD, NULL, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_DISCARD, NULL, &cmd);
|
||||||
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_NO_ERROR;
|
result.error == SHELL_ERR_NO_ERROR;
|
||||||
|
|
||||||
return wpTesterResult(succeeded);
|
return wpTesterResult(succeeded);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_commander_cmd_failure(void) {
|
WpTestFuncResult test_commander_cmd_failure(void) {
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit("grep"));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit("grep"));
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_DISCARD, NULL, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_DISCARD, NULL, &cmd);
|
||||||
b8 failed = result.exited && result.exit_code != EXIT_SUCCESS &&
|
b8 failed = result.exited && result.exit_code != EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_NO_ERROR;
|
result.error == SHELL_ERR_NO_ERROR;
|
||||||
|
|
||||||
return wpTesterResult(failed);
|
return wpTesterResult(failed);
|
||||||
}
|
}
|
||||||
@@ -33,13 +33,13 @@ WpTestFuncResult test_commander_cmd_out_buf_success(void) {
|
|||||||
char msg[] = "hello world";
|
char msg[] = "hello world";
|
||||||
wpStr8CopyCstrCapped(&expected, msg);
|
wpStr8CopyCstrCapped(&expected, msg);
|
||||||
|
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit("echo"));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit("echo"));
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit(msg));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit(msg));
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
||||||
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_NO_ERROR && wpStr8EqualToCount(&buf, &expected, strlen(msg));
|
result.error == SHELL_ERR_NO_ERROR && wpStr8EqualToCount(&buf, &expected, strlen(msg));
|
||||||
|
|
||||||
return wpTesterResult(succeeded);
|
return wpTesterResult(succeeded);
|
||||||
}
|
}
|
||||||
@@ -50,13 +50,13 @@ WpTestFuncResult test_commander_cmd_out_buf_failure(void) {
|
|||||||
char msg[] = "hello world";
|
char msg[] = "hello world";
|
||||||
wpStr8CopyCstrCapped(&expected, msg);
|
wpStr8CopyCstrCapped(&expected, msg);
|
||||||
|
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit("echo"));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit("echo"));
|
||||||
wpDblListPushBack(WpStr8, &cmd, &wpStr8Lit(msg));
|
wapp_dbl_list_push_back(WpStr8, &cmd, &wpStr8Lit(msg));
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
||||||
b8 failed = !result.exited && result.exit_code != EXIT_SUCCESS &&
|
b8 failed = !result.exited && result.exit_code != EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_OUT_BUF_FULL && !wpStr8Equal(&buf, &expected);
|
result.error == SHELL_ERR_OUT_BUF_FULL && !wpStr8Equal(&buf, &expected);
|
||||||
|
|
||||||
return wpTesterResult(failed);
|
return wpTesterResult(failed);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,27 +5,27 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
WpTestFuncResult test_commander_cmd_success(void) {
|
WpTestFuncResult test_commander_cmd_success(void) {
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
WpStr8 echo = wpStr8Lit("echo");
|
WpStr8 echo = wpStr8Lit("echo");
|
||||||
WpStr8 msg = wpStr8Lit("hello world");
|
WpStr8 msg = wpStr8Lit("hello world");
|
||||||
wpDblListPushBack(WpStr8, &cmd, &echo);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &echo);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &msg);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &msg);
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_DISCARD, nullptr, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_DISCARD, nullptr, &cmd);
|
||||||
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_NO_ERROR;
|
result.error == SHELL_ERR_NO_ERROR;
|
||||||
|
|
||||||
return wpTesterResult(succeeded);
|
return wpTesterResult(succeeded);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_commander_cmd_failure(void) {
|
WpTestFuncResult test_commander_cmd_failure(void) {
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
WpStr8 grep = wpStr8Lit("grep");
|
WpStr8 grep = wpStr8Lit("grep");
|
||||||
wpDblListPushBack(WpStr8, &cmd, &grep);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &grep);
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_DISCARD, nullptr, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_DISCARD, nullptr, &cmd);
|
||||||
b8 failed = result.exited && result.exit_code != EXIT_SUCCESS &&
|
b8 failed = result.exited && result.exit_code != EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_NO_ERROR;
|
result.error == SHELL_ERR_NO_ERROR;
|
||||||
|
|
||||||
return wpTesterResult(failed);
|
return wpTesterResult(failed);
|
||||||
}
|
}
|
||||||
@@ -36,15 +36,15 @@ WpTestFuncResult test_commander_cmd_out_buf_success(void) {
|
|||||||
char msg[] = "hello world";
|
char msg[] = "hello world";
|
||||||
wpStr8CopyCstrCapped(&expected, msg);
|
wpStr8CopyCstrCapped(&expected, msg);
|
||||||
|
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
WpStr8 echo = wpStr8Lit("echo");
|
WpStr8 echo = wpStr8Lit("echo");
|
||||||
WpStr8 arg = wpStr8Lit(msg);
|
WpStr8 arg = wpStr8Lit(msg);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &echo);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &echo);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &arg);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &arg);
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
||||||
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
b8 succeeded = result.exited && result.exit_code == EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_NO_ERROR && wpStr8EqualToCount(&buf, &expected, strlen(msg));
|
result.error == SHELL_ERR_NO_ERROR && wpStr8EqualToCount(&buf, &expected, strlen(msg));
|
||||||
|
|
||||||
return wpTesterResult(succeeded);
|
return wpTesterResult(succeeded);
|
||||||
}
|
}
|
||||||
@@ -55,15 +55,15 @@ WpTestFuncResult test_commander_cmd_out_buf_failure(void) {
|
|||||||
char msg[] = "hello world";
|
char msg[] = "hello world";
|
||||||
wpStr8CopyCstrCapped(&expected, msg);
|
wpStr8CopyCstrCapped(&expected, msg);
|
||||||
|
|
||||||
WpStr8List cmd = wpDblList(WpStr8);
|
WpStr8List cmd = wapp_dbl_list(WpStr8);
|
||||||
WpStr8 echo = wpStr8Lit("echo");
|
WpStr8 echo = wpStr8Lit("echo");
|
||||||
WpStr8 arg = wpStr8Lit(msg);
|
WpStr8 arg = wpStr8Lit(msg);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &echo);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &echo);
|
||||||
wpDblListPushBack(WpStr8, &cmd, &arg);
|
wapp_dbl_list_push_back(WpStr8, &cmd, &arg);
|
||||||
|
|
||||||
WpCmdResult result = wpShellCommanderExecute(WP_SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
CMDResult result = wapp_shell_commander_execute(SHELL_OUTPUT_CAPTURE, &buf, &cmd);
|
||||||
b8 failed = !result.exited && result.exit_code != EXIT_SUCCESS &&
|
b8 failed = !result.exited && result.exit_code != EXIT_SUCCESS &&
|
||||||
result.error == WP_SHELL_ERR_OUT_BUF_FULL && !wpStr8Equal(&buf, &expected);
|
result.error == SHELL_ERR_OUT_BUF_FULL && !wpStr8Equal(&buf, &expected);
|
||||||
|
|
||||||
return wpTesterResult(failed);
|
return wpTesterResult(failed);
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-28
@@ -77,7 +77,7 @@ WpTestFuncResult test_str8_buf(void) {
|
|||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_buf(void) {
|
WpTestFuncResult test_str8_alloc_buf(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -98,14 +98,14 @@ WpTestFuncResult test_str8_alloc_buf(void) {
|
|||||||
result = result && s->capacity == capacity && s->size == strlen(cstr) && memcmp(s->buf, cstr, s->size) == 0;
|
result = result && s->capacity == capacity && s->size == strlen(cstr) && memcmp(s->buf, cstr, s->size) == 0;
|
||||||
|
|
||||||
TEST_ALLOC_BUF_CLEANUP:
|
TEST_ALLOC_BUF_CLEANUP:
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_cstr(void) {
|
WpTestFuncResult test_str8_alloc_cstr(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -119,14 +119,14 @@ WpTestFuncResult test_str8_alloc_cstr(void) {
|
|||||||
|
|
||||||
result = s->size == length && memcmp(s->buf, str, length) == 0;
|
result = s->size == length && memcmp(s->buf, str, length) == 0;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_str8(void) {
|
WpTestFuncResult test_str8_alloc_str8(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -139,14 +139,14 @@ WpTestFuncResult test_str8_alloc_str8(void) {
|
|||||||
|
|
||||||
result = wpStr8Equal(s, &str);
|
result = wpStr8Equal(s, &str);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_substr(void) {
|
WpTestFuncResult test_str8_alloc_substr(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -159,7 +159,7 @@ WpTestFuncResult test_str8_alloc_substr(void) {
|
|||||||
|
|
||||||
result = s->size == 5 && memcmp(s->buf, "elrah", s->size) == 0;
|
result = s->size == 5 && memcmp(s->buf, "elrah", s->size) == 0;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -289,7 +289,7 @@ WpTestFuncResult test_str8_slice(void) {
|
|||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_concat(void) {
|
WpTestFuncResult test_str8_alloc_concat(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("Hello world");
|
WpStr8 str = wpStr8Lit("Hello world");
|
||||||
WpStr8 suffix1 = wpStr8Lit(" from me.");
|
WpStr8 suffix1 = wpStr8Lit(" from me.");
|
||||||
@@ -305,7 +305,7 @@ WpTestFuncResult test_str8_alloc_concat(void) {
|
|||||||
output = wpStr8AllocConcat(&arena, output, &suffix2);
|
output = wpStr8AllocConcat(&arena, output, &suffix2);
|
||||||
result = result && output->size == concat2.size && wpStr8Equal(output, &concat2);
|
result = result && output->size == concat2.size && wpStr8Equal(output, &concat2);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -410,7 +410,7 @@ WpTestFuncResult test_str8_rfind(void) {
|
|||||||
|
|
||||||
WpTestFuncResult test_str8_split(void) {
|
WpTestFuncResult test_str8_split(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim1 = wpStr8Lit(" ");
|
WpStr8 delim1 = wpStr8Lit(" ");
|
||||||
@@ -443,7 +443,7 @@ WpTestFuncResult test_str8_split(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running1) {
|
while (running1) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list1, index1);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list1, index1);
|
||||||
result = result && wpStr8Equal(node, &(splits1[index1]));
|
result = result && wpStr8Equal(node, &(splits1[index1]));
|
||||||
|
|
||||||
++index1;
|
++index1;
|
||||||
@@ -453,21 +453,21 @@ WpTestFuncResult test_str8_split(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running2) {
|
while (running2) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list2, index2);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list2, index2);
|
||||||
result = result && wpStr8Equal(node, &(splits2[index2]));
|
result = result && wpStr8Equal(node, &(splits2[index2]));
|
||||||
|
|
||||||
++index2;
|
++index2;
|
||||||
running2 = index2 < count2;
|
running2 = index2 < count2;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_split_with_max(void) {
|
WpTestFuncResult test_str8_split_with_max(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim = wpStr8Lit(" ");
|
WpStr8 delim = wpStr8Lit(" ");
|
||||||
@@ -488,21 +488,21 @@ WpTestFuncResult test_str8_split_with_max(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running) {
|
while (running) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list, index);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list, index);
|
||||||
result = result && wpStr8Equal(node, &(splits[index]));
|
result = result && wpStr8Equal(node, &(splits[index]));
|
||||||
|
|
||||||
++index;
|
++index;
|
||||||
running = index < count;
|
running = index < count;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_rsplit(void) {
|
WpTestFuncResult test_str8_rsplit(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim1 = wpStr8Lit(" ");
|
WpStr8 delim1 = wpStr8Lit(" ");
|
||||||
@@ -535,7 +535,7 @@ WpTestFuncResult test_str8_rsplit(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running1) {
|
while (running1) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list1, index1);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list1, index1);
|
||||||
result = result && wpStr8Equal(node, &(splits1[index1]));
|
result = result && wpStr8Equal(node, &(splits1[index1]));
|
||||||
|
|
||||||
++index1;
|
++index1;
|
||||||
@@ -545,21 +545,21 @@ WpTestFuncResult test_str8_rsplit(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running2) {
|
while (running2) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list2, index2);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list2, index2);
|
||||||
result = result && wpStr8Equal(node, &(splits2[index2]));
|
result = result && wpStr8Equal(node, &(splits2[index2]));
|
||||||
|
|
||||||
++index2;
|
++index2;
|
||||||
running2 = index2 < count2;
|
running2 = index2 < count2;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_rsplit_with_max(void) {
|
WpTestFuncResult test_str8_rsplit_with_max(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim = wpStr8Lit(" ");
|
WpStr8 delim = wpStr8Lit(" ");
|
||||||
@@ -580,21 +580,21 @@ WpTestFuncResult test_str8_rsplit_with_max(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running) {
|
while (running) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list, index);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list, index);
|
||||||
result = result && wpStr8Equal(node, &(splits[index]));
|
result = result && wpStr8Equal(node, &(splits[index]));
|
||||||
|
|
||||||
++index;
|
++index;
|
||||||
running = index < count;
|
running = index < count;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_join(void) {
|
WpTestFuncResult test_str8_join(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim1 = wpStr8Lit(" ");
|
WpStr8 delim1 = wpStr8Lit(" ");
|
||||||
@@ -607,7 +607,7 @@ WpTestFuncResult test_str8_join(void) {
|
|||||||
result = join1->size == str.size && wpStr8Equal(join1, &str);
|
result = join1->size == str.size && wpStr8Equal(join1, &str);
|
||||||
result = result && join2->size == str.size && wpStr8Equal(join2, &str);
|
result = result && join2->size == str.size && wpStr8Equal(join2, &str);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -616,10 +616,10 @@ WpTestFuncResult test_str8_from_bytes(void) {
|
|||||||
b8 result;
|
b8 result;
|
||||||
|
|
||||||
WpStr8 str = wpStr8Buf(1024);
|
WpStr8 str = wpStr8Buf(1024);
|
||||||
WpU8Array bytes = wpArray(u8, 'W', 'A', 'P', 'P');
|
U8Array bytes = wapp_array(u8, 'W', 'A', 'P', 'P');
|
||||||
wpStr8FromBytes(&str, bytes);
|
wpStr8FromBytes(&str, bytes);
|
||||||
|
|
||||||
result = str.size == wpArrayCount(bytes) * wpArrayItemSize(bytes);
|
result = str.size == wapp_array_count(bytes) * wapp_array_item_size(bytes);
|
||||||
result = result && wpStr8Equal(&str, &wpStr8LitRo("WAPP"));
|
result = result && wpStr8Equal(&str, &wpStr8LitRo("WAPP"));
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
|
|||||||
+29
-29
@@ -77,7 +77,7 @@ WpTestFuncResult test_str8_buf(void) {
|
|||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_buf(void) {
|
WpTestFuncResult test_str8_alloc_buf(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -87,7 +87,7 @@ WpTestFuncResult test_str8_alloc_buf(void) {
|
|||||||
WpStr8 *s = wpStr8AllocBuf(&allocator, capacity);
|
WpStr8 *s = wpStr8AllocBuf(&allocator, capacity);
|
||||||
if (!s) {
|
if (!s) {
|
||||||
result = false;
|
result = false;
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -98,14 +98,14 @@ WpTestFuncResult test_str8_alloc_buf(void) {
|
|||||||
|
|
||||||
result = result && s->capacity == capacity && s->size == strlen(cstr) && memcmp(s->buf, cstr, s->size) == 0;
|
result = result && s->capacity == capacity && s->size == strlen(cstr) && memcmp(s->buf, cstr, s->size) == 0;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_cstr(void) {
|
WpTestFuncResult test_str8_alloc_cstr(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -119,14 +119,14 @@ WpTestFuncResult test_str8_alloc_cstr(void) {
|
|||||||
|
|
||||||
result = s->size == length && memcmp(s->buf, str, length) == 0;
|
result = s->size == length && memcmp(s->buf, str, length) == 0;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_str8(void) {
|
WpTestFuncResult test_str8_alloc_str8(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -139,14 +139,14 @@ WpTestFuncResult test_str8_alloc_str8(void) {
|
|||||||
|
|
||||||
result = wpStr8Equal(s, &str);
|
result = wpStr8Equal(s, &str);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_substr(void) {
|
WpTestFuncResult test_str8_alloc_substr(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator allocator = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator allocator = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
if (wpMemAllocatorInvalid(&allocator)) {
|
if (wpMemAllocatorInvalid(&allocator)) {
|
||||||
return wpTesterResult(false);
|
return wpTesterResult(false);
|
||||||
}
|
}
|
||||||
@@ -159,7 +159,7 @@ WpTestFuncResult test_str8_alloc_substr(void) {
|
|||||||
|
|
||||||
result = s->size == 5 && memcmp(s->buf, "elrah", s->size) == 0;
|
result = s->size == 5 && memcmp(s->buf, "elrah", s->size) == 0;
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&allocator);
|
wapp_mem_arena_allocator_destroy(&allocator);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -289,7 +289,7 @@ WpTestFuncResult test_str8_slice(void) {
|
|||||||
|
|
||||||
WpTestFuncResult test_str8_alloc_concat(void) {
|
WpTestFuncResult test_str8_alloc_concat(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("Hello world");
|
WpStr8 str = wpStr8Lit("Hello world");
|
||||||
WpStr8 suffix1 = wpStr8Lit(" from me.");
|
WpStr8 suffix1 = wpStr8Lit(" from me.");
|
||||||
@@ -305,7 +305,7 @@ WpTestFuncResult test_str8_alloc_concat(void) {
|
|||||||
output = wpStr8AllocConcat(&arena, output, &suffix2);
|
output = wpStr8AllocConcat(&arena, output, &suffix2);
|
||||||
result = result && output->size == concat2.size && wpStr8Equal(output, &concat2);
|
result = result && output->size == concat2.size && wpStr8Equal(output, &concat2);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -410,7 +410,7 @@ WpTestFuncResult test_str8_rfind(void) {
|
|||||||
|
|
||||||
WpTestFuncResult test_str8_split(void) {
|
WpTestFuncResult test_str8_split(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim1 = wpStr8Lit(" ");
|
WpStr8 delim1 = wpStr8Lit(" ");
|
||||||
@@ -443,7 +443,7 @@ WpTestFuncResult test_str8_split(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running1) {
|
while (running1) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list1, index1);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list1, index1);
|
||||||
result = result && wpStr8Equal(node, &(splits1[index1]));
|
result = result && wpStr8Equal(node, &(splits1[index1]));
|
||||||
|
|
||||||
++index1;
|
++index1;
|
||||||
@@ -453,21 +453,21 @@ WpTestFuncResult test_str8_split(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running2) {
|
while (running2) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list2, index2);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list2, index2);
|
||||||
result = result && wpStr8Equal(node, &(splits2[index2]));
|
result = result && wpStr8Equal(node, &(splits2[index2]));
|
||||||
|
|
||||||
++index2;
|
++index2;
|
||||||
running2 = index2 < count2;
|
running2 = index2 < count2;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_split_with_max(void) {
|
WpTestFuncResult test_str8_split_with_max(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim = wpStr8Lit(" ");
|
WpStr8 delim = wpStr8Lit(" ");
|
||||||
@@ -488,21 +488,21 @@ WpTestFuncResult test_str8_split_with_max(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running) {
|
while (running) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list, index);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list, index);
|
||||||
result = result && wpStr8Equal(node, &(splits[index]));
|
result = result && wpStr8Equal(node, &(splits[index]));
|
||||||
|
|
||||||
++index;
|
++index;
|
||||||
running = index < count;
|
running = index < count;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_rsplit(void) {
|
WpTestFuncResult test_str8_rsplit(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim1 = wpStr8Lit(" ");
|
WpStr8 delim1 = wpStr8Lit(" ");
|
||||||
@@ -535,7 +535,7 @@ WpTestFuncResult test_str8_rsplit(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running1) {
|
while (running1) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list1, index1);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list1, index1);
|
||||||
result = result && wpStr8Equal(node, &(splits1[index1]));
|
result = result && wpStr8Equal(node, &(splits1[index1]));
|
||||||
|
|
||||||
++index1;
|
++index1;
|
||||||
@@ -545,21 +545,21 @@ WpTestFuncResult test_str8_rsplit(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running2) {
|
while (running2) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list2, index2);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list2, index2);
|
||||||
result = result && wpStr8Equal(node, &(splits2[index2]));
|
result = result && wpStr8Equal(node, &(splits2[index2]));
|
||||||
|
|
||||||
++index2;
|
++index2;
|
||||||
running2 = index2 < count2;
|
running2 = index2 < count2;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_rsplit_with_max(void) {
|
WpTestFuncResult test_str8_rsplit_with_max(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim = wpStr8Lit(" ");
|
WpStr8 delim = wpStr8Lit(" ");
|
||||||
@@ -580,21 +580,21 @@ WpTestFuncResult test_str8_rsplit_with_max(void) {
|
|||||||
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
// NOTE (Abdelrahman): Uses a while loop instead of a for loop to get rid of
|
||||||
// MSVC Spectre mitigation warnings
|
// MSVC Spectre mitigation warnings
|
||||||
while (running) {
|
while (running) {
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, list, index);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, list, index);
|
||||||
result = result && wpStr8Equal(node, &(splits[index]));
|
result = result && wpStr8Equal(node, &(splits[index]));
|
||||||
|
|
||||||
++index;
|
++index;
|
||||||
running = index < count;
|
running = index < count;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
WpTestFuncResult test_str8_join(void) {
|
WpTestFuncResult test_str8_join(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
WpAllocator arena = wpMemArenaAllocatorInit(KiB(100));
|
WpAllocator arena = wapp_mem_arena_allocator_init(KiB(100));
|
||||||
|
|
||||||
WpStr8 str = wpStr8Lit("hello world from me");
|
WpStr8 str = wpStr8Lit("hello world from me");
|
||||||
WpStr8 delim1 = wpStr8Lit(" ");
|
WpStr8 delim1 = wpStr8Lit(" ");
|
||||||
@@ -607,7 +607,7 @@ WpTestFuncResult test_str8_join(void) {
|
|||||||
result = join1->size == str.size && wpStr8Equal(join1, &str);
|
result = join1->size == str.size && wpStr8Equal(join1, &str);
|
||||||
result = result && join2->size == str.size && wpStr8Equal(join2, &str);
|
result = result && join2->size == str.size && wpStr8Equal(join2, &str);
|
||||||
|
|
||||||
wpMemArenaAllocatorDestroy(&arena);
|
wapp_mem_arena_allocator_destroy(&arena);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
}
|
}
|
||||||
@@ -617,10 +617,10 @@ WpTestFuncResult test_str8_from_bytes(void) {
|
|||||||
|
|
||||||
WpStr8 str = wpStr8Buf(1024);
|
WpStr8 str = wpStr8Buf(1024);
|
||||||
WpStr8 expected = wpStr8LitRo("WAPP");
|
WpStr8 expected = wpStr8LitRo("WAPP");
|
||||||
WpU8Array bytes = wpArray(u8, 'W', 'A', 'P', 'P');
|
U8Array bytes = wapp_array(u8, 'W', 'A', 'P', 'P');
|
||||||
wpStr8FromBytes(&str, bytes);
|
wpStr8FromBytes(&str, bytes);
|
||||||
|
|
||||||
result = str.size == wpArrayCount(bytes) * wpArrayItemSize(bytes);
|
result = str.size == wapp_array_count(bytes) * wapp_array_item_size(bytes);
|
||||||
result = result && wpStr8Equal(&str, &expected);
|
result = result && wpStr8Equal(&str, &expected);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
|
|||||||
+68
-68
@@ -10,27 +10,27 @@ WpTestFuncResult test_str8_list_get(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, &list, 0);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, &list, 0);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1);
|
result = node == &s1 && wpStr8Equal(node, &s1);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 1);
|
node = wapp_dbl_list_get(WpStr8, &list, 1);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2);
|
result = result && node == &s2 && wpStr8Equal(node, &s2);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 2);
|
node = wapp_dbl_list_get(WpStr8, &list, 2);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3);
|
result = result && node == &s3 && wpStr8Equal(node, &s3);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 3);
|
node = wapp_dbl_list_get(WpStr8, &list, 3);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4);
|
result = result && node == &s4 && wpStr8Equal(node, &s4);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 4);
|
node = wapp_dbl_list_get(WpStr8, &list, 4);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5);
|
result = result && node == &s5 && wpStr8Equal(node, &s5);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -43,15 +43,15 @@ WpTestFuncResult test_str8_list_push_front(void) {
|
|||||||
WpStr8 s2 = wpStr8Lit("2");
|
WpStr8 s2 = wpStr8Lit("2");
|
||||||
WpStr8 s3 = wpStr8Lit("3");
|
WpStr8 s3 = wpStr8Lit("3");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s1);
|
wapp_dbl_list_push_front(WpStr8, &list, &s1);
|
||||||
result = list.first == list.last && list.first->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = list.first == list.last && list.first->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s2);
|
wapp_dbl_list_push_front(WpStr8, &list, &s2);
|
||||||
result = result && list.first->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && list.first->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s3);
|
wapp_dbl_list_push_front(WpStr8, &list, &s3);
|
||||||
result = result && list.first->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && list.first->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -64,15 +64,15 @@ WpTestFuncResult test_str8_list_push_back(void) {
|
|||||||
WpStr8 s2 = wpStr8Lit("2");
|
WpStr8 s2 = wpStr8Lit("2");
|
||||||
WpStr8 s3 = wpStr8Lit("3");
|
WpStr8 s3 = wpStr8Lit("3");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
result = list.first == list.last && list.last->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = list.first == list.last && list.last->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
result = result && list.last->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && list.last->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
result = result && list.last->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && list.last->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -89,20 +89,20 @@ WpTestFuncResult test_str8_list_insert(void) {
|
|||||||
WpStr8 s6 = wpStr8Lit("6");
|
WpStr8 s6 = wpStr8Lit("6");
|
||||||
WpStr8 s7 = wpStr8Lit("7");
|
WpStr8 s7 = wpStr8Lit("7");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node;
|
WpStr8 *node;
|
||||||
wpDblListInsert(WpStr8, &list, &s6, 2);
|
wapp_dbl_list_insert(WpStr8, &list, &s6, 2);
|
||||||
node = wpDblListGet(WpStr8, &list, 2);
|
node = wapp_dbl_list_get(WpStr8, &list, 2);
|
||||||
result = node != NULL && node == &s6 && wpStr8ListTotalSize(&list) == 6 && list.node_count == 6;
|
result = node != NULL && node == &s6 && wpStr8ListTotalSize(&list) == 6 && list.node_count == 6;
|
||||||
wpDblListInsert(WpStr8, &list, &s7, 5);
|
wapp_dbl_list_insert(WpStr8, &list, &s7, 5);
|
||||||
node = wpDblListGet(WpStr8, &list, 5);
|
node = wapp_dbl_list_get(WpStr8, &list, 5);
|
||||||
result = result && node != NULL && node == &s7 && wpStr8ListTotalSize(&list) == 7 && list.node_count == 7;
|
result = result && node != NULL && node == &s7 && wpStr8ListTotalSize(&list) == 7 && list.node_count == 7;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -117,27 +117,27 @@ WpTestFuncResult test_str8_list_pop_front(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListPopFront(WpStr8, &list);
|
WpStr8 *node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -152,27 +152,27 @@ WpTestFuncResult test_str8_list_pop_back(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s1);
|
wapp_dbl_list_push_front(WpStr8, &list, &s1);
|
||||||
wpDblListPushFront(WpStr8, &list, &s2);
|
wapp_dbl_list_push_front(WpStr8, &list, &s2);
|
||||||
wpDblListPushFront(WpStr8, &list, &s3);
|
wapp_dbl_list_push_front(WpStr8, &list, &s3);
|
||||||
wpDblListPushFront(WpStr8, &list, &s4);
|
wapp_dbl_list_push_front(WpStr8, &list, &s4);
|
||||||
wpDblListPushFront(WpStr8, &list, &s5);
|
wapp_dbl_list_push_front(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListPopBack(WpStr8, &list);
|
WpStr8 *node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -187,27 +187,27 @@ WpTestFuncResult test_str8_list_remove(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListRemove(WpStr8, &list, 0);
|
WpStr8 *node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -216,13 +216,13 @@ WpTestFuncResult test_str8_list_remove(void) {
|
|||||||
WpTestFuncResult test_str8_list_empty(void) {
|
WpTestFuncResult test_str8_list_empty(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("Hello"));
|
wapp_dbl_list_push_back(WpStr8, &list, &wpStr8Lit("Hello"));
|
||||||
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("from"));
|
wapp_dbl_list_push_back(WpStr8, &list, &wpStr8Lit("from"));
|
||||||
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("wizapp"));
|
wapp_dbl_list_push_back(WpStr8, &list, &wpStr8Lit("wizapp"));
|
||||||
wpDblListPushBack(WpStr8, &list, &wpStr8Lit("stdlib"));
|
wapp_dbl_list_push_back(WpStr8, &list, &wpStr8Lit("stdlib"));
|
||||||
|
|
||||||
wpDblListEmpty(WpStr8, &list);
|
wapp_dbl_list_empty(WpStr8, &list);
|
||||||
|
|
||||||
result = list.first == NULL && list.last == NULL && list.node_count == 0 && wpStr8ListTotalSize(&list) == 0;
|
result = list.first == NULL && list.last == NULL && list.node_count == 0 && wpStr8ListTotalSize(&list) == 0;
|
||||||
|
|
||||||
|
|||||||
@@ -10,27 +10,27 @@ WpTestFuncResult test_str8_list_get(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListGet(WpStr8, &list, 0);
|
WpStr8 *node = wapp_dbl_list_get(WpStr8, &list, 0);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1);
|
result = node == &s1 && wpStr8Equal(node, &s1);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 1);
|
node = wapp_dbl_list_get(WpStr8, &list, 1);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2);
|
result = result && node == &s2 && wpStr8Equal(node, &s2);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 2);
|
node = wapp_dbl_list_get(WpStr8, &list, 2);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3);
|
result = result && node == &s3 && wpStr8Equal(node, &s3);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 3);
|
node = wapp_dbl_list_get(WpStr8, &list, 3);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4);
|
result = result && node == &s4 && wpStr8Equal(node, &s4);
|
||||||
|
|
||||||
node = wpDblListGet(WpStr8, &list, 4);
|
node = wapp_dbl_list_get(WpStr8, &list, 4);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5);
|
result = result && node == &s5 && wpStr8Equal(node, &s5);
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -43,15 +43,15 @@ WpTestFuncResult test_str8_list_push_front(void) {
|
|||||||
WpStr8 s2 = wpStr8Lit("2");
|
WpStr8 s2 = wpStr8Lit("2");
|
||||||
WpStr8 s3 = wpStr8Lit("3");
|
WpStr8 s3 = wpStr8Lit("3");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s1);
|
wapp_dbl_list_push_front(WpStr8, &list, &s1);
|
||||||
result = list.first == list.last && list.first->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = list.first == list.last && list.first->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s2);
|
wapp_dbl_list_push_front(WpStr8, &list, &s2);
|
||||||
result = result && list.first->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && list.first->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s3);
|
wapp_dbl_list_push_front(WpStr8, &list, &s3);
|
||||||
result = result && list.first->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && list.first->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -64,15 +64,15 @@ WpTestFuncResult test_str8_list_push_back(void) {
|
|||||||
WpStr8 s2 = wpStr8Lit("2");
|
WpStr8 s2 = wpStr8Lit("2");
|
||||||
WpStr8 s3 = wpStr8Lit("3");
|
WpStr8 s3 = wpStr8Lit("3");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
result = list.first == list.last && list.last->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = list.first == list.last && list.last->item == &s1 && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
result = result && list.last->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && list.last->item == &s2 && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
result = result && list.last->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && list.last->item == &s3 && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -89,20 +89,20 @@ WpTestFuncResult test_str8_list_insert(void) {
|
|||||||
WpStr8 s6 = wpStr8Lit("6");
|
WpStr8 s6 = wpStr8Lit("6");
|
||||||
WpStr8 s7 = wpStr8Lit("7");
|
WpStr8 s7 = wpStr8Lit("7");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node;
|
WpStr8 *node;
|
||||||
wpDblListInsert(WpStr8, &list, &s6, 2);
|
wapp_dbl_list_insert(WpStr8, &list, &s6, 2);
|
||||||
node = wpDblListGet(WpStr8, &list, 2);
|
node = wapp_dbl_list_get(WpStr8, &list, 2);
|
||||||
result = node != NULL && node == &s6 && wpStr8ListTotalSize(&list) == 6 && list.node_count == 6;
|
result = node != NULL && node == &s6 && wpStr8ListTotalSize(&list) == 6 && list.node_count == 6;
|
||||||
wpDblListInsert(WpStr8, &list, &s7, 5);
|
wapp_dbl_list_insert(WpStr8, &list, &s7, 5);
|
||||||
node = wpDblListGet(WpStr8, &list, 5);
|
node = wapp_dbl_list_get(WpStr8, &list, 5);
|
||||||
result = result && node != NULL && node == &s7 && wpStr8ListTotalSize(&list) == 7 && list.node_count == 7;
|
result = result && node != NULL && node == &s7 && wpStr8ListTotalSize(&list) == 7 && list.node_count == 7;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -117,27 +117,27 @@ WpTestFuncResult test_str8_list_pop_front(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListPopFront(WpStr8, &list);
|
WpStr8 *node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
node = wpDblListPopFront(WpStr8, &list);
|
node = wapp_dbl_list_pop_front(WpStr8, &list);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -152,27 +152,27 @@ WpTestFuncResult test_str8_list_pop_back(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushFront(WpStr8, &list, &s1);
|
wapp_dbl_list_push_front(WpStr8, &list, &s1);
|
||||||
wpDblListPushFront(WpStr8, &list, &s2);
|
wapp_dbl_list_push_front(WpStr8, &list, &s2);
|
||||||
wpDblListPushFront(WpStr8, &list, &s3);
|
wapp_dbl_list_push_front(WpStr8, &list, &s3);
|
||||||
wpDblListPushFront(WpStr8, &list, &s4);
|
wapp_dbl_list_push_front(WpStr8, &list, &s4);
|
||||||
wpDblListPushFront(WpStr8, &list, &s5);
|
wapp_dbl_list_push_front(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListPopBack(WpStr8, &list);
|
WpStr8 *node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
node = wpDblListPopBack(WpStr8, &list);
|
node = wapp_dbl_list_pop_back(WpStr8, &list);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -187,27 +187,27 @@ WpTestFuncResult test_str8_list_remove(void) {
|
|||||||
WpStr8 s4 = wpStr8Lit("4");
|
WpStr8 s4 = wpStr8Lit("4");
|
||||||
WpStr8 s5 = wpStr8Lit("5");
|
WpStr8 s5 = wpStr8Lit("5");
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
wpDblListPushBack(WpStr8, &list, &s1);
|
wapp_dbl_list_push_back(WpStr8, &list, &s1);
|
||||||
wpDblListPushBack(WpStr8, &list, &s2);
|
wapp_dbl_list_push_back(WpStr8, &list, &s2);
|
||||||
wpDblListPushBack(WpStr8, &list, &s3);
|
wapp_dbl_list_push_back(WpStr8, &list, &s3);
|
||||||
wpDblListPushBack(WpStr8, &list, &s4);
|
wapp_dbl_list_push_back(WpStr8, &list, &s4);
|
||||||
wpDblListPushBack(WpStr8, &list, &s5);
|
wapp_dbl_list_push_back(WpStr8, &list, &s5);
|
||||||
|
|
||||||
WpStr8 *node = wpDblListRemove(WpStr8, &list, 0);
|
WpStr8 *node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
result = node == &s1 && wpStr8Equal(node, &s1) && wpStr8ListTotalSize(&list) == 4 && list.node_count == 4;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
result = result && node == &s2 && wpStr8Equal(node, &s2) && wpStr8ListTotalSize(&list) == 3 && list.node_count == 3;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
result = result && node == &s3 && wpStr8Equal(node, &s3) && wpStr8ListTotalSize(&list) == 2 && list.node_count == 2;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
result = result && node == &s4 && wpStr8Equal(node, &s4) && wpStr8ListTotalSize(&list) == 1 && list.node_count == 1;
|
||||||
|
|
||||||
node = wpDblListRemove(WpStr8, &list, 0);
|
node = wapp_dbl_list_remove(WpStr8, &list, 0);
|
||||||
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
result = result && node == &s5 && wpStr8Equal(node, &s5) && wpStr8ListTotalSize(&list) == 0 && list.node_count == 0;
|
||||||
|
|
||||||
return wpTesterResult(result);
|
return wpTesterResult(result);
|
||||||
@@ -216,21 +216,21 @@ WpTestFuncResult test_str8_list_remove(void) {
|
|||||||
WpTestFuncResult test_str8_list_empty(void) {
|
WpTestFuncResult test_str8_list_empty(void) {
|
||||||
b8 result;
|
b8 result;
|
||||||
|
|
||||||
WpStr8List list = wpDblList(WpStr8);
|
WpStr8List list = wapp_dbl_list(WpStr8);
|
||||||
|
|
||||||
WpStr8 hello = wpStr8Lit("Hello");
|
WpStr8 hello = wpStr8Lit("Hello");
|
||||||
wpDblListPushBack(WpStr8, &list, &hello);
|
wapp_dbl_list_push_back(WpStr8, &list, &hello);
|
||||||
|
|
||||||
WpStr8 from = wpStr8Lit("from");
|
WpStr8 from = wpStr8Lit("from");
|
||||||
wpDblListPushBack(WpStr8, &list, &from);
|
wapp_dbl_list_push_back(WpStr8, &list, &from);
|
||||||
|
|
||||||
WpStr8 wizapp = wpStr8Lit("wizapp");
|
WpStr8 wizapp = wpStr8Lit("wizapp");
|
||||||
wpDblListPushBack(WpStr8, &list, &wizapp);
|
wapp_dbl_list_push_back(WpStr8, &list, &wizapp);
|
||||||
|
|
||||||
WpStr8 stdlib = wpStr8Lit("stdlib");
|
WpStr8 stdlib = wpStr8Lit("stdlib");
|
||||||
wpDblListPushBack(WpStr8, &list, &stdlib);
|
wapp_dbl_list_push_back(WpStr8, &list, &stdlib);
|
||||||
|
|
||||||
wpDblListEmpty(WpStr8, &list);
|
wapp_dbl_list_empty(WpStr8, &list);
|
||||||
|
|
||||||
result = list.first == NULL && list.last == NULL && list.node_count == 0 && wpStr8ListTotalSize(&list) == 0;
|
result = list.first == NULL && list.last == NULL && list.node_count == 0 && wpStr8ListTotalSize(&list) == 0;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user