polish help in radlink

This commit is contained in:
Nikita Smith
2026-02-13 19:17:53 -08:00
parent 519bc154ec
commit fbc3cbd6eb
13 changed files with 480 additions and 526 deletions
+47 -20
View File
@@ -3,6 +3,12 @@
#pragma once
typedef struct VoidNode
{
struct VoidNode *next;
void *v;
} VoidNode;
typedef struct U32Node
{
struct U32Node *next;
@@ -22,32 +28,53 @@ typedef struct U64List
U64Node *last;
} U64List;
typedef struct VoidNode
typedef struct S64Node
{
struct VoidNode *next;
void *v;
} VoidNode;
S64 v;
struct S64Node *next;
} S64Node;
typedef struct S64List
{
U64 count;
S64Node *first;
S64Node *last;
} S64List;
typedef struct S64Array
{
U64 count;
S64 *v;
} S64Array;
////////////////////////////////
internal void u64_list_push_node(U64List *list, U64Node *n);
internal U64Node * u64_list_push(Arena *arena, U64List *list, U64 data);
internal U64 void_list_count_nodes (VoidNode *head);
internal void void_node_concat (VoidNode **head, VoidNode *node);
internal void void_node_concat_atomic(VoidNode **head, VoidNode *node);
internal void u64_list_push_node (U64List *list, U64Node *n);
internal U64Node * u64_list_push (Arena *arena, U64List *list, U64 v);
internal void u64_list_concat_in_place(U64List *list, U64List *to_concat);
internal U64Array u64_array_from_list(Arena *arena, U64List *list);
internal U64Array u64_array_remove_duplicates(Arena *arena, U64Array in);
internal B32 u32_array_compare (U32Array a, U32Array b);
internal U32 * u32_array_offsets_from_counts(Arena *arena, U32 *v, U64 count);
internal void u32_array_counts_to_offsets (U64 count, U32 *arr);
internal void u32_array_sort (U64 count, U32 *v);
internal void u32_pair_sort_radix (U64 count, PairU32 *arr);
internal void u32_array_sort(U64 count, U32 *v);
internal void u64_array_sort(U64 count, U64 *v);
internal B32 u32_array_compare(U32Array a, U32Array b);
internal U64 * offsets_from_counts_array_u64(Arena *arena, U64 *v, U64 count);
internal void u64_array_counts_to_offsets (U64 count, U64 *arr);
internal void u64_array_sort (U64 count, U64 *v);
internal U64 u64_array_max (U64 count, U64 *v);
internal U64 u64_array_min (U64 count, U64 *v);
internal U64 sum_array_u64 (U64 count, U64 *v);
internal U64 sum_array_u64 (U64 count, U64 *v);
internal U64Array u64_array_remove_duplicates (Arena *arena, U64Array in);
internal U64Array u64_array_from_list (Arena *arena, U64List *list);
internal U64 sum_array_u64(U64 count, U64 *v);
internal U64 max_array_u64(U64 count, U64 *v);
internal U64 min_array_u64(U64 count, U64 *v);
internal void counts_to_offsets_array_u32(U64 count, U32 *arr);
internal void counts_to_offsets_array_u64(U64 count, U64 *arr);
internal U32 * offsets_from_counts_array_u32(Arena *arena, U32 *v, U64 count);
internal U64 * offsets_from_counts_array_u64(Arena *arena, U64 *v, U64 count);
internal void s64_list_push_node (S64List *list, S64Node *n);
internal S64Node * s64_list_push (Arena *arena, S64List *list, S64 v);
internal void s64_list_concat_in_place(S64List *list, S64List *to_concat);
internal S64Array s64_array_from_list (Arena *arena, S64List *list);