1 | /* |
1 | /* |
2 | list.h - Part of psiconv, a PSION 5 file formats converter |
2 | list.h - Part of psiconv, a PSION 5 file formats converter |
3 | Copyright (c) 1999 Frodo Looijaard <frodol@dds.nl> |
3 | Copyright (c) 1999, 2000 Frodo Looijaard <frodol@dds.nl> |
4 | |
4 | |
5 | This program is free software; you can redistribute it and/or modify |
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 |
6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or |
7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. |
8 | (at your option) any later version. |
… | |
… | |
67 | supplied element. Of course, this does not help if the element contains |
67 | supplied element. Of course, this does not help if the element contains |
68 | pointers. |
68 | pointers. |
69 | As the lists extends itself, it may be necessary to allocate new |
69 | As the lists extends itself, it may be necessary to allocate new |
70 | memory. If this fails, a negative error-code is returned. If everything, |
70 | memory. If this fails, a negative error-code is returned. If everything, |
71 | succeeds, 0 is returned. */ |
71 | succeeds, 0 is returned. */ |
72 | extern int psiconv_list_add(psiconv_list l, void *el); |
72 | extern int psiconv_list_add(psiconv_list l, const void *el); |
73 | |
73 | |
74 | /* Do some action for each element. Note: you can directly modify the |
74 | /* Do some action for each element. Note: you can directly modify the |
75 | elements supplied to action, and they will be changed in the list, |
75 | elements supplied to action, and they will be changed in the list, |
76 | but never try a free(el)! */ |
76 | but never try a free(el)! */ |
77 | extern void psiconv_list_foreach_el(psiconv_list l, void action(void *el)); |
77 | extern void psiconv_list_foreach_el(psiconv_list l, void action(void *el)); |
… | |
… | |
85 | Returned is the actual number of elements added. This assumes the file |
85 | Returned is the actual number of elements added. This assumes the file |
86 | layout and the memory layout of elements is the same. Note that if |
86 | layout and the memory layout of elements is the same. Note that if |
87 | not enough memory could be allocated, 0 is simply returned. */ |
87 | not enough memory could be allocated, 0 is simply returned. */ |
88 | extern size_t psiconv_list_fread(psiconv_list l,size_t size, FILE *f); |
88 | extern size_t psiconv_list_fread(psiconv_list l,size_t size, FILE *f); |
89 | |
89 | |
|
|
90 | /* Concatenate two lists. The element sized does not have to be the same, |
|
|
91 | but the result may be quite unexpected if it is not. */ |
|
|
92 | int psiconv_list_concat(psiconv_list l, const psiconv_list extra); |
|
|
93 | |
90 | |
94 | |
91 | #ifdef __cplusplus |
95 | #ifdef __cplusplus |
92 | } |
96 | } |
93 | #endif /* __cplusplus */ |
97 | #endif /* __cplusplus */ |
94 | |
98 | |