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