/* This test program is part of GDB, the GNU debugger.

   Copyright 1992-2021 Free Software Foundation, Inc.

   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/>.  */

/*
 *	Test file with lots of different types, for testing the
 *	"whatis" command.
 */

/*
 *	First the basic C types.
 */

char		v_char;
signed char	v_signed_char;
unsigned char	v_unsigned_char;

short		v_short;
signed short	v_signed_short;
unsigned short	v_unsigned_short;

int		v_int;
signed int	v_signed_int;
unsigned int	v_unsigned_int;

long		v_long;
signed long	v_signed_long;
unsigned long	v_unsigned_long;

#ifndef NO_LONG_LONG
long long		v_long_long;
signed long long	v_signed_long_long;
unsigned long long	v_unsigned_long_long;
#endif

float		v_float;
double		v_double;

/*
 *	Now some derived types, which are arrays, functions-returning,
 *	pointers, structures, unions, and enumerations.
 */

/**** arrays *******/

char		v_char_array[2];
signed char	v_signed_char_array[2];
unsigned char	v_unsigned_char_array[2];

short		v_short_array[2];
signed short	v_signed_short_array[2];
unsigned short	v_unsigned_short_array[2];

int		v_int_array[2];
signed int	v_signed_int_array[2];
unsigned int	v_unsigned_int_array[2];

long		v_long_array[2];
signed long	v_signed_long_array[2];
unsigned long	v_unsigned_long_array[2];

#ifndef NO_LONG_LONG
long long		v_long_long_array[2];
signed long long	v_signed_long_long_array[2];
unsigned long long	v_unsigned_long_long_array[2];
#endif

float		v_float_array[2];
double		v_double_array[2];

/**** pointers *******/

/* Make sure they still print as pointer to foo even there is a typedef
   for that type.  Test this not just for char *, which might be
   a special case kludge in GDB (Unix system include files like to define
   caddr_t), but for a variety of types.  */
typedef char *char_addr;
char_addr a_char_addr;
typedef unsigned short *ushort_addr;
ushort_addr a_ushort_addr;
typedef signed long *slong_addr;
slong_addr a_slong_addr;
#ifndef NO_LONG_LONG
typedef signed long long *slong_long_addr;
slong_long_addr a_slong_long_addr;
#endif

char		*v_char_pointer;
signed char	*v_signed_char_pointer;
unsigned char	*v_unsigned_char_pointer;

short		*v_short_pointer;
signed short	*v_signed_short_pointer;
unsigned short	*v_unsigned_short_pointer;

int		*v_int_pointer;
signed int	*v_signed_int_pointer;
unsigned int	*v_unsigned_int_pointer;

long		*v_long_pointer;
signed long	*v_signed_long_pointer;
unsigned long	*v_unsigned_long_pointer;

#ifndef NO_LONG_LONG
long long		*v_long_long_pointer;
signed long long	*v_signed_long_long_pointer;
unsigned long long	*v_unsigned_long_long_pointer;
#endif

float		*v_float_pointer;
double		*v_double_pointer;

/**** structs *******/

struct t_struct {
    char	v_char_member;
    short	v_short_member;
    int		v_int_member;
    long	v_long_member;
#ifndef NO_LONG_LONG
    long long	v_long_long_member;
#endif
    float	v_float_member;
    double	v_double_member;
} v_struct1, *v_struct_ptr1;

struct {
    char	v_char_member;
    short	v_short_member;
    int		v_int_member;
    long	v_long_member;
#ifndef NO_LONG_LONG
    long long	v_long_long_member;
#endif
    float	v_float_member;
    double	v_double_member;
} v_struct2, *v_struct_ptr2;

/**** unions *******/

union t_union {
    char	v_char_member;
    short	v_short_member;
    int		v_int_member;
    long	v_long_member;
#ifndef NO_LONG_LONG
    long long	v_long_long_member;
#endif
    float	v_float_member;
    double	v_double_member;
} v_union, *v_union_ptr;

union {
    char	v_char_member;
    short	v_short_member;
    int		v_int_member;
    long	v_long_member;
#ifndef NO_LONG_LONG
    long long	v_long_long_member;
#endif
    float	v_float_member;
    double	v_double_member;
} v_union2, *v_union_ptr2;

/*** Functions returning type ********/

char		v_char_func () { return(0); }
signed char	v_signed_char_func () { return (0); }
unsigned char	v_unsigned_char_func () { return (0); }

