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