Removed unused K parameters from macros that are not associative containers

This commit is contained in:
Leonardo committed 2019-04-01 12:17:43 -03:00
1 parent 904cc5b69b
commit f4440d6833
19 files changed
+286 -285

No files matched your search

+1 -1
View File
@@ -6,7 +6,7 @@ static int intcmp(int a, int b)
return a - b;
}
HEAP_GENERATE(h, heap, static, , int)
HEAP_GENERATE(h, heap, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -2,7 +2,7 @@
#include <assert.h>
#include "../src/linkedlist.h"
LINKEDLIST_GENERATE(l, list, , , int)
LINKEDLIST_GENERATE(l, list, , int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -3,7 +3,7 @@
#include <time.h>
#include "../src/treeset.h"
TREESET_GENERATE(set, set, , , int)
TREESET_GENERATE(set, set, , int)
void print_tree(set_node *root, int height)
{
+33 -32
View File
@@ -17,47 +17,48 @@
#include <stdlib.h>
#include <stdbool.h>
#include <string.h>
#define DEQUE_GENERATE(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define DEQUE_GENERATE(PFX, SNAME, FMOD, V) \
DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define DEQUE_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define DEQUE_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define DEQUE_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define DEQUE_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
size_t front; \
size_t rear; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
size_t count; \
bool start; \
bool end; \
}; \
\
#define DEQUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
size_t front; \
size_t rear; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
size_t count; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define DEQUE_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_iter_s SNAME##_iter; \
@@ -88,7 +89,7 @@
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define DEQUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD bool PFX##_grow(SNAME *_deque_); \
\
+42 -42
View File
@@ -39,56 +39,56 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 193, 389, 769, 1543, 3079,
#endif /* CMC_HASH_TABLE_SETUP */
#define HASHSET_GENERATE(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define HASHSET_GENERATE(PFX, SNAME, FMOD, V) \
HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define HASHSET_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define HASHSET_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define HASHSET_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define HASHSET_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
struct SNAME##_entry_s *buffer; \
size_t capacity; \
size_t count; \
double load; \
int (*cmp)(V, V); \
size_t (*hash)(V); \
}; \
\
struct SNAME##_entry_s \
{ \
V value; \
size_t dist; \
enum EntryState_e state; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
size_t index; \
size_t first; \
size_t last; \
bool start; \
bool end; \
}; \
\
#define HASHSET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
struct SNAME##_entry_s *buffer; \
size_t capacity; \
size_t count; \
double load; \
int (*cmp)(V, V); \
size_t (*hash)(V); \
}; \
\
struct SNAME##_entry_s \
{ \
V value; \
size_t dist; \
enum EntryState_e state; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
size_t index; \
size_t first; \
size_t last; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define HASHSET_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_entry_s SNAME##_entry; \
@@ -119,7 +119,7 @@ static const size_t cmc_hashtable_primes[] = {53, 97, 193, 389, 769, 1543, 3079,
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define HASHSET_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD bool PFX##_grow(SNAME *_set_); \
FMOD SNAME##_entry *PFX##_get_entry(SNAME *_set_, V element); \
+31 -31
View File
@@ -25,45 +25,45 @@ typedef enum HeapOrder
MinHeap = -1
} HeapOrder;
#define HEAP_GENERATE(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define HEAP_GENERATE(PFX, SNAME, FMOD, V) \
HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define HEAP_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define HEAP_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define HEAP_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define HEAP_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
enum HeapOrder HO; \
int (*cmp)(V, V); \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
bool start; \
bool end; \
}; \
\
#define HEAP_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
enum HeapOrder HO; \
int (*cmp)(V, V); \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define HEAP_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_iter_s SNAME##_iter; \
@@ -89,7 +89,7 @@ typedef enum HeapOrder
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define HEAP_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD bool PFX##_grow(SNAME *_heap_); \
FMOD size_t PFX##_p(size_t index); \
+38 -38
View File
@@ -18,52 +18,52 @@
#include <stdlib.h>
#include <stdbool.h>
#define LINKEDLIST_GENERATE(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define LINKEDLIST_GENERATE(PFX, SNAME, FMOD, V) \
LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define LINKEDLIST_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define LINKEDLIST_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define LINKEDLIST_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define LINKEDLIST_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
struct SNAME##_node_s *head; \
struct SNAME##_node_s *tail; \
size_t count; \
}; \
\
struct SNAME##_node_s \
{ \
struct SNAME##_s *owner; \
struct SNAME##_node_s *next; \
struct SNAME##_node_s *prev; \
V data; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
struct SNAME##_node_s *cursor; \
size_t index; \
bool start; \
bool end; \
}; \
\
#define LINKEDLIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
struct SNAME##_node_s *head; \
struct SNAME##_node_s *tail; \
size_t count; \
}; \
\
struct SNAME##_node_s \
{ \
struct SNAME##_s *owner; \
struct SNAME##_node_s *next; \
struct SNAME##_node_s *prev; \
V data; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
struct SNAME##_node_s *cursor; \
size_t index; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define LINKEDLIST_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_node_s SNAME##_node; \
@@ -102,7 +102,7 @@
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define LINKEDLIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD SNAME *PFX##_new(void) \
{ \
+29 -29
View File
@@ -19,43 +19,43 @@
#include <stdbool.h>
#include <string.h>
#define LIST_GENERATE(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define LIST_GENERATE(PFX, SNAME, FMOD, V) \
LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
LIST_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define LIST_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
LIST_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define LIST_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define LIST_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
LIST_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define LIST_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
bool start; \
bool end; \
}; \
\
#define LIST_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define LIST_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define LIST_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_iter_s SNAME##_iter; \
@@ -87,7 +87,7 @@
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define LIST_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD bool PFX##_grow(SNAME *_list_); \
\
+32 -32
View File
@@ -19,46 +19,46 @@
#include <stdbool.h>
#include <string.h>
#define QUEUE_GENERATE(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define QUEUE_GENERATE(PFX, SNAME, FMOD, V) \
QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define QUEUE_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define QUEUE_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define QUEUE_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define QUEUE_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
size_t front; \
size_t rear; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
size_t count; \
bool start; \
bool end; \
}; \
\
#define QUEUE_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
size_t front; \
size_t rear; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
size_t count; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define QUEUE_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_iter_s SNAME##_iter; \
@@ -84,7 +84,7 @@
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define QUEUE_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD bool PFX##_grow(SNAME *_queue_); \
\
+29 -29
View File
@@ -19,43 +19,43 @@
#include <stdbool.h>
#include <string.h>
#define STACK_GENERATE(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define STACK_GENERATE(PFX, SNAME, FMOD, V) \
STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
STACK_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define STACK_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
STACK_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define STACK_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define STACK_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
STACK_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define STACK_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
bool start; \
bool end; \
}; \
\
#define STACK_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
V *buffer; \
size_t capacity; \
size_t count; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
size_t cursor; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define STACK_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define STACK_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_iter_s SNAME##_iter; \
@@ -81,7 +81,7 @@
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define STACK_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD bool PFX##_grow(SNAME *_stack_); \
\
+41 -41
View File
@@ -18,55 +18,55 @@
#include <stdlib.h>
#include <stdbool.h>
#define TREESET_GENERATE(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
#define TREESET_GENERATE(PFX, SNAME, FMOD, V) \
TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PRIVATE *******************************************************************/
#define TREESET_GENERATE_HEADER_PRIVATE(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define TREESET_GENERATE_SOURCE_PRIVATE(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* PUBLIC ********************************************************************/
#define TREESET_GENERATE_HEADER_PUBLIC(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V)
TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, V)
#define TREESET_GENERATE_SOURCE_PUBLIC(PFX, SNAME, FMOD, K, V) \
TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V)
TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, V)
/* STRUCT ********************************************************************/
#define TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, K, V) \
\
struct SNAME##_s \
{ \
struct SNAME##_node_s *root; \
size_t count; \
int (*cmp)(V, V); \
}; \
\
struct SNAME##_node_s \
{ \
struct SNAME##_node_s *right; \
struct SNAME##_node_s *left; \
struct SNAME##_node_s *parent; \
unsigned char height; \
V key; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
struct SNAME##_node_s *cursor; \
struct SNAME##_node_s *first; \
struct SNAME##_node_s *last; \
size_t index; \
bool start; \
bool end; \
}; \
\
#define TREESET_GENERATE_STRUCT(PFX, SNAME, FMOD, V) \
\
struct SNAME##_s \
{ \
struct SNAME##_node_s *root; \
size_t count; \
int (*cmp)(V, V); \
}; \
\
struct SNAME##_node_s \
{ \
struct SNAME##_node_s *right; \
struct SNAME##_node_s *left; \
struct SNAME##_node_s *parent; \
unsigned char height; \
V key; \
}; \
\
struct SNAME##_iter_s \
{ \
struct SNAME##_s *target; \
struct SNAME##_node_s *cursor; \
struct SNAME##_node_s *first; \
struct SNAME##_node_s *last; \
size_t index; \
bool start; \
bool end; \
}; \
\
/* HEADER ********************************************************************/
#define TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, K, V) \
#define TREESET_GENERATE_HEADER(PFX, SNAME, FMOD, V) \
\
typedef struct SNAME##_s SNAME; \
typedef struct SNAME##_node_s SNAME##_node; \
@@ -97,7 +97,7 @@
FMOD bool PFX##_iter_prev(SNAME##_iter *iter, V *result, size_t *index); \
\
/* SOURCE ********************************************************************/
#define TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, K, V) \
#define TREESET_GENERATE_SOURCE(PFX, SNAME, FMOD, V) \
\
FMOD SNAME##_node *PFX##_new_node(V element); \
FMOD SNAME##_node *PFX##_get_node(SNAME *_set_, V element); \
+1 -1
View File
@@ -6,7 +6,7 @@
#include <stdbool.h>
#include "../../src/deque.h"
DEQUE_GENERATE(d, deque, static, , int)
DEQUE_GENERATE(d, deque, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -6,7 +6,7 @@
#include <stdbool.h>
#include "../../src/hashset.h"
HASHSET_GENERATE(hs, hash_set, static, , int)
HASHSET_GENERATE(hs, hash_set, static, int)
size_t inthash(int t)
{
+1 -1
View File
@@ -11,7 +11,7 @@ int intcmp(int a, int b)
return a - b;
}
HEAP_GENERATE(h, heap, static, , int)
HEAP_GENERATE(h, heap, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -6,7 +6,7 @@
#include <stdbool.h>
#include "../../src/linkedlist.h"
LINKEDLIST_GENERATE(ll, linked, static, , int)
LINKEDLIST_GENERATE(ll, linked, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -6,7 +6,7 @@
#include <stdbool.h>
#include "../../src/list.h"
LIST_GENERATE(l, list, static, , int)
LIST_GENERATE(l, list, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -6,7 +6,7 @@
#include <stdbool.h>
#include "../../src/queue.h"
QUEUE_GENERATE(q, queue, static, , int)
QUEUE_GENERATE(q, queue, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -6,7 +6,7 @@
#include <stdbool.h>
#include "../../src/stack.h"
STACK_GENERATE(s, stack, static, , int)
STACK_GENERATE(s, stack, static, int)
int main(int argc, char const *argv[])
{
+1 -1
View File
@@ -11,7 +11,7 @@ int intcmp(int a, int b)
return a - b;
}
TREESET_GENERATE(ts, tset, static, , int)
TREESET_GENERATE(ts, tset, static, int)
int main(int argc, char const *argv[])
{