00001 #ifndef FUNCTION_POINTER_CALL_EXPRESSION_H_
00002 #define FUNCTION_POINTER_CALL_EXPRESSION_H_
00003
00004 #include "expression.h"
00005 #include <vector>
00006
00007 using namespace std;
00008
00009
00010 namespace il
00011 {
00015 class function_pointer_call_expression : public il::expression
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::expression>(*this);
00023 ar & fn_ptr;
00024 ar & args;
00025 }
00026 private:
00027 expression* fn_ptr;
00028 vector<expression*> args;
00029
00030
00031 public:
00032 function_pointer_call_expression();
00033 function_pointer_call_expression(expression* fn_ptr,
00034 vector<expression*> args, type* t, location loc);
00035 virtual string to_string() const;
00036 virtual expression* get_function_pointer();
00037 bool has_return();
00038 virtual vector<expression*>& get_arguments();
00039 virtual ~function_pointer_call_expression();
00040 };
00041
00042 }
00043
00044 #endif