@@ -32,7 +32,7 @@ namespace Sass {
3232 inline double div (double x, double y) { return x / y; } // x/0 checked by caller
3333 inline double mod (double x, double y) { return abs (fmod (x, y)); } // x/0 checked by caller
3434 typedef double (*bop)(double , double );
35- bop ops[Binary_Expression ::NUM_OPS] = {
35+ bop ops[Sass_OP ::NUM_OPS] = {
3636 0 , 0 , // and, or
3737 0 , 0 , 0 , 0 , 0 , 0 , // eq, neq, gt, gte, lt, lte
3838 add, sub, mul, div, mod
@@ -445,28 +445,28 @@ namespace Sass {
445445 bool lt (Expression*, Expression*, Context&);
446446 // -- arithmetic on the combinations that matter
447447 Expression* op_numbers (Context&, Binary_Expression*, Expression*, Expression*);
448- Expression* op_number_color (Context&, Binary_Expression::Type , Expression*, Expression*);
449- Expression* op_color_number (Context&, Binary_Expression::Type , Expression*, Expression*);
450- Expression* op_colors (Context&, Binary_Expression::Type , Expression*, Expression*);
451- Expression* op_strings (Context&, Binary_Expression::Type , Expression*, Expression*);
448+ Expression* op_number_color (Context&, enum Sass_OP , Expression*, Expression*);
449+ Expression* op_color_number (Context&, enum Sass_OP , Expression*, Expression*);
450+ Expression* op_colors (Context&, enum Sass_OP , Expression*, Expression*);
451+ Expression* op_strings (Context&, enum Sass_OP , Expression*, Expression*);
452452
453453 Expression* Eval::operator ()(Binary_Expression* b)
454454 {
455- Binary_Expression::Type op_type = b->type ();
455+ enum Sass_OP op_type = b->type ();
456456 // don't eval delayed expressions (the '/' when used as a separator)
457- if (op_type == Binary_Expression ::DIV && b->is_delayed ()) return b;
457+ if (op_type == Sass_OP ::DIV && b->is_delayed ()) return b;
458458 b->is_delayed (false );
459459 // if one of the operands is a '/' then make sure it's evaluated
460460 Expression* lhs = b->left ()->perform (this );
461461 lhs->is_delayed (false );
462462 while (typeid (*lhs) == typeid (Binary_Expression)) lhs = lhs->perform (this );
463463
464464 switch (op_type) {
465- case Binary_Expression ::AND:
465+ case Sass_OP ::AND:
466466 return *lhs ? b->right ()->perform (this ) : lhs;
467467 break ;
468468
469- case Binary_Expression ::OR:
469+ case Sass_OP ::OR:
470470 return *lhs ? lhs : b->right ()->perform (this );
471471 break ;
472472
@@ -476,12 +476,12 @@ namespace Sass {
476476 // not a logical connective, so go ahead and eval the rhs
477477 Expression* rhs = b->right ()->perform (this );
478478 // maybe fully evaluate structure
479- if (op_type == Binary_Expression ::EQ ||
480- op_type == Binary_Expression ::NEQ ||
481- op_type == Binary_Expression ::GT ||
482- op_type == Binary_Expression ::GTE ||
483- op_type == Binary_Expression ::LT ||
484- op_type == Binary_Expression ::LTE)
479+ if (op_type == Sass_OP ::EQ ||
480+ op_type == Sass_OP ::NEQ ||
481+ op_type == Sass_OP ::GT ||
482+ op_type == Sass_OP ::GTE ||
483+ op_type == Sass_OP ::LT ||
484+ op_type == Sass_OP ::LTE)
485485 {
486486 rhs->is_expanded (false );
487487 rhs->set_delayed (false );
@@ -494,7 +494,7 @@ namespace Sass {
494494 }
495495
496496 // upgrade string to number if possible (issue #948)
497- if (op_type == Binary_Expression ::DIV || op_type == Binary_Expression ::MUL) {
497+ if (op_type == Sass_OP ::DIV || op_type == Sass_OP ::MUL) {
498498 if (String_Constant* str = dynamic_cast <String_Constant*>(rhs)) {
499499 const char * start = str->value ().c_str ();
500500 if (Prelexer::sequence < Prelexer::number >(start) != 0 ) {
@@ -506,12 +506,12 @@ namespace Sass {
506506
507507 // see if it's a relational expression
508508 switch (op_type) {
509- case Binary_Expression ::EQ: return new (ctx.mem ) Boolean (b->pstate (), eq (lhs, rhs, ctx));
510- case Binary_Expression ::NEQ: return new (ctx.mem ) Boolean (b->pstate (), !eq (lhs, rhs, ctx));
511- case Binary_Expression ::GT: return new (ctx.mem ) Boolean (b->pstate (), !lt (lhs, rhs, ctx) && !eq (lhs, rhs, ctx));
512- case Binary_Expression ::GTE: return new (ctx.mem ) Boolean (b->pstate (), !lt (lhs, rhs, ctx));
513- case Binary_Expression ::LT: return new (ctx.mem ) Boolean (b->pstate (), lt (lhs, rhs, ctx));
514- case Binary_Expression ::LTE: return new (ctx.mem ) Boolean (b->pstate (), lt (lhs, rhs, ctx) || eq (lhs, rhs, ctx));
509+ case Sass_OP ::EQ: return new (ctx.mem ) Boolean (b->pstate (), eq (lhs, rhs, ctx));
510+ case Sass_OP ::NEQ: return new (ctx.mem ) Boolean (b->pstate (), !eq (lhs, rhs, ctx));
511+ case Sass_OP ::GT: return new (ctx.mem ) Boolean (b->pstate (), !lt (lhs, rhs, ctx) && !eq (lhs, rhs, ctx));
512+ case Sass_OP ::GTE: return new (ctx.mem ) Boolean (b->pstate (), !lt (lhs, rhs, ctx));
513+ case Sass_OP ::LT: return new (ctx.mem ) Boolean (b->pstate (), lt (lhs, rhs, ctx));
514+ case Sass_OP ::LTE: return new (ctx.mem ) Boolean (b->pstate (), lt (lhs, rhs, ctx) || eq (lhs, rhs, ctx));
515515
516516 default : break ;
517517 }
@@ -1153,11 +1153,11 @@ namespace Sass {
11531153 Number* r = static_cast <Number*>(rhs);
11541154 double lv = l->value ();
11551155 double rv = r->value ();
1156- Binary_Expression::Type op = b->type ();
1157- if (op == Binary_Expression ::DIV && !rv) {
1156+ enum Sass_OP op = b->type ();
1157+ if (op == Sass_OP ::DIV && !rv) {
11581158 return new (ctx.mem ) String_Quoted (l->pstate (), " Infinity" );
11591159 }
1160- if (op == Binary_Expression ::MOD && !rv) {
1160+ if (op == Sass_OP ::MOD && !rv) {
11611161 error (" division by zero" , r->pstate ());
11621162 }
11631163
@@ -1166,17 +1166,17 @@ namespace Sass {
11661166 string l_unit (l->unit ());
11671167 string r_unit (tmp.unit ());
11681168 if (l_unit != r_unit && !l_unit.empty () && !r_unit.empty () &&
1169- (op == Binary_Expression ::ADD || op == Binary_Expression ::SUB)) {
1169+ (op == Sass_OP ::ADD || op == Sass_OP ::SUB)) {
11701170 error (" Incompatible units: '" +r_unit+" ' and '" +l_unit+" '." , l->pstate ());
11711171 }
11721172 Number* v = new (ctx.mem ) Number (*l);
11731173 v->pstate (b->pstate ());
1174- if (l_unit.empty () && (op == Binary_Expression ::ADD || op == Binary_Expression ::SUB || op == Binary_Expression ::MOD)) {
1174+ if (l_unit.empty () && (op == Sass_OP ::ADD || op == Sass_OP ::SUB || op == Sass_OP ::MOD)) {
11751175 v->numerator_units () = r->numerator_units ();
11761176 v->denominator_units () = r->denominator_units ();
11771177 }
11781178
1179- if (op == Binary_Expression ::MUL) {
1179+ if (op == Sass_OP ::MUL) {
11801180 v->value (ops[op](lv, rv));
11811181 for (size_t i = 0 , S = r->numerator_units ().size (); i < S; ++i) {
11821182 v->numerator_units ().push_back (r->numerator_units ()[i]);
@@ -1185,7 +1185,7 @@ namespace Sass {
11851185 v->denominator_units ().push_back (r->denominator_units ()[i]);
11861186 }
11871187 }
1188- else if (op == Binary_Expression ::DIV) {
1188+ else if (op == Sass_OP ::DIV) {
11891189 v->value (ops[op](lv, rv));
11901190 for (size_t i = 0 , S = r->numerator_units ().size (); i < S; ++i) {
11911191 v->denominator_units ().push_back (r->numerator_units ()[i]);
@@ -1200,7 +1200,7 @@ namespace Sass {
12001200 return v;
12011201 }
12021202
1203- Expression* op_number_color (Context& ctx, Binary_Expression::Type op, Expression* lhs, Expression* rhs)
1203+ Expression* op_number_color (Context& ctx, enum Sass_OP op, Expression* lhs, Expression* rhs)
12041204 {
12051205 Number* l = static_cast <Number*>(lhs);
12061206 Color* r = static_cast <Color*>(rhs);
@@ -1210,17 +1210,17 @@ namespace Sass {
12101210 r->disp (" " );
12111211 double lv = l->value ();
12121212 switch (op) {
1213- case Binary_Expression ::ADD:
1214- case Binary_Expression ::MUL: {
1213+ case Sass_OP ::ADD:
1214+ case Sass_OP ::MUL: {
12151215 return new (ctx.mem ) Color (l->pstate (),
12161216 ops[op](lv, r->r ()),
12171217 ops[op](lv, r->g ()),
12181218 ops[op](lv, r->b ()),
12191219 r->a ());
12201220 } break ;
1221- case Binary_Expression ::SUB:
1222- case Binary_Expression ::DIV: {
1223- string sep (op == Binary_Expression ::SUB ? " -" : " /" );
1221+ case Sass_OP ::SUB:
1222+ case Sass_OP ::DIV: {
1223+ string sep (op == Sass_OP ::SUB ? " -" : " /" );
12241224 To_String to_string (&ctx);
12251225 string color (r->sixtuplet () && (ctx.output_style != COMPRESSED) ?
12261226 r->perform (&to_string) :
@@ -1230,7 +1230,7 @@ namespace Sass {
12301230 + sep
12311231 + color);
12321232 } break ;
1233- case Binary_Expression ::MOD: {
1233+ case Sass_OP ::MOD: {
12341234 error (" cannot divide a number by a color" , r->pstate ());
12351235 } break ;
12361236 default : break ; // caller should ensure that we don't get here
@@ -1239,27 +1239,27 @@ namespace Sass {
12391239 return l;
12401240 }
12411241
1242- Expression* op_color_number (Context& ctx, Binary_Expression::Type op, Expression* lhs, Expression* rhs)
1242+ Expression* op_color_number (Context& ctx, enum Sass_OP op, Expression* lhs, Expression* rhs)
12431243 {
12441244 Color* l = static_cast <Color*>(lhs);
12451245 Number* r = static_cast <Number*>(rhs);
12461246 double rv = r->value ();
1247- if (op == Binary_Expression ::DIV && !rv) error (" division by zero" , r->pstate ());
1247+ if (op == Sass_OP ::DIV && !rv) error (" division by zero" , r->pstate ());
12481248 return new (ctx.mem ) Color (l->pstate (),
12491249 ops[op](l->r (), rv),
12501250 ops[op](l->g (), rv),
12511251 ops[op](l->b (), rv),
12521252 l->a ());
12531253 }
12541254
1255- Expression* op_colors (Context& ctx, Binary_Expression::Type op, Expression* lhs, Expression* rhs)
1255+ Expression* op_colors (Context& ctx, enum Sass_OP op, Expression* lhs, Expression* rhs)
12561256 {
12571257 Color* l = static_cast <Color*>(lhs);
12581258 Color* r = static_cast <Color*>(rhs);
12591259 if (l->a () != r->a ()) {
12601260 error (" alpha channels must be equal when combining colors" , r->pstate ());
12611261 }
1262- if ((op == Binary_Expression ::DIV || op == Binary_Expression ::MOD) &&
1262+ if ((op == Sass_OP ::DIV || op == Sass_OP ::MOD) &&
12631263 (!r->r () || !r->g () ||!r->b ())) {
12641264 error (" division by zero" , r->pstate ());
12651265 }
@@ -1270,7 +1270,7 @@ namespace Sass {
12701270 l->a ());
12711271 }
12721272
1273- Expression* op_strings (Context& ctx, Binary_Expression::Type op, Expression* lhs, Expression*rhs)
1273+ Expression* op_strings (Context& ctx, enum Sass_OP op, Expression* lhs, Expression*rhs)
12741274 {
12751275 To_String to_string (&ctx);
12761276 Expression::Concrete_Type ltype = lhs->concrete_type ();
@@ -1299,12 +1299,12 @@ namespace Sass {
12991299 else if (ltype == Expression::NUMBER && r_str_color) {
13001300 return op_number_color (ctx, op, lhs, ctx.names_to_colors [rstr]);
13011301 }
1302- if (op == Binary_Expression ::MUL) error (" invalid operands for multiplication" , lhs->pstate ());
1303- if (op == Binary_Expression ::MOD) error (" invalid operands for modulo" , lhs->pstate ());
1302+ if (op == Sass_OP ::MUL) error (" invalid operands for multiplication" , lhs->pstate ());
1303+ if (op == Sass_OP ::MOD) error (" invalid operands for modulo" , lhs->pstate ());
13041304 string sep;
13051305 switch (op) {
1306- case Binary_Expression ::SUB: sep = " -" ; break ;
1307- case Binary_Expression ::DIV: sep = " /" ; break ;
1306+ case Sass_OP ::SUB: sep = " -" ; break ;
1307+ case Sass_OP ::DIV: sep = " /" ; break ;
13081308 default : break ;
13091309 }
13101310 if (ltype == Expression::NULL_VAL) error (" invalid null operation: \" null plus " +quote (unquote (rstr), ' "' )+" \" ." , lhs->pstate ());
0 commit comments