|  | /* Type codes for GDB. | 
|  |  | 
|  | Copyright (C) 1992-2022 Free Software Foundation, Inc. | 
|  |  | 
|  | This file is part of GDB. | 
|  |  | 
|  | This program is free software; you can redistribute it and/or modify | 
|  | it under the terms of the GNU General Public License as published by | 
|  | the Free Software Foundation; either version 3 of the License, or | 
|  | (at your option) any later version. | 
|  |  | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | GNU General Public License for more details. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License | 
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ | 
|  |  | 
|  | OP (TYPE_CODE_PTR)		/**< Pointer type */ | 
|  |  | 
|  | /* * Array type with lower & upper bounds. | 
|  |  | 
|  | Regardless of the language, GDB represents multidimensional | 
|  | array types the way C does: as arrays of arrays.  So an | 
|  | instance of a GDB array type T can always be seen as a series | 
|  | of instances of T->target_type () laid out sequentially in | 
|  | memory. | 
|  |  | 
|  | Row-major languages like C lay out multi-dimensional arrays so | 
|  | that incrementing the rightmost index in a subscripting | 
|  | expression results in the smallest change in the address of the | 
|  | element referred to.  Column-major languages like Fortran lay | 
|  | them out so that incrementing the leftmost index results in the | 
|  | smallest change. | 
|  |  | 
|  | This means that, in column-major languages, working our way | 
|  | from type to target type corresponds to working through indices | 
|  | from right to left, not left to right.  */ | 
|  | OP (TYPE_CODE_ARRAY) | 
|  |  | 
|  | OP (TYPE_CODE_STRUCT)		/**< C struct or Pascal record */ | 
|  | OP (TYPE_CODE_UNION)		/**< C union or Pascal variant part */ | 
|  | OP (TYPE_CODE_ENUM)		/**< Enumeration type */ | 
|  | OP (TYPE_CODE_FLAGS)		/**< Bit flags type */ | 
|  | OP (TYPE_CODE_FUNC)		/**< Function type */ | 
|  | OP (TYPE_CODE_INT)		/**< Integer type */ | 
|  |  | 
|  | /* * Floating type.  This is *NOT* a complex type.  */ | 
|  | OP (TYPE_CODE_FLT) | 
|  |  | 
|  | /* * Void type.  The length field specifies the length (probably | 
|  | always one) which is used in pointer arithmetic involving | 
|  | pointers to this type, but actually dereferencing such a | 
|  | pointer is invalid; a void type has no length and no actual | 
|  | representation in memory or registers.  A pointer to a void | 
|  | type is a generic pointer.  */ | 
|  | OP (TYPE_CODE_VOID) | 
|  |  | 
|  | OP (TYPE_CODE_SET)		/**< Pascal sets */ | 
|  | OP (TYPE_CODE_RANGE)		/**< Range (integers within spec'd bounds).  */ | 
|  |  | 
|  | /* * A string type which is like an array of character but prints | 
|  | differently.  It does not contain a length field as Pascal | 
|  | strings (for many Pascals, anyway) do; if we want to deal with | 
|  | such strings, we should use a new type code.  */ | 
|  | OP (TYPE_CODE_STRING) | 
|  |  | 
|  | /* * Unknown type.  The length field is valid if we were able to | 
|  | deduce that much about the type, or 0 if we don't even know | 
|  | that.  */ | 
|  | OP (TYPE_CODE_ERROR) | 
|  |  | 
|  | /* C++ */ | 
|  | OP (TYPE_CODE_METHOD)		/**< Method type */ | 
|  |  | 
|  | /* * Pointer-to-member-function type.  This describes how to access a | 
|  | particular member function of a class (possibly a virtual | 
|  | member function).  The representation may vary between different | 
|  | C++ ABIs.  */ | 
|  | OP (TYPE_CODE_METHODPTR) | 
|  |  | 
|  | /* * Pointer-to-member type.  This is the offset within a class to | 
|  | some particular data member.  The only currently supported | 
|  | representation uses an unbiased offset, with -1 representing | 
|  | NULL; this is used by the Itanium C++ ABI (used by GCC on all | 
|  | platforms).  */ | 
|  | OP (TYPE_CODE_MEMBERPTR) | 
|  |  | 
|  | OP (TYPE_CODE_REF)		/**< C++ Reference types */ | 
|  |  | 
|  | OP (TYPE_CODE_RVALUE_REF)	/**< C++ rvalue reference types */ | 
|  |  | 
|  | OP (TYPE_CODE_CHAR)		/**< *real* character type */ | 
|  |  | 
|  | /* * Boolean type.  0 is false, 1 is true, and other values are | 
|  | non-boolean (e.g. FORTRAN "logical" used as unsigned int).  */ | 
|  | OP (TYPE_CODE_BOOL) | 
|  |  | 
|  | /* Fortran */ | 
|  | OP (TYPE_CODE_COMPLEX)		/**< Complex float */ | 
|  |  | 
|  | OP (TYPE_CODE_TYPEDEF) | 
|  |  | 
|  | OP (TYPE_CODE_NAMESPACE)	/**< C++ namespace.  */ | 
|  |  | 
|  | OP (TYPE_CODE_DECFLOAT)		/**< Decimal floating point.  */ | 
|  |  | 
|  | OP (TYPE_CODE_MODULE)		/**< Fortran module.  */ | 
|  |  | 
|  | /* * Internal function type.  */ | 
|  | OP (TYPE_CODE_INTERNAL_FUNCTION) | 
|  |  | 
|  | /* * Methods implemented in extension languages.  */ | 
|  | OP (TYPE_CODE_XMETHOD) | 
|  |  | 
|  | /* * Fixed Point type.  */ | 
|  | OP (TYPE_CODE_FIXED_POINT) | 
|  |  | 
|  | /* * Fortran namelist is a group of variables or arrays that can be | 
|  | read or written. | 
|  |  | 
|  | Namelist syntax: NAMELIST / groupname / namelist_items ... | 
|  | NAMELIST statement assign a group name to a collection of variables | 
|  | called as namelist items. The namelist items can be of any data type | 
|  | and can be variables or arrays. | 
|  |  | 
|  | Compiler emit DW_TAG_namelist for group name and DW_TAG_namelist_item | 
|  | for each of the namelist items. GDB process these namelist dies | 
|  | and print namelist variables during print and ptype commands.  */ | 
|  | OP (TYPE_CODE_NAMELIST) |