00001 #ifndef GOTO_STATEMENT_H_
00002 #define GOTO_STATEMENT_H_
00003
00004 #include "control_statement.h"
00005
00006
00007 namespace il
00008 {
00009
00010 class label;
00011
00015 class goto_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 & label_name;
00024 ar & l;
00025 }
00026 private:
00027 string label_name;
00028 label *l;
00029 public:
00030 goto_statement();
00031 goto_statement(label *l, string label_name, location loc);
00032 string get_label_name();
00033 void print();
00034 virtual ~goto_statement();
00035 label* get_label();
00036 label** get_label_ref();
00037 virtual string to_string() const;
00038 };
00039
00040 }
00041
00042 #endif