framework/c/inc/le_singlyLinkedList.h
Go to the documentation of this file.
00001 
00176 #ifndef LEGATO_SINGLY_LINKED_LIST_INCLUDE_GUARD
00177 #define LEGATO_SINGLY_LINKED_LIST_INCLUDE_GUARD
00178 
00179 
00180 //--------------------------------------------------------------------------------------------------
00189 //--------------------------------------------------------------------------------------------------
00190 typedef struct le_sls_Link
00191 {
00192     struct le_sls_Link* nextPtr;       
00193 }
00194 le_sls_Link_t;
00195 
00196 
00197 //--------------------------------------------------------------------------------------------------
00204 //--------------------------------------------------------------------------------------------------
00205 typedef struct
00206 {
00207     le_sls_Link_t* tailLinkPtr;        
00208 }
00209 le_sls_List_t;
00210 
00211 
00212 //--------------------------------------------------------------------------------------------------
00217 //--------------------------------------------------------------------------------------------------
00218 #define LE_SLS_LIST_INIT (le_sls_List_t){NULL}
00219 
00220 
00221 //--------------------------------------------------------------------------------------------------
00226 //--------------------------------------------------------------------------------------------------
00227 #define LE_SLS_LINK_INIT (le_sls_Link_t){NULL}
00228 
00229 
00230 //--------------------------------------------------------------------------------------------------
00234 //--------------------------------------------------------------------------------------------------
00235 void le_sls_Stack
00236 (
00237     le_sls_List_t* listPtr,            
00238     le_sls_Link_t* newLinkPtr          
00239 );
00240 
00241 
00242 //--------------------------------------------------------------------------------------------------
00246 //--------------------------------------------------------------------------------------------------
00247 void le_sls_Queue
00248 (
00249     le_sls_List_t* listPtr,            
00250     le_sls_Link_t* newLinkPtr          
00251 );
00252 
00253 
00254 //--------------------------------------------------------------------------------------------------
00259 //--------------------------------------------------------------------------------------------------
00260 void le_sls_AddAfter
00261 (
00262     le_sls_List_t* listPtr,            
00263     le_sls_Link_t* currentLinkPtr,     
00264     le_sls_Link_t* newLinkPtr          
00265 );
00266 
00267 
00268 //--------------------------------------------------------------------------------------------------
00277 //--------------------------------------------------------------------------------------------------
00278 le_sls_Link_t* le_sls_RemoveAfter
00279 (
00280     le_sls_List_t* listPtr,            
00281     le_sls_Link_t* currentLinkPtr      
00282 
00283 );
00284 
00285 
00286 //--------------------------------------------------------------------------------------------------
00294 //--------------------------------------------------------------------------------------------------
00295 le_sls_Link_t* le_sls_Pop
00296 (
00297     le_sls_List_t* listPtr             
00298 );
00299 
00300 
00301 //--------------------------------------------------------------------------------------------------
00309 //--------------------------------------------------------------------------------------------------
00310 le_sls_Link_t* le_sls_Peek
00311 (
00312     const le_sls_List_t* listPtr            
00313 );
00314 
00315 
00316 //--------------------------------------------------------------------------------------------------
00327 //--------------------------------------------------------------------------------------------------
00328 le_sls_Link_t* le_sls_PeekNext
00329 (
00330     const le_sls_List_t* listPtr,           
00331     const le_sls_Link_t* currentLinkPtr     
00332 );
00333 
00334 
00335 //--------------------------------------------------------------------------------------------------
00342 //--------------------------------------------------------------------------------------------------
00343 static inline bool le_sls_IsEmpty
00344 (
00345     const le_sls_List_t* listPtr            
00346 )
00347 //--------------------------------------------------------------------------------------------------
00348 {
00349     return (le_sls_Peek(listPtr) == NULL);
00350 }
00351 
00352 
00353 //--------------------------------------------------------------------------------------------------
00361 //--------------------------------------------------------------------------------------------------
00362 bool le_sls_IsInList
00363 (
00364     const le_sls_List_t* listPtr,    
00365     const le_sls_Link_t* linkPtr     
00366 );
00367 
00368 
00369 //--------------------------------------------------------------------------------------------------
00376 //--------------------------------------------------------------------------------------------------
00377 size_t le_sls_NumLinks
00378 (
00379     const le_sls_List_t* listPtr       
00380 );
00381 
00382 
00383 //--------------------------------------------------------------------------------------------------
00391 //--------------------------------------------------------------------------------------------------
00392 bool le_sls_IsListCorrupted
00393 (
00394     const le_sls_List_t* listPtr    
00395 );
00396 
00397 
00398 #endif  // LEGATO_SINGLY_LINKED_LIST_INCLUDE_GUARD
00399 
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines