00001
00002
00003
00004
00005
00006
00007
00008 #ifndef JUMP_H_
00009 #define JUMP_H_
00010
00011 #include "Instruction.h"
00012
00013 #include <string>
00014 using namespace std;
00015
00016 namespace il{class node;}
00017
00018 namespace sail {
00019 class Label;
00020
00024 class Jump: public Instruction {
00025 friend class boost::serialization::access;
00026
00027 template<class Archive>
00028 void serialize(Archive & ar, const unsigned int version)
00029 {
00030 ar & boost::serialization::base_object<sail::Instruction>(*this);
00031 ar & l;
00032 }
00033 private:
00034 Label* l;
00035 public:
00036 Jump(Label* l, il::node* original);
00037 Jump(){};
00038 virtual string to_string() const;
00039 virtual string to_string(bool pretty_print) const;
00040 void set_label(Label* l);
00044 Label* get_label();
00045 virtual bool is_removable();
00046 virtual ~Jump();
00047 };
00048
00049 }
00050
00051 #endif