00001 #ifndef RETURN_STATEMENT_H_
00002 #define RETURN_STATEMENT_H_
00003
00004 #include "control_statement.h"
00005
00006 namespace il
00007 {
00008 class expression;
00009
00010 class expression;
00011
00015 class return_statement : public il::control_statement
00016 {
00017 friend class boost::serialization::access;
00018
00019 template<class Archive>
00020 void serialize(Archive & ar, const unsigned int version)
00021 {
00022 ar & boost::serialization::base_object<il::control_statement>(*this);
00023 ar & exp;
00024 }
00025 private:
00026 expression* exp;
00027 public:
00028 return_statement(expression* e, location loc);
00029 return_statement(){};
00030 expression* get_ret_expression();
00031 bool has_return_value();
00032 void print();
00033 virtual string to_string() const;
00034 virtual ~return_statement();
00035 };
00036
00037 }
00038
00039 #endif