ifndef SASS_TO_VALUE_H define SASS_TO_VALUE_H

include “operation.hpp” include “sass/values.h” include “ast_fwd_decl.hpp”

namespace Sass {

class To_Value : public Operation_CRTP<Value*, To_Value> {

private:

  Context& ctx;

public:

  To_Value(Context& ctx)
  : ctx(ctx)
  { }
  ~To_Value() { }
  using Operation<Value*>::operator();

  Value* operator()(Argument*);
  Value* operator()(Boolean*);
  Value* operator()(Number*);
  Value* operator()(Color_RGBA*);
  Value* operator()(Color_HSLA*);
  Value* operator()(String_Constant*);
  Value* operator()(String_Quoted*);
  Value* operator()(Custom_Warning*);
  Value* operator()(Custom_Error*);
  Value* operator()(List*);
  Value* operator()(Map*);
  Value* operator()(Null*);
  Value* operator()(Function*);

  // convert to string via `To_String`
  Value* operator()(SelectorList*);
  Value* operator()(Binary_Expression*);

};

}

endif