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.t10 / gdbme.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-05-12  |  5.3 KB  |  248 lines

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