ext/libsass/src/values.cpp in sassc-1.11.1 vs ext/libsass/src/values.cpp in sassc-1.11.2
- old
+ new
@@ -5,130 +5,131 @@
#include <stdint.h>
namespace Sass {
// convert value from C++ side to C-API
- union Sass_Value* ast_node_to_sass_value (const Expression* val)
+ union Sass_Value* ast_node_to_sass_value (const Expression_Ptr val)
{
if (val->concrete_type() == Expression::NUMBER)
{
- const Number* res = dynamic_cast<const Number*>(val);
+ Number_Ptr_Const res = dynamic_cast<Number_Ptr_Const>(val);
return sass_make_number(res->value(), res->unit().c_str());
}
else if (val->concrete_type() == Expression::COLOR)
{
- const Color* col = dynamic_cast<const Color*>(val);
+ Color_Ptr_Const col = dynamic_cast<Color_Ptr_Const>(val);
return sass_make_color(col->r(), col->g(), col->b(), col->a());
}
else if (val->concrete_type() == Expression::LIST)
{
- const List* l = dynamic_cast<const List*>(val);
+ List_Ptr_Const l = dynamic_cast<List_Ptr_Const>(val);
union Sass_Value* list = sass_make_list(l->size(), l->separator());
for (size_t i = 0, L = l->length(); i < L; ++i) {
- auto val = ast_node_to_sass_value((*l)[i]);
+ Expression_Obj obj = l->at(i);
+ auto val = ast_node_to_sass_value(&obj);
sass_list_set_value(list, i, val);
}
return list;
}
else if (val->concrete_type() == Expression::MAP)
{
- const Map* m = dynamic_cast<const Map*>(val);
+ Map_Ptr_Const m = dynamic_cast<Map_Ptr_Const>(val);
union Sass_Value* map = sass_make_map(m->length());
- size_t i = 0; for (auto key : m->keys()) {
- sass_map_set_key(map, i, ast_node_to_sass_value(key));
- sass_map_set_value(map, i, ast_node_to_sass_value(m->at(key)));
+ size_t i = 0; for (Expression_Obj key : m->keys()) {
+ sass_map_set_key(map, i, ast_node_to_sass_value(&key));
+ sass_map_set_value(map, i, ast_node_to_sass_value(&m->at(key)));
++ i;
}
return map;
}
else if (val->concrete_type() == Expression::NULL_VAL)
{
return sass_make_null();
}
else if (val->concrete_type() == Expression::BOOLEAN)
{
- const Boolean* res = dynamic_cast<const Boolean*>(val);
+ Boolean_Ptr_Const res = dynamic_cast<Boolean_Ptr_Const>(val);
return sass_make_boolean(res->value());
}
else if (val->concrete_type() == Expression::STRING)
{
- if (const String_Quoted* qstr = dynamic_cast<const String_Quoted*>(val))
+ if (String_Quoted_Ptr_Const qstr = dynamic_cast<String_Quoted_Ptr_Const>(val))
{
return sass_make_qstring(qstr->value().c_str());
}
- else if (const String_Constant* cstr = dynamic_cast<const String_Constant*>(val))
+ else if (String_Constant_Ptr_Const cstr = dynamic_cast<String_Constant_Ptr_Const>(val))
{
return sass_make_string(cstr->value().c_str());
}
}
return sass_make_error("unknown sass value type");
}
// convert value from C-API to C++ side
- Value* sass_value_to_ast_node (Memory_Manager& mem, const union Sass_Value* val)
+ Value_Ptr sass_value_to_ast_node (const union Sass_Value* val)
{
switch (sass_value_get_tag(val)) {
case SASS_NUMBER:
- return SASS_MEMORY_NEW(mem, Number,
+ return SASS_MEMORY_NEW(Number,
ParserState("[C-VALUE]"),
sass_number_get_value(val),
sass_number_get_unit(val));
break;
case SASS_BOOLEAN:
- return SASS_MEMORY_NEW(mem, Boolean,
+ return SASS_MEMORY_NEW(Boolean,
ParserState("[C-VALUE]"),
sass_boolean_get_value(val));
break;
case SASS_COLOR:
- return SASS_MEMORY_NEW(mem, Color,
+ return SASS_MEMORY_NEW(Color,
ParserState("[C-VALUE]"),
sass_color_get_r(val),
sass_color_get_g(val),
sass_color_get_b(val),
sass_color_get_a(val));
break;
case SASS_STRING:
if (sass_string_is_quoted(val)) {
- return SASS_MEMORY_NEW(mem, String_Quoted,
+ return SASS_MEMORY_NEW(String_Quoted,
ParserState("[C-VALUE]"),
sass_string_get_value(val));
} else {
- return SASS_MEMORY_NEW(mem, String_Constant,
+ return SASS_MEMORY_NEW(String_Constant,
ParserState("[C-VALUE]"),
sass_string_get_value(val));
}
break;
case SASS_LIST: {
- List* l = SASS_MEMORY_NEW(mem, List,
+ List_Ptr l = SASS_MEMORY_NEW(List,
ParserState("[C-VALUE]"),
sass_list_get_length(val),
sass_list_get_separator(val));
for (size_t i = 0, L = sass_list_get_length(val); i < L; ++i) {
- *l << sass_value_to_ast_node(mem, sass_list_get_value(val, i));
+ l->append(sass_value_to_ast_node(sass_list_get_value(val, i)));
}
return l;
}
break;
case SASS_MAP: {
- Map* m = SASS_MEMORY_NEW(mem, Map, ParserState("[C-VALUE]"));
+ Map_Ptr m = SASS_MEMORY_NEW(Map, ParserState("[C-VALUE]"));
for (size_t i = 0, L = sass_map_get_length(val); i < L; ++i) {
*m << std::make_pair(
- sass_value_to_ast_node(mem, sass_map_get_key(val, i)),
- sass_value_to_ast_node(mem, sass_map_get_value(val, i)));
+ sass_value_to_ast_node(sass_map_get_key(val, i)),
+ sass_value_to_ast_node(sass_map_get_value(val, i)));
}
return m;
}
break;
case SASS_NULL:
- return SASS_MEMORY_NEW(mem, Null, ParserState("[C-VALUE]"));
+ return SASS_MEMORY_NEW(Null, ParserState("[C-VALUE]"));
break;
case SASS_ERROR:
- return SASS_MEMORY_NEW(mem, Custom_Error,
+ return SASS_MEMORY_NEW(Custom_Error,
ParserState("[C-VALUE]"),
sass_error_get_message(val));
break;
case SASS_WARNING:
- return SASS_MEMORY_NEW(mem, Custom_Warning,
+ return SASS_MEMORY_NEW(Custom_Warning,
ParserState("[C-VALUE]"),
sass_warning_get_message(val));
break;
}
return 0;