mirror of
https://github.com/Ed94/metadesk.git
synced 2026-06-13 07:52:22 -07:00
base progress
This commit is contained in:
+30
-15
@@ -100,8 +100,8 @@
|
||||
# define assert(x) (void)(x)
|
||||
#endif
|
||||
|
||||
#define InvalidPath assert( ! "Invalid Path!")
|
||||
#define NotImplemented assert( ! "Not Implemented!")
|
||||
#define invalid_path assert( ! "Invalid Path!")
|
||||
#define not_implemented assert( ! "Not Implemented!")
|
||||
#define no_op ((void)0)
|
||||
#define md_static_assert(C, ID) global U8 glue(ID, __LINE__)[ (C) ? 1 : -1 ]
|
||||
|
||||
@@ -143,21 +143,36 @@
|
||||
//~ rjf: Linked List Building Macros
|
||||
|
||||
//- rjf: linked list macro helpers
|
||||
#define Check``Nil(nil,p) ((p) == 0 || (p) == nil)
|
||||
#define SetNil(nil,p) ((p) = nil)
|
||||
#define check_nil(nil,p) ((p) == 0 || (p) == nil)
|
||||
#define set_nil(nil,p) ((p) = nil)
|
||||
|
||||
//- rjf: doubly-linked-lists
|
||||
#define DLLInsert_NPZ(nil,f,l,p,n,next,prev) (CheckNil(nil,f) ? \
|
||||
((f) = (l) = (n), SetNil(nil,(n)->next), SetNil(nil,(n)->prev)) :\
|
||||
CheckNil(nil,p) ? \
|
||||
((n)->next = (f), (f)->prev = (n), (f) = (n), SetNil(nil,(n)->prev)) :\
|
||||
((p)==(l)) ? \
|
||||
((l)->next = (n), (n)->prev = (l), (l) = (n), SetNil(nil, (n)->next)) :\
|
||||
(((!CheckNil(nil,p) && CheckNil(nil,(p)->next)) ? (0) : ((p)->next->prev = (n))), ((n)->next = (p)->next), ((p)->next = (n)), ((n)->prev = (p))))
|
||||
#define DLLPushBack_NPZ(nil,f,l,n,next,prev) DLLInsert_NPZ(nil,f,l,l,n,next,prev)
|
||||
#define DLLPushFront_NPZ(nil,f,l,n,next,prev) DLLInsert_NPZ(nil,l,f,f,n,prev,next)
|
||||
#define DLLRemove_NPZ(nil,f,l,n,next,prev) (((n) == (f) ? (f) = (n)->next : (0)),\
|
||||
((n) == (l) ? (l) = (l)->prev : (0)),\
|
||||
#define dll_insert_npz(nil, f, l, p, n, next, prev) \
|
||||
(check_nil(nil, f) ? \
|
||||
((f) = (l) = (n), set_nil(nil, (n)->next), set_nil(nil, (n)->prev)) \
|
||||
: CheckNil(nil,p) ? \
|
||||
((n)->next = (f), (f)->prev = (n), (f) = (n), SetNil(nil,(n)->prev)) \
|
||||
: ((p) == (l)) ? \
|
||||
((l)->next = (n), (n)->prev = (l), (l) = (n), SetNil(nil, (n)->next)) \
|
||||
: ( ((!CheckNil(nil, p) && CheckNil(nil, (p)->next) ) ? \
|
||||
(0) \
|
||||
: ((p)->next->prev = (n))), ((n)->next = (p)->next), ((p)->next = (n)), ((n)->prev = (p))) \
|
||||
) \
|
||||
|
||||
#define dll_push_back_npz(nil, f, l, n, next, prev) dll_insert_npz(nil, f, l, l, n, next, prev)
|
||||
#define dll_push_front_npz(nil, f, l, n, next, prev) dll_insert_npz(nil, l, f, f, n, prev, next)
|
||||
#define dll_remove_npz(nil,f,l,n,next,prev) \
|
||||
( \
|
||||
( \
|
||||
(n) == (f) ? \
|
||||
(f) = (n)->next \
|
||||
: (0) \
|
||||
), \
|
||||
( \
|
||||
(n) == (l) ? \
|
||||
(l) = (l)->prev \
|
||||
: (0) \
|
||||
), \
|
||||
(CheckNil(nil,(n)->prev) ? (0) :\
|
||||
((n)->prev->next = (n)->next)),\
|
||||
(CheckNil(nil,(n)->next) ? (0) :\
|
||||
|
||||
Reference in New Issue
Block a user