Copied TCP impl from other project, basic Block implementation, randomx pow, signing via secp256k1
This commit is contained in:
58
src/dynset.c
Normal file
58
src/dynset.c
Normal file
@@ -0,0 +1,58 @@
|
||||
#include <dynset.h>
|
||||
|
||||
DynSet* DynSet_Create(size_t elemSize) {
|
||||
DynSet* set = (DynSet*)malloc(sizeof(DynSet));
|
||||
if (!set) {
|
||||
return NULL;
|
||||
}
|
||||
set->arr = DynArr_create(elemSize, 1);
|
||||
if (!set->arr) {
|
||||
free(set);
|
||||
return NULL;
|
||||
}
|
||||
return set;
|
||||
}
|
||||
|
||||
void DynSet_Destroy(DynSet* set) {
|
||||
if (set) {
|
||||
DynArr_destroy(set->arr);
|
||||
free(set);
|
||||
}
|
||||
}
|
||||
|
||||
int DynSet_Insert(DynSet* set, const void* element) {
|
||||
if (DynSet_Contains(set, element)) {
|
||||
return 0; // Element already exists
|
||||
}
|
||||
return DynArr_push_back(set->arr, element) != NULL;
|
||||
}
|
||||
|
||||
int DynSet_Contains(DynSet* set, const void* element) {
|
||||
size_t size = DynArr_size(set->arr);
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
void* current = DynArr_at(set->arr, i);
|
||||
if (memcmp(current, element, set->arr->elemSize) == 0) {
|
||||
return 1; // Found
|
||||
}
|
||||
}
|
||||
return 0; // Not found
|
||||
}
|
||||
|
||||
size_t DynSet_Size(DynSet* set) {
|
||||
return DynArr_size(set->arr);
|
||||
}
|
||||
|
||||
void* DynSet_Get(DynSet* set, size_t index) {
|
||||
return DynArr_at(set->arr, index);
|
||||
}
|
||||
|
||||
void DynSet_Remove(DynSet* set, const void* element) {
|
||||
size_t size = DynArr_size(set->arr);
|
||||
for (size_t i = 0; i < size; i++) {
|
||||
void* current = DynArr_at(set->arr, i);
|
||||
if (memcmp(current, element, set->arr->elemSize) == 0) {
|
||||
DynArr_remove(set->arr, i);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user