Drizzled Public API Documentation
Go to the documentation of this file.
45 class ut_list_base_node
52 #define UT_LIST_BASE_NODE_T(TYPE) ut_list_base_node<TYPE>
54 #define UT_LIST_BASE_NODE_T(TYPE) int
73 #define UT_LIST_NODE_T(TYPE)\
84 #define UT_LIST_INIT(BASE)\
97 #define UT_LIST_ADD_FIRST(NAME, BASE, N)\
101 ((N)->NAME).next = (BASE).start;\
102 ((N)->NAME).prev = NULL;\
103 if (UNIV_LIKELY((BASE).start != NULL)) {\
104 ut_ad((BASE).start != (N));\
105 (((BASE).start)->NAME).prev = (N);\
108 if (UNIV_UNLIKELY((BASE).end == NULL)) {\
119 #define UT_LIST_ADD_LAST(NAME, BASE, N)\
123 ((N)->NAME).prev = (BASE).end;\
124 ((N)->NAME).next = NULL;\
125 if ((BASE).end != NULL) {\
126 ut_ad((BASE).end != (N));\
127 (((BASE).end)->NAME).next = (N);\
130 if ((BASE).start == NULL) {\
142 #define UT_LIST_INSERT_AFTER(NAME, BASE, NODE1, NODE2)\
146 ut_ad((NODE1) != (NODE2));\
148 ((NODE2)->NAME).prev = (NODE1);\
149 ((NODE2)->NAME).next = ((NODE1)->NAME).next;\
150 if (((NODE1)->NAME).next != NULL) {\
151 ((((NODE1)->NAME).next)->NAME).prev = (NODE2);\
153 ((NODE1)->NAME).next = (NODE2);\
154 if ((BASE).end == (NODE1)) {\
155 (BASE).end = (NODE2);\
159 #ifdef UNIV_LIST_DEBUG
163 # define UT_LIST_REMOVE_CLEAR(NAME, N) \
164 ((N)->NAME.prev = (N)->NAME.next = (void*) -1)
169 # define UT_LIST_REMOVE_CLEAR(NAME, N)
178 #define UT_LIST_REMOVE(NAME, BASE, N) \
181 ut_a((BASE).count > 0); \
183 if (((N)->NAME).next != NULL) { \
184 ((((N)->NAME).next)->NAME).prev = ((N)->NAME).prev; \
186 (BASE).end = ((N)->NAME).prev; \
188 if (((N)->NAME).prev != NULL) { \
189 ((((N)->NAME).prev)->NAME).next = ((N)->NAME).next; \
191 (BASE).start = ((N)->NAME).next; \
193 UT_LIST_REMOVE_CLEAR(NAME, N); \
201 #define UT_LIST_GET_NEXT(NAME, N)\
209 #define UT_LIST_GET_PREV(NAME, N)\
217 #define UT_LIST_GET_LEN(BASE)\
224 #define UT_LIST_GET_FIRST(BASE)\
232 #define UT_LIST_GET_LAST(BASE)\
235 #define UT_LIST_GET_LAST(BASE) (BASE= NULL)
244 #define UT_LIST_VALIDATE(NAME, TYPE, BASE, ASSERTION) \
246 ulint ut_list_i_313; \
247 TYPE* ut_list_node_313; \
249 ut_list_node_313 = (BASE).start; \
251 for (ut_list_i_313 = (BASE).count; ut_list_i_313--; ) { \
252 ut_a(ut_list_node_313); \
254 ut_ad((ut_list_node_313->NAME).next || !ut_list_i_313); \
255 ut_list_node_313 = (ut_list_node_313->NAME).next; \
258 ut_a(ut_list_node_313 == NULL); \
260 ut_list_node_313 = (BASE).end; \
262 for (ut_list_i_313 = (BASE).count; ut_list_i_313--; ) { \
263 ut_a(ut_list_node_313); \
265 ut_ad((ut_list_node_313->NAME).prev || !ut_list_i_313); \
266 ut_list_node_313 = (ut_list_node_313->NAME).prev; \
269 ut_a(ut_list_node_313 == NULL); \