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