#ifndef _ASSIGN_EXPAND_H_
#define _ASSIGN_EXPAND_H_

#include <cstdlib>

#include "SynTree/Mutator.h"
#include "SynTree/Statement.h"
#include "SynTree/Expression.h"

#include "UniqueName.h"

namespace Tuples {
  class AssignExpander : public Mutator
  {
    typedef Mutator Parent;

  public:
    AssignExpander();
    virtual Statement *mutate( ExprStmt *expr );
    virtual Expression *mutate( SolvedTupleExpr *tupleExpr );

  private:
    std::list<Statement *> extra, extra2;
    std::list<Expression *> replace;
    UniqueName temporaryNamer;
  };

} // namespace Tuples


#endif // #ifndef _ASSIGN_EXPAND_H_

/*
  Local Variables:
  mode: c++
  End:
*/
