From 5818a7162df4548e9d163ad33b5f1a7c0fe8d3e6 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Wed, 7 Nov 2001 05:31:53 +0000 Subject: [PATCH] Okay, so this is a huge hack. Fixme later git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1171 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Assembly/CachedWriter.h | 40 +++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 4 deletions(-) diff --git a/include/llvm/Assembly/CachedWriter.h b/include/llvm/Assembly/CachedWriter.h index ab6756abcb0..7996982de49 100644 --- a/include/llvm/Assembly/CachedWriter.h +++ b/include/llvm/Assembly/CachedWriter.h @@ -18,6 +18,7 @@ class SlotCalculator; class CachedWriter { AssemblyWriter *AW; SlotCalculator *SC; +public: ostream &Out; public: CachedWriter(ostream &O = cout) : AW(0), SC(0), Out(O) { } @@ -31,11 +32,42 @@ public: CachedWriter &operator<<(const Value *V); - template - inline CachedWriter &operator<<(X &v) { - Out << v; - return *this; + inline CachedWriter &operator<<(Value *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const Module *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const GlobalVariable *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const Method *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const MethodArgument *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const BasicBlock *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const Instruction *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const ConstPoolVal *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const Type *X) { + return *this << (const Value*)X; + } + inline CachedWriter &operator<<(const PointerType *X) { + return *this << (const Value*)X; } }; +template +inline CachedWriter &operator<<(CachedWriter &CW, const X &v) { + CW.Out << v; + return CW; +} + #endif