/* Type codes for GDB. Copyright (C) 1992-2026 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 . */ 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)