1 /* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved. 2 Copyright (c) 2017, MariaDB Corporation. 3 4 This program is free software; you can redistribute it and/or modify 5 it under the terms of the GNU General Public License as published by 6 the Free Software Foundation; version 2 of the License. 7 8 This program is distributed in the hope that it will be useful, 9 but WITHOUT ANY WARRANTY; without even the implied warranty of 10 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 GNU General Public License for more details. 12 13 You should have received a copy of the GNU General Public License 14 along with this program; if not, write to the Free Software 15 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA */ 16 17 18 #ifndef _typelib_h 19 #define _typelib_h 20 21 #include "my_alloc.h" 22 23 typedef struct st_typelib { /* Different types saved here */ 24 unsigned int count; /* How many types */ 25 const char *name; /* Name of typelib */ 26 const char **type_names; 27 unsigned int *type_lengths; 28 } TYPELIB; 29 30 extern my_ulonglong find_typeset(char *x, TYPELIB *typelib,int *error_position); 31 extern int find_type_with_warning(const char *x, TYPELIB *typelib, 32 const char *option); 33 #define FIND_TYPE_BASIC 0 34 /** makes @c find_type() require the whole name, no prefix */ 35 #define FIND_TYPE_NO_PREFIX (1U << 0) 36 /** always implicitly on, so unused, but old code may pass it */ 37 #define FIND_TYPE_NO_OVERWRITE 0 38 /** makes @c find_type() accept a number. Not used either */ 39 #define FIND_TYPE_ALLOW_NUMBER 0 40 /** makes @c find_type() treat ',' and '=' as terminators */ 41 #define FIND_TYPE_COMMA_TERM (1U << 3) 42 43 extern int find_type(const char *x, const TYPELIB *typelib, unsigned int flags); 44 extern void make_type(char *to,unsigned int nr,TYPELIB *typelib); 45 extern const char *get_type(TYPELIB *typelib,unsigned int nr); 46 extern TYPELIB *copy_typelib(MEM_ROOT *root, TYPELIB *from); 47 48 extern TYPELIB sql_protocol_typelib; 49 50 my_ulonglong find_set_from_flags(const TYPELIB *lib, unsigned int default_name, 51 my_ulonglong cur_set, my_ulonglong default_set, 52 const char *str, unsigned int length, 53 char **err_pos, unsigned int *err_len); 54 55 #endif /* _typelib_h */ 56