diff options
Diffstat (limited to 'include/llvm/Metadata.h')
-rw-r--r-- | include/llvm/Metadata.h | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/include/llvm/Metadata.h b/include/llvm/Metadata.h index 7526919156..95100c2749 100644 --- a/include/llvm/Metadata.h +++ b/include/llvm/Metadata.h @@ -27,6 +27,7 @@ namespace llvm { class Constant; +class LLVMContext; //===----------------------------------------------------------------------===// // MetadataBase - A base class for MDNode, MDString and NamedMDNode. @@ -64,13 +65,14 @@ public: class MDString : public MetadataBase { MDString(const MDString &); // DO NOT IMPLEMENT StringRef Str; - friend class LLVMContextImpl; protected: explicit MDString(const char *begin, unsigned l) : MetadataBase(Type::MetadataTy, Value::MDStringVal), Str(begin, l) {} public: + static MDString *get(LLVMContext &Context, const StringRef &Str); + StringRef getString() const { return Str; } unsigned length() const { return Str.size(); } @@ -97,14 +99,15 @@ public: class MDNode : public MetadataBase, public FoldingSetNode { MDNode(const MDNode &); // DO NOT IMPLEMENT - friend class LLVMContextImpl; - SmallVector<WeakVH, 4> Node; typedef SmallVectorImpl<WeakVH>::iterator elem_iterator; protected: explicit MDNode(Value*const* Vals, unsigned NumVals); public: + static MDNode *get(LLVMContext &Context, + Value* const* Vals, unsigned NumVals); + typedef SmallVectorImpl<WeakVH>::const_iterator const_elem_iterator; Value *getElement(unsigned i) const { |