| 1 | /* Copyright (c) 2000, 2025, Oracle and/or its affiliates. | 
| 2 |  | 
| 3 |    This program is free software; you can redistribute it and/or modify | 
| 4 |    it under the terms of the GNU General Public License, version 2.0, | 
| 5 |    as published by the Free Software Foundation. | 
| 6 |  | 
| 7 |    This program is designed to work with certain software (including | 
| 8 |    but not limited to OpenSSL) that is licensed under separate terms, | 
| 9 |    as designated in a particular file or component or in included license | 
| 10 |    documentation.  The authors of MySQL hereby grant you an additional | 
| 11 |    permission to link the program and your derivative works with the | 
| 12 |    separately licensed software that they have either included with | 
| 13 |    the program or referenced in the documentation. | 
| 14 |  | 
| 15 |    Without limiting anything contained in the foregoing, this file, | 
| 16 |    which is part of C Driver for MySQL (Connector/C), is also subject to the | 
| 17 |    Universal FOSS Exception, version 1.0, a copy of which can be found at | 
| 18 |    http://oss.oracle.com/licenses/universal-foss-exception. | 
| 19 |  | 
| 20 |    This program is distributed in the hope that it will be useful, | 
| 21 |    but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| 22 |    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
| 23 |    GNU General Public License, version 2.0, for more details. | 
| 24 |  | 
| 25 |    You should have received a copy of the GNU General Public License | 
| 26 |    along with this program; if not, write to the Free Software | 
| 27 |    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA */ | 
| 28 |  | 
| 29 | #ifndef MY_LIST_INCLUDED | 
| 30 | #define MY_LIST_INCLUDED | 
| 31 |  | 
| 32 | /** | 
| 33 |   @file include/my_list.h | 
| 34 | */ | 
| 35 |  | 
| 36 | typedef struct LIST { | 
| 37 |   struct LIST *prev, *next; | 
| 38 |   void *data; | 
| 39 | } LIST; | 
| 40 |  | 
| 41 | typedef int (*list_walk_action)(void *, void *); | 
| 42 |  | 
| 43 | extern LIST *list_add(LIST *root, LIST *element); | 
| 44 | extern LIST *list_delete(LIST *root, LIST *element); | 
| 45 | extern LIST *list_cons(void *data, LIST *root); | 
| 46 | extern LIST *list_reverse(LIST *root); | 
| 47 | extern void list_free(LIST *root, unsigned int free_data); | 
| 48 | extern unsigned int list_length(LIST *); | 
| 49 | extern int list_walk(LIST *, list_walk_action action, unsigned char *argument); | 
| 50 |  | 
| 51 | #define list_rest(a) ((a)->next) | 
| 52 |  | 
| 53 | #endif  // MY_LIST_INCLUDED | 
| 54 |  |