diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-22 19:33:26 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-23 11:43:15 -0500 |
| commit | b911c5b6c37ab13be6188cf039cd4246414fc7b5 (patch) | |
| tree | da4743a719e8134abb35f87f5097541e09c8f581 /src/memory-type-defs.hpp | |
| parent | a3937e7eef97cb0badcd65c390b9dd39d4cfd094 (diff) | |
first pass background asset loading - buggy
Diffstat (limited to 'src/memory-type-defs.hpp')
| -rw-r--r-- | src/memory-type-defs.hpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/memory-type-defs.hpp b/src/memory-type-defs.hpp index d9d6f5e..181b89b 100644 --- a/src/memory-type-defs.hpp +++ b/src/memory-type-defs.hpp @@ -6,6 +6,11 @@ using PkeHandleBucketIndex_T = uint32_t; using PkeHandleItemIndex_T = uint32_t; +const uint8_t PKE_HANDLE_VALIDATION_VALID = 0; +const uint8_t PKE_HANDLE_VALIDATION_BUCKET_INDEX_TOO_HIGH = 1; +const uint8_t PKE_HANDLE_VALIDATION_ITEM_INDEX_TOO_HIGH = 2; +const uint8_t PKE_HANDLE_VALIDATION_VALUE_MAX = 3; + struct PkeHandle { union { struct { @@ -15,11 +20,24 @@ struct PkeHandle { uint64_t hash = 0xFFFFFFFFFFFFFFFF; }; }; +constexpr PkeHandle PkeHandle_MAX = PkeHandle{}; constexpr bool operator==(const PkeHandle &a, const PkeHandle &b) { return a.hash == b.hash; } +constexpr uint8_t ValidateHandle(PkeHandle handle, PkeHandle bucketHandle, uint64_t maxItems) { + if (handle == PkeHandle_MAX) + return PKE_HANDLE_VALIDATION_VALUE_MAX; + if (handle.bucketIndex > bucketHandle.bucketIndex) + return PKE_HANDLE_VALIDATION_BUCKET_INDEX_TOO_HIGH; + if (handle.itemIndex > maxItems) + return PKE_HANDLE_VALIDATION_ITEM_INDEX_TOO_HIGH; + if (handle.bucketIndex == bucketHandle.bucketIndex && handle.itemIndex > bucketHandle.itemIndex) + return PKE_HANDLE_VALIDATION_ITEM_INDEX_TOO_HIGH; + return PKE_HANDLE_VALIDATION_VALID; +} + struct MemBucket; #endif /* PKE_MEMORY_TYPE_DEFS_HPP */ |
