home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / gnu / gdb-4.9 / gdb / testsuite / gdb.t03 / gdbme.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-12  |  5.4 KB  |  267 lines

  1. /*
  2.  *    Test file with lots of different types, for testing the
  3.  *    "ptype" command.
  4.  */
  5.  
  6. /*
  7.  *    First the basic C types.
  8.  */
  9.  
  10. #ifndef __STDC__
  11. #define signed  /**/
  12. #endif
  13.  
  14. char        v_char;
  15. signed char    v_signed_char;
  16. unsigned char    v_unsigned_char;
  17.  
  18. short        v_short;
  19. signed short    v_signed_short;
  20. unsigned short    v_unsigned_short;
  21.  
  22. int        v_int;
  23. signed int    v_signed_int;
  24. unsigned int    v_unsigned_int;
  25.  
  26. long        v_long;
  27. signed long    v_signed_long;
  28. unsigned long    v_unsigned_long;
  29.  
  30. float        v_float;
  31. double        v_double;
  32.  
  33. /*
  34.  *    Now some derived types, which are arrays, functions-returning,
  35.  *    pointers, structures, unions, and enumerations.
  36.  */
  37.  
  38. /**** arrays *******/
  39.  
  40. char        v_char_array[2];
  41. signed char    v_signed_char_array[2];
  42. unsigned char    v_unsigned_char_array[2];
  43.  
  44. short        v_short_array[2];
  45. signed short    v_signed_short_array[2];
  46. unsigned short    v_unsigned_short_array[2];
  47.  
  48. int        v_int_array[2];
  49. signed int    v_signed_int_array[2];
  50. unsigned int    v_unsigned_int_array[2];
  51.  
  52. long        v_long_array[2];
  53. signed long    v_signed_long_array[2];
  54. unsigned long    v_unsigned_long_array[2];
  55.  
  56. float        v_float_array[2];
  57. double        v_double_array[2];
  58.  
  59. /**** pointers *******/
  60.  
  61. char        *v_char_pointer;
  62. signed char    *v_signed_char_pointer;
  63. unsigned char    *v_unsigned_char_pointer;
  64.  
  65. short        *v_short_pointer;
  66. signed short    *v_signed_short_pointer;
  67. unsigned short    *v_unsigned_short_pointer;
  68.  
  69. int        *v_int_pointer;
  70. signed int    *v_signed_int_pointer;
  71. unsigned int    *v_unsigned_int_pointer;
  72.  
  73. long        *v_long_pointer;
  74. signed long    *v_signed_long_pointer;
  75. unsigned long    *v_unsigned_long_pointer;
  76.  
  77. float        *v_float_pointer;
  78. double        *v_double_pointer;
  79.  
  80. /**** structs *******/
  81.  
  82. struct t_struct {
  83.     char    v_char_member;
  84.     short    v_short_member;
  85.     int        v_int_member;
  86.     long    v_long_member;
  87.     float    v_float_member;
  88.     double    v_double_member;
  89. } v_struct1;
  90.  
  91. struct t_struct *v_t_struct_p;
  92.  
  93. struct {
  94.     char    v_char_member;
  95.     short    v_short_member;
  96.     int        v_int_member;
  97.     long    v_long_member;
  98.     float    v_float_member;
  99.     double    v_double_member;
  100. } v_struct2;
  101.  
  102. /**** unions *******/
  103.  
  104. union t_union {
  105.     char    v_char_member;
  106.     short    v_short_member;
  107.     int        v_int_member;
  108.     long    v_long_member;
  109.     float    v_float_member;
  110.     double    v_double_member;
  111. } v_union;
  112.  
  113. union {
  114.     char    v_char_member;
  115.     short    v_short_member;
  116.     int        v_int_member;
  117.     long    v_long_member;
  118.     float    v_float_member;
  119.     double    v_double_member;
  120. } v_union2;
  121.  
  122. /*** Functions returning type ********/
  123.  
  124. char        v_char_func () { return(0); }
  125. signed char    v_signed_char_func () { return (0); }
  126. unsigned char    v_unsigned_char_func () { return (0); }
  127.  
  128. short        v_short_func () { return (0); }
  129. signed short    v_signed_short_func () { return (0); }
  130. unsigned short    v_unsigned_short_func () { return (0); }
  131.  
  132. int        v_int_func () { return (0); }
  133. signed int    v_signed_int_func () { return (0); }
  134. unsigned int    v_unsigned_int_func () { return (0); }
  135.  
  136. long        v_long_func () { return (0); }
  137. signed long    v_signed_long_func () { return (0); }
  138. unsigned long    v_unsigned_long_func () { return (0); }
  139.  
  140. float        v_float_func () { return (0.0); }
  141. double        v_double_func () { return (0.0); }
  142.  
  143. /**** Some misc more complicated things *******/
  144.  
  145. struct link {
  146.     struct link *next;
  147. #ifdef __STDC__
  148.     struct link *(*linkfunc) (struct link *this, int flags);
  149. #else
  150.     struct link *(*linkfunc) ();
  151. #endif
  152.     struct t_struct stuff[1][2][3];
  153. } *s_link;
  154.  
  155. union tu_link {
  156.     struct link *next;
  157. #ifdef __STDC__
  158.     struct link *(*linkfunc) (struct link *this, int flags);
  159. #else
  160.     struct link *(*linkfunc) ();
  161. #endif
  162.     struct t_struct stuff[1][2][3];
  163. } u_link;
  164.  
  165. struct outer_struct {
  166.     int outer_int;
  167.     struct inner_struct {
  168.         int inner_int;
  169.         long inner_long;
  170.     }inner_struct_instance;
  171.     union inner_union {
  172.         int inner_union_int;
  173.         long inner_union_long;
  174.     }inner_union_instance;
  175.     long outer_long;
  176. } nested_su;
  177.  
  178. /**** Enumerations *******/
  179.  
  180. enum {red, green, blue} primary;
  181. enum colors {yellow, purple, pink} nonprimary;
  182.  
  183. enum {chevy, ford} clunker;
  184. enum cars {bmw, porsche} sportscar;
  185.  
  186. typedef enum {FALSE, TRUE} boolean;
  187. typedef enum bvals {false, true} boolean2;
  188.  
  189. enum misordered {two = 2, one = 1, zero = 0, three = 3};
  190.  
  191. /***********/
  192.  
  193. main ()
  194. {
  195.  
  196.   /* Some of the tests in ptype.exp require invoking malloc, so make
  197.      sure it is linked in to this program.  */
  198.   v_char_pointer = (char *) malloc (1);
  199.  
  200.   /* Some linkers (e.g. on AIX) remove unreferenced variables,
  201.      so make sure to reference them. */
  202.   primary = blue;
  203.   nonprimary = pink;
  204.   sportscar = porsche;
  205.   clunker = ford;
  206.  
  207.   v_char = 0;
  208.   v_signed_char = 0;
  209.   v_unsigned_char = 0;
  210.  
  211.   v_short = 0;
  212.   v_signed_short = 0;
  213.   v_unsigned_short = 0;
  214.  
  215.   v_int = 0;
  216.   v_signed_int = 0;
  217.   v_unsigned_int = 0;
  218.  
  219.   v_long = 0;
  220.   v_signed_long = 0;
  221.   v_unsigned_long = 0;
  222.  
  223.   v_float = 0;
  224.   v_double = 0;
  225.  
  226.   v_char_array[0] = 0;
  227.   v_signed_char_array[0] = 0;
  228.   v_unsigned_char_array[0] = 0;
  229.  
  230.   v_short_array[0] = 0;
  231.   v_signed_short_array[0] = 0;
  232.   v_unsigned_short_array[0] = 0;
  233.  
  234.   v_int_array[0] = 0;
  235.   v_signed_int_array[0] = 0;
  236.   v_unsigned_int_array[0] = 0;
  237.  
  238.   v_long_array[0] = 0;
  239.   v_signed_long_array[0] = 0;
  240.   v_unsigned_long_array[0] = 0;
  241.  
  242.   v_float_array[0] = 0;
  243.   v_double_array[0] = 0;
  244.  
  245.   v_char_pointer = 0;
  246.   v_signed_char_pointer = 0;
  247.   v_unsigned_char_pointer = 0;
  248.  
  249.   v_short_pointer = 0;
  250.   v_signed_short_pointer = 0;
  251.   v_unsigned_short_pointer = 0;
  252.  
  253.   v_int_pointer = 0;
  254.   v_signed_int_pointer = 0;
  255.   v_unsigned_int_pointer = 0;
  256.  
  257.   v_long_pointer = 0;
  258.   v_signed_long_pointer = 0;
  259.   v_unsigned_long_pointer = 0;
  260.  
  261.   v_float_pointer = 0;
  262.   v_double_pointer = 0;
  263.  
  264.   nested_su.outer_int = 0;
  265.   v_t_struct_p = 0;
  266. }
  267.