#ifndef RESOLVEXPR_ALTERNATIVE_H #define RESOLVEXPR_ALTERNATIVE_H #include #include "SynTree/SynTree.h" #include "Cost.h" #include "TypeEnvironment.h" namespace ResolvExpr { struct Alternative; typedef std::list< Alternative > AltList; struct Alternative { Alternative(); Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost ); Alternative( Expression *expr, const TypeEnvironment &env, const Cost& cost, const Cost &cvtCost ); Alternative( const Alternative &other ); Alternative &operator=( const Alternative &other ); ~Alternative(); void initialize( const Alternative &src, Alternative &dest ); void print( std::ostream &os, int indent = 0 ) const; Cost cost; Cost cvtCost; Expression *expr; TypeEnvironment env; }; } // namespace ResolvExpr #endif // RESOLVEXPR_ALTERNATIVE_H