refactor(datastructures): added naming to stack and queue datastructure macro
This commit is contained in:
parent
25e7e915f4
commit
352281790d
3 changed files with 34 additions and 34 deletions
|
|
@ -31,26 +31,26 @@
|
|||
|
||||
#include "../Utils/Error.h"
|
||||
|
||||
#define FLEDASTY_QUEUE_DEFINE(type) \
|
||||
#define FLEDASTY_QUEUE_DEFINE(type, name) \
|
||||
typedef struct { \
|
||||
size_t size, capacity; \
|
||||
size_t head, tail; \
|
||||
type *buffer; \
|
||||
} FledastyQueue_##type; \
|
||||
} FledastyQueue_##name; \
|
||||
\
|
||||
FledastyError fledasty_queue_##type##_free(FledastyQueue_##type *current_queue); \
|
||||
FledastyError fledasty_queue_##name##_free(FledastyQueue_##name *current_queue); \
|
||||
\
|
||||
FledastyError fledasty_queue_##type##_push(FledastyQueue_##type *current_queue, type value); \
|
||||
type fledasty_queue_##type##_pop(FledastyQueue_##type *current_queue); \
|
||||
FledastyError fledasty_queue_##name##_push(FledastyQueue_##name *current_queue, type value); \
|
||||
type fledasty_queue_##name##_pop(FledastyQueue_##name *current_queue); \
|
||||
\
|
||||
FledastyError fledasty_queue_##type##_clear(FledastyQueue_##type *current_queue); \
|
||||
FledastyError fledasty_queue_##type##_shrink_to_fit(FledastyQueue_##type *current_queue); \
|
||||
FledastyError fledasty_queue_##name##_clear(FledastyQueue_##name *current_queue); \
|
||||
FledastyError fledasty_queue_##name##_shrink_to_fit(FledastyQueue_##name *current_queue); \
|
||||
\
|
||||
static inline type fledasty_queue_##type##_peek(const FledastyQueue_##type *current_queue) { return (current_queue != NULL && current_queue->size > 0) ? current_queue->buffer[current_queue->size - 1] : 0; } \
|
||||
static inline bool fledasty_queue_##type##_is_empty(const FledastyQueue_##type *current_queue) { return current_queue == NULL || current_queue->size == 0; }
|
||||
static inline type fledasty_queue_##name##_peek(const FledastyQueue_##name *current_queue) { return (current_queue != NULL && current_queue->size > 0) ? current_queue->buffer[current_queue->head] : 0; } \
|
||||
static inline bool fledasty_queue_##name##_is_empty(const FledastyQueue_##name *current_queue) { return current_queue == NULL || current_queue->size == 0; }
|
||||
|
||||
#define FLEDASTY_QUEUE_IMPLEMENT(type) \
|
||||
FledastyError fledasty_queue_##type##_free(FledastyQueue_##type *current_queue) { \
|
||||
#define FLEDASTY_QUEUE_IMPLEMENT(type, name) \
|
||||
FledastyError fledasty_queue_##name##_free(FledastyQueue_##name *current_queue) { \
|
||||
if (current_queue == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
@ -66,7 +66,7 @@ FledastyError fledasty_queue_##type##_free(FledastyQueue_##type *current_queue)
|
|||
return FLEDASTY_ERROR_NONE; \
|
||||
} \
|
||||
\
|
||||
FledastyError fledasty_queue_##type##_push(FledastyQueue_##type *current_queue, type value) { \
|
||||
FledastyError fledasty_queue_##name##_push(FledastyQueue_##name *current_queue, type value) { \
|
||||
if (current_queue == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
@ -101,7 +101,7 @@ FledastyError fledasty_queue_##type##_push(FledastyQueue_##type *current_queue,
|
|||
return FLEDASTY_ERROR_NONE; \
|
||||
} \
|
||||
\
|
||||
type fledasty_queue_##type##_pop(FledastyQueue_##type *current_queue) { \
|
||||
type fledasty_queue_##name##_pop(FledastyQueue_##name *current_queue) { \
|
||||
if (current_queue == NULL || current_queue->size == 0) { \
|
||||
return 0; \
|
||||
} \
|
||||
|
|
@ -115,7 +115,7 @@ type fledasty_queue_##type##_pop(FledastyQueue_##type *current_queue) {
|
|||
return current_queue->buffer[current_queue->head - 1]; \
|
||||
} \
|
||||
\
|
||||
FledastyError fledasty_queue_##type##_clear(FledastyQueue_##type *current_queue) { \
|
||||
FledastyError fledasty_queue_##name##_clear(FledastyQueue_##name *current_queue) { \
|
||||
if (current_queue == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
@ -124,7 +124,7 @@ FledastyError fledasty_queue_##type##_clear(FledastyQueue_##type *current_queue)
|
|||
return FLEDASTY_ERROR_NONE; \
|
||||
} \
|
||||
\
|
||||
FledastyError fledasty_queue_##type##_shrink_to_fit(FledastyQueue_##type *current_queue) { \
|
||||
FledastyError fledasty_queue_##name##_shrink_to_fit(FledastyQueue_##name *current_queue) { \
|
||||
if (current_queue == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
|
|||
|
|
@ -31,25 +31,25 @@
|
|||
|
||||
#include "../Utils/Error.h"
|
||||
|
||||
#define FLEDASTY_STACK_DEFINE(type) \
|
||||
#define FLEDASTY_STACK_DEFINE(type, name) \
|
||||
typedef struct { \
|
||||
size_t size, capacity; \
|
||||
type *buffer; \
|
||||
} FledastyStack_##type; \
|
||||
} FledastyStack_##name; \
|
||||
\
|
||||
FledastyError fledasty_stack_##type##_free(FledastyStack_##type *current_stack); \
|
||||
FledastyError fledasty_stack_##name##_free(FledastyStack_##name *current_stack); \
|
||||
\
|
||||
FledastyError fledasty_stack_##type##_push(FledastyStack_##type *current_stack, type value); \
|
||||
FledastyError fledasty_stack_##name##_push(FledastyStack_##name *current_stack, type value); \
|
||||
\
|
||||
FledastyError fledasty_stack_##type##_clear(FledastyStack_##type *current_stack); \
|
||||
FledastyError fledasty_stack_##type##_shrink_to_fit(FledastyStack_##type *current_stack); \
|
||||
FledastyError fledasty_stack_##name##_clear(FledastyStack_##name *current_stack); \
|
||||
FledastyError fledasty_stack_##name##_shrink_to_fit(FledastyStack_##name *current_stack); \
|
||||
\
|
||||
static inline type fledasty_stack_##type##_pop(FledastyStack_##type *current_stack) { return (current_stack != NULL && current_stack->size > 0) ? current_stack->buffer[--current_stack->size] : 0; } \
|
||||
static inline type fledasty_stack_##type##_peek(const FledastyStack_##type *current_stack) { return (current_stack != NULL && current_stack->size > 0) ? current_stack->buffer[current_stack->size - 1] : 0; } \
|
||||
static inline bool fledasty_stack_##type##_is_empty(const FledastyStack_##type *current_stack) { return current_stack == NULL || current_stack->size == 0; }
|
||||
static inline type fledasty_stack_##name##_pop(FledastyStack_##name *current_stack) { return (current_stack != NULL && current_stack->size > 0) ? current_stack->buffer[--current_stack->size] : 0; } \
|
||||
static inline type fledasty_stack_##name##_peek(const FledastyStack_##name *current_stack) { return (current_stack != NULL && current_stack->size > 0) ? current_stack->buffer[current_stack->size - 1] : 0; } \
|
||||
static inline bool fledasty_stack_##name##_is_empty(const FledastyStack_##name *current_stack) { return current_stack == NULL || current_stack->size == 0; }
|
||||
|
||||
#define FLEDASTY_STACK_IMPLEMENT(type) \
|
||||
FledastyError fledasty_stack_##type##_free(FledastyStack_##type *current_stack) { \
|
||||
#define FLEDASTY_STACK_IMPLEMENT(type, name) \
|
||||
FledastyError fledasty_stack_##name##_free(FledastyStack_##name *current_stack) { \
|
||||
if (current_stack == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
@ -65,7 +65,7 @@ FledastyError fledasty_stack_##type##_free(FledastyStack_##type *current_stack)
|
|||
return FLEDASTY_ERROR_NONE; \
|
||||
} \
|
||||
\
|
||||
FledastyError fledasty_stack_##type##_push(FledastyStack_##type *current_stack, type value) { \
|
||||
FledastyError fledasty_stack_##name##_push(FledastyStack_##name *current_stack, type value) { \
|
||||
if (current_stack == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
@ -83,7 +83,7 @@ FledastyError fledasty_stack_##type##_push(FledastyStack_##type *current_stack,
|
|||
return FLEDASTY_ERROR_NONE; \
|
||||
} \
|
||||
\
|
||||
FledastyError fledasty_stack_##type##_clear(FledastyStack_##type *current_stack) { \
|
||||
FledastyError fledasty_stack_##name##_clear(FledastyStack_##name *current_stack) { \
|
||||
if (current_stack == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
@ -92,7 +92,7 @@ FledastyError fledasty_stack_##type##_clear(FledastyStack_##type *current_stack)
|
|||
return FLEDASTY_ERROR_NONE; \
|
||||
} \
|
||||
\
|
||||
FledastyError fledasty_stack_##type##_shrink_to_fit(FledastyStack_##type *current_stack) { \
|
||||
FledastyError fledasty_stack_##name##_shrink_to_fit(FledastyStack_##name *current_stack) { \
|
||||
if (current_stack == NULL) { \
|
||||
return FLEDASTY_ERROR_INVALID_POINTER; \
|
||||
} \
|
||||
|
|
|
|||
10
Tests/Main.c
10
Tests/Main.c
|
|
@ -33,11 +33,11 @@
|
|||
static inline bool compare_integers(const int first_value, const int second_value) { return first_value == second_value; }
|
||||
static inline size_t integer_hash_function(const void *key) { return *(int*)key; }
|
||||
|
||||
FLEDASTY_STACK_DEFINE(int)
|
||||
FLEDASTY_STACK_IMPLEMENT(int)
|
||||
FLEDASTY_STACK_DEFINE(int, int)
|
||||
FLEDASTY_STACK_IMPLEMENT(int, int)
|
||||
|
||||
FLEDASTY_QUEUE_DEFINE(int)
|
||||
FLEDASTY_QUEUE_IMPLEMENT(int)
|
||||
FLEDASTY_QUEUE_DEFINE(int, int)
|
||||
FLEDASTY_QUEUE_IMPLEMENT(int, int)
|
||||
|
||||
FLEDASTY_DYNAMIC_ARRAY_DEFINE(int, int)
|
||||
FLEDASTY_DYNAMIC_ARRAY_IMPLEMENT(int, int, compare_integers)
|
||||
|
|
@ -50,7 +50,7 @@ int main() {
|
|||
|
||||
fledasty_queue_int_shrink_to_fit(&test_queue);
|
||||
printf("Queue schrinked to fit %s\n", (test_queue.capacity == test_queue.size) ? "succeeded" : "failed");
|
||||
fledasty_queue_int_push(&test_queue, 0);
|
||||
fledasty_queue_int_push(&test_queue, 10);
|
||||
printf("Queue peeked: %d\n", fledasty_queue_int_peek(&test_queue));
|
||||
|
||||
for (int i = test_queue.size; i > 0; i -= 1) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue