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