* gdb.cp/mb-inline.exp: Do "info break" after setting multi-location
[deliverable/binutils-gdb.git] / gdb / testsuite / gdb.cp / converts.cc
CommitLineData
5b4f6e25
KS
1class A
2{
3public:
4 A() : member_ (0) {};
5 int member_;
6};
7062b0a0
SW
7class B : public A {};
8
9typedef A TA1;
10typedef A TA2;
11typedef TA2 TA3;
12
5b4f6e25
KS
13enum my_enum {MY_A, MY_B, MY_C, MY_D};
14
7062b0a0
SW
15int foo0_1 (TA1) { return 1; }
16int foo0_2 (TA3) { return 2; }
17int foo0_3 (A***) { return 3; }
18
19int foo1_1 (char *) {return 11;}
20int foo1_2 (char[]) {return 12;}
21int foo1_3 (int*) {return 13;}
22int foo1_4 (A*) {return 14;}
23int foo1_5 (void*) {return 15;}
026ffab7
SW
24int foo1_6 (void**) {return 16;}
25int foo1_7 (bool) {return 17;}
26int foo1_8 (long) {return 18;}
7062b0a0
SW
27
28int foo2_1 (char** ) {return 21;}
29int foo2_2 (char[][1]) {return 22;}
30int foo2_3 (char *[]) {return 23;}
31int foo2_4 (int *[]) {return 24;}
32
6501c2fc
KS
33int foo3_1 (int a, const char **b) { return 31; }
34int foo3_2 (int a, int b) { return 32; }
35int foo3_2 (int a, const char **b) { return 320; }
36
a451cb65
KS
37int foo1_type_check (char *a) { return 1000; }
38int foo2_type_check (char *a, char *b) { return 1001; }
39int foo3_type_check (char *a, char *b, char *c) { return 1002; }
40
7062b0a0
SW
41int main()
42{
43
44 TA2 ta; // typedef to..
45 foo0_1 (ta); // ..another typedef
46 foo0_2 (ta); // ..typedef of a typedef
47
48 B*** bppp; // Pointer-to-pointer-to-pointer-to-derived..
49//foo0_3(bppp); // Pointer-to-pointer-to-pointer base.
50 foo0_3((A***)bppp); // to ensure that the function is emitted.
51
52 char *a; // pointer to..
53 B *bp;
54 foo1_1 (a); // ..pointer
55 foo1_2 (a); // ..array
56 foo1_3 ((int*)a); // ..pointer of wrong type
57 foo1_3 ((int*)bp); // ..pointer of wrong type
58 foo1_4 (bp); // ..ancestor pointer
59 foo1_5 (bp); // ..void pointer
026ffab7
SW
60 foo1_6 ((void**)bp); // ..void pointer pointer
61 foo1_7 (bp); // ..boolean
62 foo1_8 ((long)bp); // ..long int
7062b0a0
SW
63
64 char **b; // pointer pointer to..
65 char ba[1][1];
66 foo1_5 (b); // ..void pointer
67 foo2_1 (b); // ..pointer pointer
68 foo2_2 (ba); // ..array of arrays
69 foo2_3 (b); // ..array of pointers
70 foo2_4 ((int**)b); // ..array of wrong pointers
6501c2fc 71
5b4f6e25
KS
72 // X to boolean conversions allowed by the standard
73 int integer = 0;
74 long long_int = 1;
75 float fp = 1.0;
76 double dp = 1.0;
77 foo1_7 (integer); // integer to boolean
78 foo1_7 (long_int); // long to boolean
79 foo1_7 (*a); // char to boolean
80 foo1_7 (MY_A); // unscoped enum to boolean
81 foo1_7 (&foo1_7); // pointer to boolean
82 foo1_7 (&A::member_); // pointer to member to boolean
83 foo1_7 (a); // pointer to boolean
84 foo1_7 (fp); // float to boolean
85 foo1_7 (dp); // double to boolean
86
6501c2fc
KS
87 foo3_1 (0, 0);
88 foo3_2 (0, static_cast<char const**> (0));
89 foo3_2 (0, 0);
90
a451cb65
KS
91 foo1_type_check (a);
92 foo2_type_check (a, a);
93 foo3_type_check (a, a, a);
94
7062b0a0
SW
95 return 0; // end of main
96}
This page took 0.287874 seconds and 4 git commands to generate.