1 /* Sequential list data type backed by another list, with out-of-memory 2 checking. 3 Copyright (C) 2009-2021 Free Software Foundation, Inc. 4 Written by Bruno Haible <bruno@clisp.org>, 2009. 5 6 This program is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 18 19 #ifndef _GL_XSUBLIST_H 20 #define _GL_XSUBLIST_H 21 22 #include "gl_sublist.h" 23 #include "xalloc.h" 24 25 #ifndef _GL_INLINE_HEADER_BEGIN 26 #error "Please include config.h first." 27 #endif 28 _GL_INLINE_HEADER_BEGIN 29 #ifndef GL_XSUBLIST_INLINE 30 # define GL_XSUBLIST_INLINE _GL_INLINE 31 #endif 32 33 #ifdef __cplusplus 34 extern "C" { 35 #endif 36 37 /* These functions are thin wrappers around the corresponding functions with 38 _nx_ infix from gl_sublist.h. Upon out-of-memory, they invoke 39 xalloc_die (), instead of returning an error indicator. */ 40 GL_XSUBLIST_INLINE 41 /*_GL_ATTRIBUTE_DEALLOC (gl_list_free, 1)*/ 42 _GL_ATTRIBUTE_RETURNS_NONNULL 43 gl_list_t 44 gl_sublist_create (gl_list_t whole_list, size_t start_index, size_t end_index) /* */ 45 { 46 gl_list_t result = gl_sublist_nx_create (whole_list, start_index, end_index); 47 if (result == NULL) 48 xalloc_die (); 49 return result; 50 } 51 52 #ifdef __cplusplus 53 } 54 #endif 55 56 _GL_INLINE_HEADER_END 57 58 #endif /* _GL_XSUBLIST_H */