1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
// { dg-do assemble }
// GROUPS passed missed-error
// missed-error file
// From: Neil Wilson <csf004@cch.coventry.ac.uk>
// Date: Tue, 28 Apr 92 13:53:54 WET DST
// Subject: g++ version 2.1 bugs
// Message-ID: <15717.9204281253@cch.coventry.ac.uk>
// enum bool { FALSE = 0, TRUE = 1 };
typedef int T;
class Traversable {
public:
virtual const T item() const = 0;
virtual const bool off() const = 0;
virtual ~Traversable() { }
};
class Chain : public Traversable {
public:
virtual const int count() const = 0;
virtual const bool empty() const = 0;
virtual void forth() const = 0;
virtual const bool isfirst() const = 0;
virtual const bool islast() const = 0;
virtual const int position() const = 0;
virtual const T first() const = 0;
virtual const T last() const = 0;
virtual const T i_th(const int index) const = 0;
virtual void start() const = 0;
virtual void back() const = 0;
virtual void finish() const = 0;
virtual void move(const int index) const = 0;
virtual void go(const int index) const = 0;
virtual void put(const T value) = 0;
virtual void put_i_th(const T value, const int index) = 0;
virtual void swap(const int index) = 0;
virtual void wipe_out() = 0;
};
class List : public Chain {
protected:
int item_count;
int cursor_position;
virtual void go_offleft() const = 0;
virtual void go_offright() const = 0;
virtual void copy(const List& other) = 0;
public:
List() : item_count(0), cursor_position(0) { }
virtual const int count() const;
virtual const bool empty() const;
virtual const bool isfirst() const;
virtual const bool islast() const;
virtual const bool offleft() const;
virtual const bool offright() const;
virtual const bool off() const;
virtual const int position() const;
virtual const T first() const;
virtual const T last() const;
virtual const T i_th(const int index) const;
virtual void start() const;
virtual void forth() const;
virtual void back() const;
virtual void finish() const;
virtual void move(const int index) const;
virtual void go(const int index) const;
friend const bool operator==(const List& left,
const List& right);
friend const bool operator!=(const List& left,
const List& right);
virtual void put_i_th(const T value, const int index);
virtual void swap(const int index);
};
typedef int T;
class Array {
private:
int lower_index;
int upper_index;
T *array;
protected:
virtual void allocate(const int minindex, const int maxindex);
virtual void copy(const Array&other);
public:
Array(const int minindex, const int maxindex);
Array(const Array& other);
virtual const int count() const;
virtual const int lower() const;
virtual const int upper() const;
virtual const T item(const int index) const;
const T Array::operator[](const int index); // { dg-error "" } qualification ignored
virtual const bool valid_index(const int index) const;
virtual const bool empty() const;
friend const bool operator==(const Array& left, const Array& right);
friend const bool operator!=(const Array& left, const Array& right);
virtual void put(const T value, const int index);
virtual void wipe_out();
Array& operator=(const Array& other);
virtual ~Array();
};
class Fixed_List: public List, private Array {
protected:
virtual void go_offleft() const;
virtual void go_offright() const;
virtual void copy(const List& other);
public:
Fixed_List(const List& other);
Fixed_List(const int size): Array(1, size) { }
virtual const bool empty() const;
virtual const int count() const;
virtual const T item() const;
virtual const T i_th(const int index) const;
virtual void move(const int index) const;
virtual void put(const T value);
virtual void put_i_th(const T value, const int index);
virtual void wipe_out() { }
Fixed_List& operator=(const List& other);
};
void Fixed_List::go_offleft() const
{
cursor_position = 0;// { dg-error "" }
}
|