short		v_short_func () { return (0); }
signed short	v_signed_short_func () { return (0); }
unsigned short	v_unsigned_short_func () { return (0); }

int		v_int_func () { return (0); }
signed int	v_signed_int_func () { return (0); }
unsigned int	v_unsigned_int_func () { return (0); }

long		v_long_func () { return (0); }
signed long	v_signed_long_func () { return (0); }
unsigned long	v_unsigned_long_func () { return (0); }

#ifndef NO_LONG_LONG
long long		v_long_long_func () { return (0); }
signed long long	v_signed_long_long_func () { return (0); }
unsigned long long	v_unsigned_long_long_func () { return (0); }
#endif

float		v_float_func () { return (0.0); }
double		v_double_func () { return (0.0); }

/**** Some misc more complicated things *******/

struct link {
	struct link *next;
#ifdef __STDC__
	struct link *(*linkfunc) (struct link *self, int flags);
#else
	struct link *(*linkfunc) ();
#endif
	struct t_struct stuff[1][2][3];
} *s_link;

union tu_link {
	struct link *next;
#ifdef __STDC__
	struct link *(*linkfunc) (struct link *self, int flags);
#else
	struct link *(*linkfunc) ();
#endif
	struct t_struct stuff[1][2][3];
} u_link;

struct outer_struct {
	int outer_int;
	struct inner_struct {
		int inner_int;
		long inner_long;
	}inner_struct_instance;
	union inner_union {
		int inner_union_int;
		long inner_union_long;
	}inner_union_instance;
	long outer_long;
} nested_su;

/**** Enumerations *******/

enum colors {red, green, blue} color;
enum cars {chevy, ford, porsche} clunker;

/***********/

int main ()
{
  /* Some linkers (e.g. on AIX) remove unreferenced variables,
     so make sure to reference them. */
  v_char = 0;
  v_signed_char = 1;
  v_unsigned_char = 2;

  v_short = 3;
  v_signed_short = 4;
  v_unsigned_short = 5;    

  v_int = 6;
  v_signed_int = 7;
  v_unsigned_int = 8;    

  v_long = 9;
  v_signed_long = 10;
  v_unsigned_long = 11;    

#ifndef NO_LONG_LONG
  v_long_long = 12;
  v_signed_long_long = 13;
  v_unsigned_long_long = 14;
#endif

  v_float = 100.0;
  v_double = 200.0;


  v_char_array[0] = v_char;
  v_signed_char_array[0] = v_signed_char;
  v_unsigned_char_array[0] = v_unsigned_char;

  v_short_array[0] = v_short;
  v_signed_short_array[0] = v_signed_short;
  v_unsigned_short_array[0] = v_unsigned_short;

  v_int_array[0] = v_int;
  v_signed_int_array[0] = v_signed_int;
  v_unsigned_int_array[0] = v_unsigned_int;

  v_long_array[0] = v_long;
  v_signed_long_array[0] = v_signed_long;
  v_unsigned_long_array[0] = v_unsigned_long;

#ifndef NO_LONG_LONG
  v_long_long_array[0] = v_long_long;
  v_signed_long_long_array[0] = v_signed_long_long;
  v_unsigned_long_long_array[0] = v_unsigned_long_long;
#endif

  v_float_array[0] = v_float;
  v_double_array[0] = v_double;

  v_char_pointer = &v_char;
  v_signed_char_pointer = &v_signed_char;
  v_unsigned_char_pointer = &v_unsigned_char;

  v_short_pointer = &v_short;
  v_signed_short_pointer = &v_signed_short;
  v_unsigned_short_pointer = &v_unsigned_short;

  v_int_pointer = &v_int;
  v_signed_int_pointer = &v_signed_int;
  v_unsigned_int_pointer = &v_unsigned_int;

  v_long_pointer = &v_long;
  v_signed_long_pointer = &v_signed_long;
  v_unsigned_long_pointer = &v_unsigned_long;

#ifndef NO_LONG_LONG
  v_long_long_pointer = &v_long_long;
  v_signed_long_long_pointer = &v_signed_long_long;
  v_unsigned_long_long_pointer = &v_unsigned_long_long;
#endif

  v_float_pointer = &v_float;
  v_double_pointer = &v_double;

  color = red;
  clunker = porsche;

  u_link.next = s_link;

  v_union2.v_short_member = v_union.v_short_member;

  v_struct1.v_char_member = 0;
  v_struct2.v_char_member = 0;

  nested_su.outer_int = 0;
  return 0;
}
