#ifndef SASS_OPERATORS_H
#define SASS_OPERATORS_H

#include "values.hpp"
#include "sass/values.h"

namespace Sass {

  namespace Operators {

    // equality operator using AST Node operator==
    bool eq(ExpressionObj, ExpressionObj);
    bool neq(ExpressionObj, ExpressionObj);
    // specific operators based on cmp and eq
    bool lt(ExpressionObj, ExpressionObj);
    bool gt(ExpressionObj, ExpressionObj);
    bool lte(ExpressionObj, ExpressionObj);
    bool gte(ExpressionObj, ExpressionObj);
    // arithmetic for all the combinations that matter
    Value* op_strings(Sass::Operand, Value&, Value&, struct Sass_Inspect_Options opt, const SourceSpan& pstate, bool delayed = false);
    Value* op_colors(enum Sass_OP, const Color_RGBA&, const Color_RGBA&, struct Sass_Inspect_Options opt, const SourceSpan& pstate, bool delayed = false);
    Value* op_numbers(enum Sass_OP, const Number&, const Number&, struct Sass_Inspect_Options opt, const SourceSpan& pstate, bool delayed = false);
    Value* op_number_color(enum Sass_OP, const Number&, const Color_RGBA&, struct Sass_Inspect_Options opt, const SourceSpan& pstate, bool delayed = false);
    Value* op_color_number(enum Sass_OP, const Color_RGBA&, const Number&, struct Sass_Inspect_Options opt, const SourceSpan& pstate, bool delayed = false);

  };

}

#endif