You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include "defs.h"
#include "obstack.h"
#include "typeprint.h"
#include "frame.h" /* ??? */
-#include <string.h>
+#include "gdb_string.h"
#include <errno.h>
+#if 0 /* Currently unused */
static void f_type_print_args PARAMS ((struct type *, FILE *));
+#endif
+
+static void print_equivalent_f77_float_type PARAMS ((struct type *, FILE *));
static void f_type_print_varspec_suffix PARAMS ((struct type *, FILE *,
int, int, int));
case TYPE_CODE_MEMBER:
case TYPE_CODE_REF:
case TYPE_CODE_COMPLEX:
+ case TYPE_CODE_TYPEDEF:
/* These types need no prefix. They are listed here so that
gcc -Wall will reveal any types that haven't been handled. */
break;
}
}
+#if 0 /* Currently unused */
+
static void
f_type_print_args (type, stream)
struct type *type;
fprintf_filtered (stream, ")");
}
+#endif /* 0 */
+
/* Print any array sizes, function arguments or close parentheses
needed after the variable name (to describe its type).
Args work like c_type_print_varspec_prefix. */
case TYPE_CODE_METHOD:
case TYPE_CODE_MEMBER:
case TYPE_CODE_COMPLEX:
+ case TYPE_CODE_TYPEDEF:
/* These types do not need a suffix. They are listed so that
gcc -Wall will report types that may not have been considered. */
break;
}
}
-void
+static void
print_equivalent_f77_float_type (type, stream)
struct type *type;
FILE *stream;
appropriate real. XLC stupidly outputs -12 as a type
for real when it really should be outputting -18 */
- switch (TYPE_LENGTH (type))
- {
- case 4:
- fprintf_filtered (stream, "real*4");
- break;
-
- case 8:
- fprintf_filtered(stream,"real*8");
- break;
- }
+ fprintf_filtered (stream, "real*%d", TYPE_LENGTH (type));
}
/* Print the name of the type (or the ultimate pointer target,
return;
}
+ if (TYPE_CODE (type) != TYPE_CODE_TYPEDEF)
+ CHECK_TYPEDEF (type);
+
switch (TYPE_CODE (type))
{
- case TYPE_CODE_ARRAY:
- f_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
+ case TYPE_CODE_TYPEDEF:
+ f_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
break;
+ case TYPE_CODE_ARRAY:
case TYPE_CODE_FUNC:
f_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
break;
case TYPE_CODE_PTR:
fprintf_filtered (stream, "PTR TO -> ( ");
- f_type_print_base (TYPE_TARGET_TYPE (type), stream, show, level);
+ f_type_print_base (TYPE_TARGET_TYPE (type), stream, 0, level);
break;
case TYPE_CODE_VOID:
break;
case TYPE_CODE_COMPLEX:
- fprintf_filtered (stream, "complex*");
- fprintf_filtered (stream, "%d", TYPE_LENGTH (type));
+ fprintf_filtered (stream, "complex*%d", TYPE_LENGTH (type));
break;
case TYPE_CODE_FLT:
/* Strings may have dynamic upperbounds (lengths) like arrays. */
if (TYPE_ARRAY_UPPER_BOUND_TYPE (type) == BOUND_CANNOT_BE_DETERMINED)
- fprintf_filtered ("character*(*)");
+ fprintf_filtered (stream, "character*(*)");
else
{
retcode = f77_get_dynamic_upperbound (type, &upper_bound);