| [0dd3a2f] | 1 | // | 
|---|
|  | 2 | // Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo | 
|---|
|  | 3 | // | 
|---|
|  | 4 | // The contents of this file are covered under the licence agreement in the | 
|---|
|  | 5 | // file "LICENCE" distributed with Cforall. | 
|---|
|  | 6 | // | 
|---|
|  | 7 | // Constant.cc -- | 
|---|
|  | 8 | // | 
|---|
|  | 9 | // Author           : Richard C. Bilson | 
|---|
|  | 10 | // Created On       : Mon May 18 07:44:20 2015 | 
|---|
| [2c37f34] | 11 | // Last Modified By : Andrew Beach | 
|---|
|  | 12 | // Last Modified On : Thr Jun 22 10:11:00 2017 | 
|---|
|  | 13 | // Update Count     : 28 | 
|---|
| [0dd3a2f] | 14 | // | 
|---|
|  | 15 |  | 
|---|
| [51b73452] | 16 | #include <iostream> | 
|---|
|  | 17 | #include <list> | 
|---|
| [9d7b3ea] | 18 | #include <string> | 
|---|
| [51b73452] | 19 |  | 
|---|
|  | 20 | #include "Constant.h" | 
|---|
|  | 21 | #include "Type.h" | 
|---|
|  | 22 |  | 
|---|
| [d56e5bc] | 23 | Constant::Constant( Type * type, std::string rep, unsigned long long val ) : type( type ), rep( rep ), val( val ) {} | 
|---|
|  | 24 | Constant::Constant( Type * type, std::string rep, double val ) : type( type ), rep( rep ), val( val ) {} | 
|---|
| [51b73452] | 25 |  | 
|---|
| [d56e5bc] | 26 | Constant::Constant( const Constant &other ) : rep( other.rep ), val( other.val ) { | 
|---|
| [7f5566b] | 27 | type = other.type->clone(); | 
|---|
|  | 28 | } | 
|---|
|  | 29 |  | 
|---|
|  | 30 | Constant::~Constant() { delete type; } | 
|---|
| [51b73452] | 31 |  | 
|---|
| [2c37f34] | 32 | Constant Constant::from_bool( bool b ) { | 
|---|
|  | 33 | return Constant( new BasicType( Type::Qualifiers(), BasicType::Bool ), b ? "1" : "0" , (unsigned long long int)b ); | 
|---|
|  | 34 | } | 
|---|
|  | 35 |  | 
|---|
| [cb4c607] | 36 | Constant Constant::from_int( int i ) { | 
|---|
| [d56e5bc] | 37 | return Constant( new BasicType( Type::Qualifiers(), BasicType::SignedInt ), std::to_string( i ), (unsigned long long int)i ); | 
|---|
| [9d7b3ea] | 38 | } | 
|---|
|  | 39 |  | 
|---|
| [cb4c607] | 40 | Constant Constant::from_ulong( unsigned long i ) { | 
|---|
| [d56e5bc] | 41 | return Constant( new BasicType( Type::Qualifiers(), BasicType::LongUnsignedInt ), std::to_string( i ), (unsigned long long int)i ); | 
|---|
| [9d7b3ea] | 42 | } | 
|---|
|  | 43 |  | 
|---|
| [cb4c607] | 44 | Constant Constant::from_double( double d ) { | 
|---|
| [d56e5bc] | 45 | return Constant( new BasicType( Type::Qualifiers(), BasicType::Double ), std::to_string( d ), d ); | 
|---|
| [9d7b3ea] | 46 | } | 
|---|
|  | 47 |  | 
|---|
| [51b73452] | 48 | void Constant::print( std::ostream &os ) const { | 
|---|
| [d56e5bc] | 49 | os << "(" << rep << " " << val.ival; | 
|---|
| [0dd3a2f] | 50 | if ( type ) { | 
|---|
| [ea9b9d3] | 51 | os << ": "; | 
|---|
| [0dd3a2f] | 52 | type->print( os ); | 
|---|
|  | 53 | } // if | 
|---|
| [ea9b9d3] | 54 | os << ")"; | 
|---|
| [51b73452] | 55 | } | 
|---|
|  | 56 |  | 
|---|
| [0dd3a2f] | 57 | // Local Variables: // | 
|---|
|  | 58 | // tab-width: 4 // | 
|---|
|  | 59 | // mode: c++ // | 
|---|
|  | 60 | // compile-command: "make install" // | 
|---|
|  | 61 | // End: // | 
|---|