constify some methods and variables in ImmutableList.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57894 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Ted Kremenek 2008-10-21 05:59:33 +00:00
parent 7fb501c9cd
commit e06e91122f

View File

@ -26,9 +26,9 @@ template <typename T> class ImmutableListFactory;
template <typename T>
class ImmutableListImpl : public FoldingSetNode {
T Head;
ImmutableListImpl* Tail;
const ImmutableListImpl* Tail;
ImmutableListImpl(const T& head, ImmutableListImpl* tail = 0)
ImmutableListImpl(const T& head, const ImmutableListImpl* tail = 0)
: Head(head), Tail(tail) {}
friend class ImmutableListFactory<T>;
@ -39,10 +39,10 @@ class ImmutableListImpl : public FoldingSetNode {
public:
const T& getHead() const { return Head; }
ImmutableListImpl* getTail() const { return Tail; }
const ImmutableListImpl* getTail() const { return Tail; }
static inline void Profile(FoldingSetNodeID& ID, const T& H,
ImmutableListImpl* L){
const ImmutableListImpl* L){
ID.AddPointer(L);
ID.Add(H);
}
@ -67,20 +67,20 @@ public:
typedef ImmutableListFactory<T> Factory;
private:
ImmutableListImpl<T>* X;
const ImmutableListImpl<T>* X;
public:
// This constructor should normally only be called by ImmutableListFactory<T>.
// There may be cases, however, when one needs to extract the internal pointer
// and reconstruct a list object from that pointer.
ImmutableList(ImmutableListImpl<T>* x = 0) : X(x) {}
ImmutableList(const ImmutableListImpl<T>* x = 0) : X(x) {}
ImmutableListImpl<T>* getInternalPointer() const {
const ImmutableListImpl<T>* getInternalPointer() const {
return X;
}
class iterator {
ImmutableListImpl<T>* L;
const ImmutableListImpl<T>* L;
public:
iterator() : L(0) {}
iterator(ImmutableList l) : L(l.getInternalPointer()) {}
@ -157,7 +157,7 @@ public:
FoldingSetNodeID ID;
void* InsertPos;
ListTy* TailImpl = Tail.getInternalPointer();
const ListTy* TailImpl = Tail.getInternalPointer();
ListTy::Profile(ID, Head, TailImpl);
ListTy* L = Cache.FindNodeOrInsertPos(ID, InsertPos);