1e01aa904Sopenharmony_cistruct base
2e01aa904Sopenharmony_ci{
3e01aa904Sopenharmony_ci  enum mode : short { in, out, top, bottom };
4e01aa904Sopenharmony_ci  enum state { pass, fail, unknown };
5e01aa904Sopenharmony_ci  typedef long int_type;
6e01aa904Sopenharmony_ci};
7e01aa904Sopenharmony_ci
8e01aa904Sopenharmony_cistruct A : public base
9e01aa904Sopenharmony_ci{
10e01aa904Sopenharmony_ci  int_type	_M_i;
11e01aa904Sopenharmony_ci  int_type	_M_n;
12e01aa904Sopenharmony_ci  mode		_M_type;
13e01aa904Sopenharmony_ci};
14e01aa904Sopenharmony_ci
15e01aa904Sopenharmony_cistruct B : public base
16e01aa904Sopenharmony_ci{
17e01aa904Sopenharmony_ci  mode		_M_type;
18e01aa904Sopenharmony_ci  state		_M_state;
19e01aa904Sopenharmony_ci};
20e01aa904Sopenharmony_ci
21e01aa904Sopenharmony_cistruct C1 : public base
22e01aa904Sopenharmony_ci{
23e01aa904Sopenharmony_ci  mode		_M_type;
24e01aa904Sopenharmony_ci};
25e01aa904Sopenharmony_ci
26e01aa904Sopenharmony_cistruct C2 : virtual public base
27e01aa904Sopenharmony_ci{
28e01aa904Sopenharmony_ci  mode		_M_type;
29e01aa904Sopenharmony_ci};
30e01aa904Sopenharmony_ci
31e01aa904Sopenharmony_cistruct C3 : public base
32e01aa904Sopenharmony_ci{
33e01aa904Sopenharmony_ci  mode		_M_type;
34e01aa904Sopenharmony_ci
35e01aa904Sopenharmony_ci  virtual ~C3() { };
36e01aa904Sopenharmony_ci};
37e01aa904Sopenharmony_ci
38e01aa904Sopenharmony_cistruct C4 : public base
39e01aa904Sopenharmony_ci{
40e01aa904Sopenharmony_ci  mode		_M_type;
41e01aa904Sopenharmony_ci
42e01aa904Sopenharmony_ci  virtual void foo() = 0;
43e01aa904Sopenharmony_ci};
44e01aa904Sopenharmony_ci
45e01aa904Sopenharmony_cistruct D1 : public A
46e01aa904Sopenharmony_ci{
47e01aa904Sopenharmony_ci  int_type	_M_index;
48e01aa904Sopenharmony_ci  int_type*	_M_array;
49e01aa904Sopenharmony_ci  bool		_M_ok;
50e01aa904Sopenharmony_ci};
51e01aa904Sopenharmony_ci
52e01aa904Sopenharmony_cistruct D2 : public C1
53e01aa904Sopenharmony_ci{
54e01aa904Sopenharmony_ci  state		_M_state;
55e01aa904Sopenharmony_ci  int_type	_M_index;
56e01aa904Sopenharmony_ci  int_type*	_M_array;
57e01aa904Sopenharmony_ci  bool		_M_ok;
58e01aa904Sopenharmony_ci};
59e01aa904Sopenharmony_ci
60e01aa904Sopenharmony_cistruct D3 : public C1
61e01aa904Sopenharmony_ci{
62e01aa904Sopenharmony_ci  int_type	_M_index;
63e01aa904Sopenharmony_ci  int_type*	_M_array;
64e01aa904Sopenharmony_ci};
65e01aa904Sopenharmony_ci
66e01aa904Sopenharmony_cistruct D2v : virtual public C2
67e01aa904Sopenharmony_ci{
68e01aa904Sopenharmony_ci  state		_M_state;
69e01aa904Sopenharmony_ci  int_type	_M_index;
70e01aa904Sopenharmony_ci  int_type*	_M_array;
71e01aa904Sopenharmony_ci  bool		_M_ok;
72e01aa904Sopenharmony_ci};
73e01aa904Sopenharmony_ci
74e01aa904Sopenharmony_cistruct D3v : virtual public C3
75e01aa904Sopenharmony_ci{
76e01aa904Sopenharmony_ci  int_type	_M_index;
77e01aa904Sopenharmony_ci  int_type*	_M_array;
78e01aa904Sopenharmony_ci};
79e01aa904Sopenharmony_ci
80e01aa904Sopenharmony_cistruct D4v : public C4
81e01aa904Sopenharmony_ci{
82e01aa904Sopenharmony_ci  int_type	_M_index;
83e01aa904Sopenharmony_ci  int_type*	_M_array;
84e01aa904Sopenharmony_ci
85e01aa904Sopenharmony_ci  void foo() { }
86e01aa904Sopenharmony_ci};
87e01aa904Sopenharmony_ci
88e01aa904Sopenharmony_cistruct D5v1 : virtual public C3
89e01aa904Sopenharmony_ci{
90e01aa904Sopenharmony_ci  int_type	_M_index;
91e01aa904Sopenharmony_ci};
92e01aa904Sopenharmony_ci
93e01aa904Sopenharmony_cistruct D5v2 : virtual public C3
94e01aa904Sopenharmony_ci{
95e01aa904Sopenharmony_ci  int_type	_M_index;
96e01aa904Sopenharmony_ci};
97e01aa904Sopenharmony_ci
98e01aa904Sopenharmony_ci// test
99e01aa904Sopenharmony_cistruct Dd1 : public A, public B
100e01aa904Sopenharmony_ci{ };
101e01aa904Sopenharmony_ci
102e01aa904Sopenharmony_cistruct Dd2 : public A, public D4v
103e01aa904Sopenharmony_ci{ };
104e01aa904Sopenharmony_ci
105e01aa904Sopenharmony_cistruct Dd3 : public D2, public D3
106e01aa904Sopenharmony_ci{ };
107e01aa904Sopenharmony_ci
108e01aa904Sopenharmony_cistruct Dd4 : public D2v, public D3v
109e01aa904Sopenharmony_ci{ };
110e01aa904Sopenharmony_ci
111e01aa904Sopenharmony_cistruct Dd5 : public D5v1, public D5v2
112e01aa904Sopenharmony_ci{ };
113e01aa904Sopenharmony_ci
114e01aa904Sopenharmony_ci
115e01aa904Sopenharmony_ciint main()
116e01aa904Sopenharmony_ci{
117e01aa904Sopenharmony_ci  Dd1 obj1;
118e01aa904Sopenharmony_ci  Dd2 obj2;
119e01aa904Sopenharmony_ci  Dd3 obj3;
120e01aa904Sopenharmony_ci  Dd4 obj4;
121e01aa904Sopenharmony_ci  Dd5 obj5;
122e01aa904Sopenharmony_ci  return 0;
123e01aa904Sopenharmony_ci}
124