00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef COMPASS_SYMBOL_H_
00011 #define COMPASS_SYMBOL_H_
00012
00013 #include <boost/serialization/vector.hpp>
00014 #include <boost/serialization/map.hpp>
00015 #include <boost/serialization/list.hpp>
00016 #include <boost/serialization/string.hpp>
00017 #include <boost/serialization/version.hpp>
00018 #include <boost/serialization/split_member.hpp>
00019 #include <boost/serialization/shared_ptr.hpp>
00020 #include <boost/serialization/base_object.hpp>
00021 #include <boost/serialization/export.hpp>
00022 #include <boost/serialization/set.hpp>
00023
00024 #include <string>
00025 using namespace std;
00026
00027 namespace il{
00028 class node;
00029 class type;
00030 }
00031
00032 namespace sail {
00033
00037 class Symbol {
00038 friend class boost::serialization::access;
00039
00040 template<class Archive>
00041 void serialize(Archive & ar, const unsigned int version)
00042 {
00043 }
00044 public:
00045 Symbol();
00046 virtual string to_string() const = 0;
00047 virtual string to_string(bool print_original) const = 0;
00048 virtual il::node* get_original_node() = 0;
00049 virtual bool is_constant() = 0;
00050 virtual bool is_variable() = 0;
00051 virtual il::type* get_type() = 0;
00052 virtual ~Symbol();
00053 virtual bool is_temp();
00054 };
00055
00056 }
00057
00058 #endif