00001 #ifndef ADDRESSOF_EXPRESSION_H_
00002 #define ADDRESSOF_EXPRESSION_H_
00003
00004 #include "expression.h"
00005 #include "location.h"
00006 #include <string>
00007 using namespace std;
00008
00009
00010
00011 namespace il
00012 {
00013
00014 class type;
00015
00019 class addressof_expression : public il::expression
00020 {
00021 friend class boost::serialization::access;
00022
00023 template<class Archive>
00024 void serialize(Archive & ar, const unsigned int version)
00025 {
00026 ar & boost::serialization::base_object<il::expression>(*this);
00027 ar & inner_exp;
00028 }
00029
00030
00031 private:
00032 expression* inner_exp;
00033 public:
00034 addressof_expression(expression* inner_exp, type* t, location loc);
00035 addressof_expression();
00036 virtual expression* get_inner_expression();
00037 virtual string to_string() const;
00038 virtual ~addressof_expression();
00039
00040 };
00041
00042 }
00043
00044 #endif