1 /* Sequential list data type backed by another list. 2 Copyright (C) 2006, 2009-2021 Free Software Foundation, Inc. 3 Written by Bruno Haible <bruno@clisp.org>, 2006. 4 5 This program is free software: you can redistribute it and/or modify 6 it under the terms of the GNU General Public License as published by 7 the Free Software Foundation; either version 3 of the License, or 8 (at your option) any later version. 9 10 This program is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 GNU General Public License for more details. 14 15 You should have received a copy of the GNU General Public License 16 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 17 18 #ifndef _GL_SUBLIST_H 19 #define _GL_SUBLIST_H 20 21 #include "gl_list.h" 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 28 /* Creates a sublist of a given list. 29 This is the list of elements with indices i, start_index <= i < end_index. 30 The sublist is backed by the given list, which means: 31 - Modifications to the sublist affect the whole list. 32 - Modifications to the whole list are immediately visible in the sublist. 33 - The sublist is only valid as long as the whole list is valid. 34 - The sublist must not be passed to the gl_list_sortedlist_add() function. 35 */ 36 #if 0 /* declared in gl_xsublist.h */ 37 extern gl_list_t gl_sublist_create (gl_list_t whole_list, 38 size_t start_index, size_t end_index) 39 /*_GL_ATTRIBUTE_DEALLOC (gl_list_free, 1)*/ 40 _GL_ATTRIBUTE_RETURNS_NONNULL; 41 #endif 42 /* Likewise. Returns NULL upon out-of-memory. */ 43 extern gl_list_t gl_sublist_nx_create (gl_list_t whole_list, 44 size_t start_index, size_t end_index) 45 /*_GL_ATTRIBUTE_DEALLOC (gl_list_free, 1)*/; 46 47 48 #ifdef __cplusplus 49 } 50 #endif 51 52 #endif /* _GL_SUBLIST_H */