Snapdragon® Telematics Application Framework (TelAF) Interface Specification
le_singlyLinkedList.h
Go to the documentation of this file.
1 
172 #ifndef LEGATO_SINGLY_LINKED_LIST_INCLUDE_GUARD
173 #define LEGATO_SINGLY_LINKED_LIST_INCLUDE_GUARD
174 
175 
176 //--------------------------------------------------------------------------------------------------
185 //--------------------------------------------------------------------------------------------------
186 typedef struct le_sls_Link
187 {
188  struct le_sls_Link* nextPtr;
189 }
191 
192 
193 //--------------------------------------------------------------------------------------------------
200 //--------------------------------------------------------------------------------------------------
201 typedef struct
202 {
204 }
206 
207 
208 //--------------------------------------------------------------------------------------------------
214 //--------------------------------------------------------------------------------------------------
216 
217 
218 //--------------------------------------------------------------------------------------------------
223 //--------------------------------------------------------------------------------------------------
224 #define LE_SLS_LIST_DECL_INIT {NULL}
225 
226 //--------------------------------------------------------------------------------------------------
231 //--------------------------------------------------------------------------------------------------
232 #define LE_SLS_LIST_INIT (le_sls_List_t)LE_SLS_LIST_DECL_INIT
233 
234 
235 //--------------------------------------------------------------------------------------------------
240 //--------------------------------------------------------------------------------------------------
241 #define LE_SLS_LINK_INIT (le_sls_Link_t){NULL}
242 
243 
244 //--------------------------------------------------------------------------------------------------
248 //--------------------------------------------------------------------------------------------------
249 void le_sls_Stack
250 (
251  le_sls_List_t* listPtr,
252  le_sls_Link_t* newLinkPtr
253 );
254 
255 
256 //--------------------------------------------------------------------------------------------------
260 //--------------------------------------------------------------------------------------------------
261 void le_sls_Queue
262 (
263  le_sls_List_t* listPtr,
264  le_sls_Link_t* newLinkPtr
265 );
266 
267 
268 //--------------------------------------------------------------------------------------------------
274 //--------------------------------------------------------------------------------------------------
275 void le_sls_AddAfter
276 (
277  le_sls_List_t* listPtr,
278  le_sls_Link_t* currentLinkPtr,
279  le_sls_Link_t* newLinkPtr
280 );
281 
282 
283 //--------------------------------------------------------------------------------------------------
292 //--------------------------------------------------------------------------------------------------
294 (
295  le_sls_List_t* listPtr,
296  le_sls_Link_t* currentLinkPtr
297 );
299 
300 
301 //--------------------------------------------------------------------------------------------------
309 //--------------------------------------------------------------------------------------------------
311 (
312  le_sls_List_t* listPtr
313 );
314 
315 
316 //--------------------------------------------------------------------------------------------------
324 //--------------------------------------------------------------------------------------------------
326 (
327  const le_sls_List_t* listPtr
328 );
329 
330 
331 //------------------------------------------------------------------------------------------------------------
339 //------------------------------------------------------------------------------------------------------------
341 (
342  const le_sls_List_t* listPtr
343 );
344 
345 
346 //--------------------------------------------------------------------------------------------------
357 //--------------------------------------------------------------------------------------------------
359 (
360  const le_sls_List_t* listPtr,
361  const le_sls_Link_t* currentLinkPtr
362 );
363 
364 
365 //--------------------------------------------------------------------------------------------------
372 //--------------------------------------------------------------------------------------------------
374 (
375  const le_sls_List_t* listPtr
376 )
377 //--------------------------------------------------------------------------------------------------
378 {
379  return (le_sls_Peek(listPtr) == NULL);
380 }
381 
382 
383 //--------------------------------------------------------------------------------------------------
387 //--------------------------------------------------------------------------------------------------
388 void le_sls_Sort
389 (
390  le_sls_List_t* listPtr,
391  le_sls_LessThanFunc_t comparatorPtr
392 );
393 
394 //--------------------------------------------------------------------------------------------------
402 //--------------------------------------------------------------------------------------------------
403 bool le_sls_IsInList
404 (
405  const le_sls_List_t* listPtr,
406  const le_sls_Link_t* linkPtr
407 );
408 
409 
410 //--------------------------------------------------------------------------------------------------
418 //--------------------------------------------------------------------------------------------------
420 (
421  const le_sls_List_t* listPtr,
422  const le_sls_Link_t* linkPtr
423 )
424 {
425  return (le_sls_Peek(listPtr) == linkPtr);
426 }
427 
428 
429 //--------------------------------------------------------------------------------------------------
437 //--------------------------------------------------------------------------------------------------
439 (
440  const le_sls_List_t* listPtr,
441  const le_sls_Link_t* linkPtr
442 )
443 {
444  return (le_sls_PeekTail(listPtr) == linkPtr);
445 }
446 
447 
448 //--------------------------------------------------------------------------------------------------
455 //--------------------------------------------------------------------------------------------------
456 size_t le_sls_NumLinks
457 (
458  const le_sls_List_t* listPtr
459 );
460 
461 
462 //--------------------------------------------------------------------------------------------------
470 //--------------------------------------------------------------------------------------------------
472 (
473  const le_sls_List_t* listPtr
474 );
475 
476 //--------------------------------------------------------------------------------------------------
480 //--------------------------------------------------------------------------------------------------
481 #define LE_SLS_FOREACH(listPtr, iteratorPtr, type, member) \
482  for ((iteratorPtr) = CONTAINER_OF(le_sls_Peek(listPtr), type, member); \
483  &((iteratorPtr)->member); \
484  (iteratorPtr) = CONTAINER_OF(le_sls_PeekNext((listPtr),&((iteratorPtr)->member)), \
485  type, member))
486 
487 
488 
489 #endif // LEGATO_SINGLY_LINKED_LIST_INCLUDE_GUARD
bool le_sls_IsListCorrupted(const le_sls_List_t *listPtr)
Definition: le_singlyLinkedList.h:201
LE_DECLARE_INLINE bool le_sls_IsEmpty(const le_sls_List_t *listPtr)
Definition: le_singlyLinkedList.h:374
size_t le_sls_NumLinks(const le_sls_List_t *listPtr)
le_sls_Link_t * le_sls_RemoveAfter(le_sls_List_t *listPtr, le_sls_Link_t *currentLinkPtr)
Definition: le_singlyLinkedList.h:186
le_sls_Link_t * le_sls_PeekTail(const le_sls_List_t *listPtr)
le_sls_Link_t * le_sls_Peek(const le_sls_List_t *listPtr)
void le_sls_Sort(le_sls_List_t *listPtr, le_sls_LessThanFunc_t comparatorPtr)
LE_DECLARE_INLINE bool le_sls_IsHead(const le_sls_List_t *listPtr, const le_sls_Link_t *linkPtr)
Definition: le_singlyLinkedList.h:420
void le_sls_Stack(le_sls_List_t *listPtr, le_sls_Link_t *newLinkPtr)
#define LE_DECLARE_INLINE
Definition: le_basics.h:330
void le_sls_AddAfter(le_sls_List_t *listPtr, le_sls_Link_t *currentLinkPtr, le_sls_Link_t *newLinkPtr)
le_sls_Link_t * le_sls_Pop(le_sls_List_t *listPtr)
LE_DECLARE_INLINE bool le_sls_IsTail(const le_sls_List_t *listPtr, const le_sls_Link_t *linkPtr)
Definition: le_singlyLinkedList.h:439
struct le_sls_Link * nextPtr
Next link pointer.
Definition: le_singlyLinkedList.h:188
le_sls_Link_t * le_sls_PeekNext(const le_sls_List_t *listPtr, const le_sls_Link_t *currentLinkPtr)
bool le_sls_IsInList(const le_sls_List_t *listPtr, const le_sls_Link_t *linkPtr)
void le_sls_Queue(le_sls_List_t *listPtr, le_sls_Link_t *newLinkPtr)
le_sls_Link_t * tailLinkPtr
Tail link pointer.
Definition: le_singlyLinkedList.h:203
bool(* le_sls_LessThanFunc_t)(le_sls_Link_t *a, le_sls_Link_t *b)
Definition: le_singlyLinkedList.h:215