Skip to content

Commit cf1c3d2

Browse files
jesse99brson
authored andcommitted
polymorphic indexed_list fixes:
1) indexed_list no longer has virtual methods. It's not actually subclassed and there is very rarely good reason to subclass collection classes. 2) Added a virtual dtor to indexed_list_object which is intended to be subclassed. This allows derived dtors to be called if the object is deleted with a indexed_list_object*.
1 parent fc740a7 commit cf1c3d2

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/rt/util/indexed_list.h

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
class indexed_list_object {
1919
public:
20+
virtual ~indexed_list_object() {}
2021
int32_t list_index;
2122
};
2223

@@ -39,22 +40,22 @@ class indexed_list_element : public indexed_list_object {
3940
template<typename T> class indexed_list {
4041
array_list<T*> list;
4142
public:
42-
virtual int32_t append(T *value);
43-
virtual bool pop(T **value);
43+
int32_t append(T *value);
44+
bool pop(T **value);
4445
/**
4546
* Same as pop(), except that it returns NULL if the list is empty.
4647
*/
47-
virtual T* pop_value();
48-
virtual size_t length() const {
48+
T* pop_value();
49+
size_t length() const {
4950
return list.size();
5051
}
51-
virtual bool is_empty() const {
52+
bool is_empty() const {
5253
return list.is_empty();
5354
}
54-
virtual int32_t remove(T* value);
55-
virtual T * operator[](int32_t index);
56-
virtual const T * operator[](int32_t index) const;
57-
virtual ~indexed_list() {}
55+
int32_t remove(T* value);
56+
T * operator[](int32_t index);
57+
const T * operator[](int32_t index) const;
58+
~indexed_list() {}
5859
};
5960

6061
template<typename T> int32_t

0 commit comments

Comments
 (0)