Lines Matching defs:Pointer

1 //===--- Pointer.h - Types for the constexpr VM -----------------*- C++ -*-===//
31 class Pointer;
39 class Pointer {
45 Pointer() {}
46 Pointer(Block *B);
47 Pointer(const Pointer &P);
48 Pointer(Pointer &&P);
49 ~Pointer();
51 void operator=(const Pointer &P);
52 void operator=(Pointer &&P);
58 Pointer atIndex(unsigned Idx) const {
60 return Pointer(Pointee, RootPtrMark, getDeclDesc()->getSize());
66 return Pointer(Pointee, Base, Base + Off);
70 Pointer atField(unsigned Off) const {
72 return Pointer(Pointee, Field, Field);
76 Pointer narrow() const {
81 // Pointer to an array of base types - enter block.
83 return Pointer(Pointee, 0, Offset == 0 ? Offset : PastEndMark);
85 // Pointer is one past end - magic offset marks that.
87 return Pointer(Pointee, Base, PastEndMark);
96 return Pointer(Pointee, Base, Offset + sizeof(InitMap *));
99 // Pointer is to a field or array element - enter it.
101 return Pointer(Pointee, Offset, Offset);
108 return Pointer(Pointee, NewBase, NewBase);
112 Pointer expand() const {
120 return Pointer(Pointee, Base, Base + getSize() + Adjust);
129 return Pointer(Pointee, RootPtrMark, 0);
136 return Pointer(Pointee, Next, Offset);
151 Pointer getBase() const {
154 return Pointer(Pointee, Base, 0);
158 return Pointer(Pointee, NewBase, NewBase);
161 Pointer getArray() const {
164 return Pointer(Pointee, Base, 0);
167 return Pointer(Pointee, Base, Base);
215 /// Pointer points directly to a block.
298 static bool hasSameBase(const Pointer &A, const Pointer &B);
300 static bool hasSameArray(const Pointer &A, const Pointer &B);
316 Pointer(Block *Pointee, unsigned Base, unsigned Offset);
340 Pointer *Prev = nullptr;
342 Pointer *Next = nullptr;
345 inline llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const Pointer &P) {