74b5f308b015fc3356d99b8ddc32dccc955c36af
[external/binutils.git] / gdb / testsuite / gdb.python / py-type.c
1 /* This testcase is part of GDB, the GNU debugger.
2
3    Copyright 2009-2016 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 struct s
19 {
20   int a;
21   int b;
22 };
23
24 struct SS
25 {
26   union { int x; char y; };
27   union { int a; char b; };
28 };
29
30 typedef struct s TS;
31 TS ts;
32
33 #ifdef __cplusplus
34 struct C
35 {
36   int c;
37   int d;
38
39   int
40   a_method (int x, char y)
41     {
42       return x + y;
43     }
44
45   int
46   a_const_method (int x, char y) const
47     {
48       return x + y;
49     }
50
51   static int
52   a_static_method (int x, char y)
53     {
54       return x + y;
55     }
56 };
57
58 struct D : C
59 {
60   int e;
61   int f;
62 };
63
64 template<typename T, int I, int C::*MP>
65 struct Temargs
66 {
67 };
68
69 Temargs<D, 23, &C::c> temvar;
70
71 #endif
72
73 enum E
74 { v1, v2, v3
75 };
76
77 struct s vec_data_1 = {1, 1};
78 struct s vec_data_2 = {1, 2};
79
80 static int
81 a_function (int x, char y)
82 {
83   return x + y;
84 }
85
86 int
87 main ()
88 {
89   int ar[2] = {1,2};
90   struct s st;
91   struct SS ss;
92 #ifdef __cplusplus
93   C c;
94   c.c = 1;
95   c.d = 2;
96   D d;
97   d.e = 3;
98   d.f = 4;
99
100   c.a_method (0, 1);
101   c.a_const_method (0, 1);
102   C::a_static_method (0, 1);
103 #endif
104   enum E e;
105
106   st.a = 3;
107   st.b = 5;
108
109   e = v2;
110
111   ss.x = 100;
112
113   a_function (0, 1);
114
115   return 0;      /* break to inspect struct and array.  */
116 }