summaryrefslogtreecommitdiff
path: root/include/llvm/Assembly
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2001-11-07 05:31:53 +0000
committerChris Lattner <sabre@nondot.org>2001-11-07 05:31:53 +0000
commit5818a7162df4548e9d163ad33b5f1a7c0fe8d3e6 (patch)
tree6ffef3afd23fb021cf23ad6c7d562d2ef45f5b49 /include/llvm/Assembly
parent461f02fc1914d4382d6df52061220443d6b9259b (diff)
downloadllvm-5818a7162df4548e9d163ad33b5f1a7c0fe8d3e6.tar.gz
llvm-5818a7162df4548e9d163ad33b5f1a7c0fe8d3e6.tar.bz2
llvm-5818a7162df4548e9d163ad33b5f1a7c0fe8d3e6.tar.xz
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
Diffstat (limited to 'include/llvm/Assembly')
-rw-r--r--include/llvm/Assembly/CachedWriter.h40
1 files changed, 36 insertions, 4 deletions
diff --git a/include/llvm/Assembly/CachedWriter.h b/include/llvm/Assembly/CachedWriter.h
index ab6756abcb..7996982de4 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<class X>
- 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<class X>
+inline CachedWriter &operator<<(CachedWriter &CW, const X &v) {
+ CW.Out << v;
+ return CW;
+}
+
#endif