1 /* 2 * This file is part of cparser. 3 * Copyright (C) 2007-2009 Matthias Braun <matze@braunis.de> 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 18 * 02111-1307, USA. 19 */ 20 #ifndef TYPES_H 21 #define TYPES_H 22 23 #include "type.h" 24 25 extern type_t *type_error_type; 26 27 extern type_t *type_bool; 28 extern type_t *type_char; 29 extern type_t *type_const_char; 30 extern type_t *type_double; 31 extern type_t *type_float; 32 extern type_t *type_int; 33 extern type_t *type_long_double; 34 extern type_t *type_long_long; 35 extern type_t *type_long; 36 extern type_t *type_short; 37 extern type_t *type_unsigned_short; 38 extern type_t *type_signed_char; 39 extern type_t *type_unsigned_char; 40 extern type_t *type_unsigned_int; 41 extern type_t *type_unsigned_long_long; 42 extern type_t *type_unsigned_long; 43 extern type_t *type_void; 44 45 extern type_t *type_char_ptr; 46 extern type_t *type_char_ptr_restrict; 47 extern type_t *type_const_char_ptr; 48 extern type_t *type_const_char_ptr_restrict; 49 extern type_t *type_int_ptr; 50 extern type_t *type_long_long_ptr; 51 extern type_t *type_long_ptr; 52 extern type_t *type_unsigned_long_ptr; 53 extern type_t *type_short_ptr; 54 extern type_t *type_signed_char_ptr; 55 extern type_t *type_void_ptr; 56 extern type_t *type_const_void; 57 extern type_t *type_const_void_ptr; 58 extern type_t *type_void_ptr_restrict; 59 extern type_t *type_const_void_ptr_restrict; 60 61 extern type_t *type_char_ptr_ptr; 62 63 extern type_t *type_char16_t; 64 extern type_t *type_char32_t; 65 extern type_t *type_char16_t_const; 66 extern type_t *type_char32_t_const; 67 extern type_t *type_intmax_t; 68 extern type_t *type_ptrdiff_t; 69 extern type_t *type_size_t; 70 extern type_t *type_ssize_t; 71 extern type_t *type_uintmax_t; 72 extern type_t *type_uptrdiff_t; 73 extern type_t *type_wchar_t; 74 extern type_t *type_const_wchar_t; 75 extern type_t *type_wchar_ptr_t; 76 extern type_t *type_wint_t; 77 extern type_t *type_int32_t; 78 extern type_t *type_int64_t; 79 80 extern type_t *type_char16_t_ptr; 81 extern type_t *type_char32_t_ptr; 82 extern type_t *type_char16_t_const_ptr; 83 extern type_t *type_char32_t_const_ptr; 84 extern type_t *type_intmax_t_ptr; 85 extern type_t *type_ptrdiff_t_ptr; 86 extern type_t *type_ssize_t_ptr; 87 extern type_t *type_wchar_t_ptr; 88 extern type_t *type_const_wchar_t_ptr; 89 90 extern type_t *type_valist; 91 92 /* microsoft types */ 93 extern atomic_type_kind_t int8_type_kind; 94 extern atomic_type_kind_t int16_type_kind; 95 extern atomic_type_kind_t int32_type_kind; 96 extern atomic_type_kind_t int64_type_kind; 97 extern atomic_type_kind_t int128_type_kind; 98 extern atomic_type_kind_t unsigned_int8_type_kind; 99 extern atomic_type_kind_t unsigned_int16_type_kind; 100 extern atomic_type_kind_t unsigned_int32_type_kind; 101 extern atomic_type_kind_t unsigned_int64_type_kind; 102 extern atomic_type_kind_t unsigned_int128_type_kind; 103 104 extern type_t *type_int8; 105 extern type_t *type_int16; 106 extern type_t *type_int32; 107 extern type_t *type_int64; 108 extern type_t *type_int64_ptr; 109 extern type_t *type_int128; 110 extern type_t *type_unsigned_int8; 111 extern type_t *type_unsigned_int16; 112 extern type_t *type_unsigned_int32; 113 extern type_t *type_unsigned_int64; 114 extern type_t *type_unsigned_int128; 115 116 void init_basic_types(void); 117 void init_wchar_types(atomic_type_kind_t wchar_akind); 118 119 #endif 120