ext/libsass/src/sass_values.cpp in sassc-1.11.1 vs ext/libsass/src/sass_values.cpp in sassc-1.11.2
- old
+ new
@@ -273,63 +273,63 @@
}
union Sass_Value* ADDCALL sass_value_stringify (const union Sass_Value* v, bool compressed, int precision)
{
- Memory_Manager mem;
- Value* val = sass_value_to_ast_node(mem, v);
+ Value_Obj val = sass_value_to_ast_node(v);
Sass_Inspect_Options options(compressed ? COMPRESSED : NESTED, precision);
std::string str(val->to_string(options));
return sass_make_qstring(str.c_str());
}
union Sass_Value* ADDCALL sass_value_op (enum Sass_OP op, const union Sass_Value* a, const union Sass_Value* b)
{
- Sass::Value* rv = 0;
- Memory_Manager mem;
+ Sass::Value_Ptr rv = 0;
try {
- Value* lhs = sass_value_to_ast_node(mem, a);
- Value* rhs = sass_value_to_ast_node(mem, b);
+ Value_Obj lhs = sass_value_to_ast_node(a);
+ Value_Obj rhs = sass_value_to_ast_node(b);
struct Sass_Inspect_Options options(NESTED, 5);
// see if it's a relational expression
switch(op) {
- case Sass_OP::EQ: return sass_make_boolean(Eval::eq(lhs, rhs));
- case Sass_OP::NEQ: return sass_make_boolean(!Eval::eq(lhs, rhs));
- case Sass_OP::GT: return sass_make_boolean(!Eval::lt(lhs, rhs, "gt") && !Eval::eq(lhs, rhs));
- case Sass_OP::GTE: return sass_make_boolean(!Eval::lt(lhs, rhs, "gte"));
- case Sass_OP::LT: return sass_make_boolean(Eval::lt(lhs, rhs, "lt"));
- case Sass_OP::LTE: return sass_make_boolean(Eval::lt(lhs, rhs, "lte") || Eval::eq(lhs, rhs));
+ case Sass_OP::EQ: return sass_make_boolean(Eval::eq(&lhs, &rhs));
+ case Sass_OP::NEQ: return sass_make_boolean(!Eval::eq(&lhs, &rhs));
+ case Sass_OP::GT: return sass_make_boolean(!Eval::lt(&lhs, &rhs, "gt") && !Eval::eq(&lhs, &rhs));
+ case Sass_OP::GTE: return sass_make_boolean(!Eval::lt(&lhs, &rhs, "gte"));
+ case Sass_OP::LT: return sass_make_boolean(Eval::lt(&lhs, &rhs, "lt"));
+ case Sass_OP::LTE: return sass_make_boolean(Eval::lt(&lhs, &rhs, "lte") || Eval::eq(&lhs, &rhs));
+ case Sass_OP::AND: return ast_node_to_sass_value(lhs->is_false() ? &lhs : &rhs);
+ case Sass_OP::OR: return ast_node_to_sass_value(lhs->is_false() ? &rhs : &lhs);
default: break;
}
if (sass_value_is_number(a) && sass_value_is_number(b)) {
- const Number* l_n = dynamic_cast<const Number*>(lhs);
- const Number* r_n = dynamic_cast<const Number*>(rhs);
- rv = Eval::op_numbers(mem, op, *l_n, *r_n, options);
+ Number_Ptr_Const l_n = SASS_MEMORY_CAST(Number, lhs);
+ Number_Ptr_Const r_n = SASS_MEMORY_CAST(Number, rhs);
+ rv = Eval::op_numbers(op, *l_n, *r_n, options);
}
else if (sass_value_is_number(a) && sass_value_is_color(a)) {
- const Number* l_n = dynamic_cast<const Number*>(lhs);
- const Color* r_c = dynamic_cast<const Color*>(rhs);
- rv = Eval::op_number_color(mem, op, *l_n, *r_c, options);
+ Number_Ptr_Const l_n = SASS_MEMORY_CAST(Number, lhs);
+ Color_Ptr_Const r_c = SASS_MEMORY_CAST(Color, rhs);
+ rv = Eval::op_number_color(op, *l_n, *r_c, options);
}
else if (sass_value_is_color(a) && sass_value_is_number(b)) {
- const Color* l_c = dynamic_cast<const Color*>(lhs);
- const Number* r_n = dynamic_cast<const Number*>(rhs);
- rv = Eval::op_color_number(mem, op, *l_c, *r_n, options);
+ Color_Ptr_Const l_c = SASS_MEMORY_CAST(Color, lhs);
+ Number_Ptr_Const r_n = SASS_MEMORY_CAST(Number, rhs);
+ rv = Eval::op_color_number(op, *l_c, *r_n, options);
}
else if (sass_value_is_color(a) && sass_value_is_color(b)) {
- const Color* l_c = dynamic_cast<const Color*>(lhs);
- const Color* r_c = dynamic_cast<const Color*>(rhs);
- rv = Eval::op_colors(mem, op, *l_c, *r_c, options);
+ Color_Ptr_Const l_c = SASS_MEMORY_CAST(Color, lhs);
+ Color_Ptr_Const r_c = SASS_MEMORY_CAST(Color, rhs);
+ rv = Eval::op_colors(op, *l_c, *r_c, options);
}
else /* convert other stuff to string and apply operation */ {
- Value* l_v = dynamic_cast<Value*>(lhs);
- Value* r_v = dynamic_cast<Value*>(rhs);
- rv = Eval::op_strings(mem, op, *l_v, *r_v, options);
+ Value_Ptr l_v = SASS_MEMORY_CAST(Value, lhs);
+ Value_Ptr r_v = SASS_MEMORY_CAST(Value, rhs);
+ rv = Eval::op_strings(op, *l_v, *r_v, options);
}
// ToDo: maybe we should should return null value?
if (!rv) return sass_make_error("invalid return value");