diff options
author | David Robillard <d@drobilla.net> | 2009-03-07 04:55:14 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-03-07 04:55:14 +0000 |
commit | 3322999a97f4170e1476fc4bff431f5ca8909333 (patch) | |
tree | 7031762ceb0ee22ecec62f67e00fe009ae7152a9 /write.cpp | |
parent | b754068a1e11cf480469836c6a04c6614f4d63c5 (diff) | |
download | resp-3322999a97f4170e1476fc4bff431f5ca8909333.tar.gz resp-3322999a97f4170e1476fc4bff431f5ca8909333.tar.bz2 resp-3322999a97f4170e1476fc4bff431f5ca8909333.zip |
Consistent external forms.
git-svn-id: http://svn.drobilla.net/resp/tuplr@76 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'write.cpp')
-rw-r--r-- | write.cpp | 21 |
1 files changed, 12 insertions, 9 deletions
@@ -20,14 +20,17 @@ ostream& operator<<(ostream& out, const AST* ast) { -#define TRY_WRITE_LITERAL(T) \ - const ASTLiteral<T>* lit ## T = dynamic_cast<const ASTLiteral<T>*>(ast); \ - if (lit ## T) \ - return out << (lit ## T)->val; - - TRY_WRITE_LITERAL(int32_t); - TRY_WRITE_LITERAL(float); - TRY_WRITE_LITERAL(bool); + const ASTLiteral<float>* flit = dynamic_cast<const ASTLiteral<float>*>(ast); + if (flit) + return out << showpoint << flit->val; + + const ASTLiteral<int32_t>* ilit = dynamic_cast<const ASTLiteral<int32_t>*>(ast); + if (ilit) + return out << ilit->val; + + const ASTLiteral<bool>* blit = dynamic_cast<const ASTLiteral<bool>*>(ast); + if (blit) + return out << (blit->val ? "#t" : "#f"); const ASTSymbol* sym = dynamic_cast<const ASTSymbol*>(ast); if (sym) @@ -40,7 +43,7 @@ operator<<(ostream& out, const AST* ast) case AType::PRIM: return out << type->at(0); case AType::EXPR: break; // will catch Tuple case below } - } + } const ASTTuple* tup = dynamic_cast<const ASTTuple*>(ast); if (tup) { |