LCOV - code coverage report
Current view: top level - include/freetds/utils - dlist.h (source / functions) Hit Total Coverage
Test: FreeTDS coverage Lines: 8 8 100.0 %
Date: 2025-01-18 11:50:39 Functions: 1 1 100.0 %

          Line data    Source code
       1             : /* Dlist - dynamic list
       2             :  * Copyright (C) 2016-2024 Frediano Ziglio
       3             :  *
       4             :  * This library is free software; you can redistribute it and/or
       5             :  * modify it under the terms of the GNU Library General Public
       6             :  * License as published by the Free Software Foundation; either
       7             :  * version 2 of the License, or (at your option) any later version.
       8             :  *
       9             :  * This library is distributed in the hope that it will be useful,
      10             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      11             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      12             :  * Library General Public License for more details.
      13             :  *
      14             :  * You should have received a copy of the GNU Library General Public
      15             :  * License along with this library; if not, write to the
      16             :  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
      17             :  * Boston, MA 02111-1307, USA.
      18             :  */
      19             : 
      20             : #ifndef _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_
      21             : #define _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_
      22             : 
      23             : typedef struct dlist_ring {
      24             :         struct dlist_ring *next;
      25             :         struct dlist_ring *prev;
      26             : } dlist_ring;
      27             : 
      28             : #if ENABLE_EXTRA_CHECKS
      29             : void dlist_ring_check(dlist_ring *ring);
      30             : #endif
      31             : 
      32             : #define DLIST_FIELDS(name) \
      33             :         dlist_ring name
      34             : 
      35             : #define DLIST_FOREACH(prefix, list, p) \
      36             :         for (p = prefix ## _ ## first(list); p != NULL; p = prefix ## _ ## next(list, p))
      37             : 
      38        2205 : static inline void dlist_insert_after(dlist_ring *ring_pos, dlist_ring *ring_item)
      39             : {
      40        2205 :         assert(!ring_item->next && !ring_item->prev);
      41        2205 :         ring_pos->next->prev = ring_item;
      42        2205 :         ring_item->prev = ring_pos;
      43        2205 :         ring_item->next = ring_pos->next;
      44        2205 :         ring_pos->next = ring_item;
      45        2205 :         assert(ring_item->next && ring_item->prev);
      46        2205 : }
      47             : 
      48             : #endif /* _tdsguard_aej6DXYKBycQe7Wyg2gHaQ_ */

Generated by: LCOV version 1.13