00001
00002
00003
00004
00005
00006
00007
00008 #ifndef BLOCK_EXPRESSION_H_
00009 #define BLOCK_EXPRESSION_H_
00010
00011 #include "expression.h"
00012
00013
00014 namespace il {
00015 class block;
00016 class variable_declaration;
00017
00024 class block_expression: public il::expression {
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<il::expression>(*this);
00031 ar & b;
00032 ar & var_decl;
00033 }
00034 private:
00035 block* b;
00036 variable_declaration* var_decl;
00037 public:
00038 block_expression();
00039 block_expression(block* b, variable_declaration* var_decl,
00040 type* t, location loc);
00041 virtual string to_string() const;
00042 virtual block* get_block();
00043 virtual variable_declaration* get_vardecl();
00044 virtual ~block_expression();
00045
00046 };
00047
00048 }
00049
00050 #endif