/src/libsass/src/eval.hpp
Line | Count | Source (jump to first uncovered line) |
1 | | #ifndef SASS_EVAL_H |
2 | | #define SASS_EVAL_H |
3 | | |
4 | | // sass.hpp must go before all system headers to get the |
5 | | // __EXTENSIONS__ fix on Solaris. |
6 | | #include "sass.hpp" |
7 | | #include "ast.hpp" |
8 | | |
9 | | #include "context.hpp" |
10 | | #include "listize.hpp" |
11 | | #include "operation.hpp" |
12 | | #include "environment.hpp" |
13 | | |
14 | | namespace Sass { |
15 | | |
16 | | class Expand; |
17 | | class Context; |
18 | | |
19 | | class Eval : public Operation_CRTP<Expression*, Eval> { |
20 | | |
21 | | public: |
22 | | Expand& exp; |
23 | | Context& ctx; |
24 | | Backtraces& traces; |
25 | | Eval(Expand& exp); |
26 | | ~Eval(); |
27 | | |
28 | | bool force; |
29 | | bool is_in_comment; |
30 | | bool is_in_selector_schema; |
31 | | |
32 | | Boolean_Obj bool_true; |
33 | | Boolean_Obj bool_false; |
34 | | |
35 | | Env* environment(); |
36 | | EnvStack& env_stack(); |
37 | | const sass::string cwd(); |
38 | | CalleeStack& callee_stack(); |
39 | | struct Sass_Inspect_Options& options(); |
40 | | struct Sass_Compiler* compiler(); |
41 | | |
42 | | // for evaluating function bodies |
43 | | Expression* operator()(Block*); |
44 | | Expression* operator()(Assignment*); |
45 | | Expression* operator()(If*); |
46 | | Expression* operator()(ForRule*); |
47 | | Expression* operator()(EachRule*); |
48 | | Expression* operator()(WhileRule*); |
49 | | Expression* operator()(Return*); |
50 | | Expression* operator()(WarningRule*); |
51 | | Expression* operator()(ErrorRule*); |
52 | | Expression* operator()(DebugRule*); |
53 | | |
54 | | Expression* operator()(List*); |
55 | | Expression* operator()(Map*); |
56 | | Expression* operator()(Binary_Expression*); |
57 | | Expression* operator()(Unary_Expression*); |
58 | | Expression* operator()(Function_Call*); |
59 | | Expression* operator()(Variable*); |
60 | | Expression* operator()(Number*); |
61 | | Expression* operator()(Color_RGBA*); |
62 | | Expression* operator()(Color_HSLA*); |
63 | | Expression* operator()(Boolean*); |
64 | | Expression* operator()(String_Schema*); |
65 | | Expression* operator()(String_Quoted*); |
66 | | Expression* operator()(String_Constant*); |
67 | | Media_Query* operator()(Media_Query*); |
68 | | Expression* operator()(Media_Query_Expression*); |
69 | | Expression* operator()(At_Root_Query*); |
70 | | Expression* operator()(SupportsOperation*); |
71 | | Expression* operator()(SupportsNegation*); |
72 | | Expression* operator()(SupportsDeclaration*); |
73 | | Expression* operator()(Supports_Interpolation*); |
74 | | Expression* operator()(Null*); |
75 | | Expression* operator()(Argument*); |
76 | | Expression* operator()(Arguments*); |
77 | | Expression* operator()(Comment*); |
78 | | |
79 | | // these will return selectors |
80 | | SelectorList* operator()(SelectorList*); |
81 | | SelectorList* operator()(ComplexSelector*); |
82 | | CompoundSelector* operator()(CompoundSelector*); |
83 | | SelectorComponent* operator()(SelectorComponent*); |
84 | | SimpleSelector* operator()(SimpleSelector* s); |
85 | | PseudoSelector* operator()(PseudoSelector* s); |
86 | | |
87 | | // they don't have any specific implementation (yet) |
88 | 0 | IDSelector* operator()(IDSelector* s) { return s; }; |
89 | 0 | ClassSelector* operator()(ClassSelector* s) { return s; }; |
90 | 1 | TypeSelector* operator()(TypeSelector* s) { return s; }; |
91 | 0 | AttributeSelector* operator()(AttributeSelector* s) { return s; }; |
92 | 0 | PlaceholderSelector* operator()(PlaceholderSelector* s) { return s; }; |
93 | | |
94 | | // actual evaluated selectors |
95 | | SelectorList* operator()(Selector_Schema*); |
96 | | Expression* operator()(Parent_Reference*); |
97 | | |
98 | | // generic fallback |
99 | | template <typename U> |
100 | | Expression* fallback(U x) |
101 | 0 | { return Cast<Expression>(x); } Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Block*>(Sass::Block*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Assignment*>(Sass::Assignment*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::WarningRule*>(Sass::WarningRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::ErrorRule*>(Sass::ErrorRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::DebugRule*>(Sass::DebugRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Comment*>(Sass::Comment*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::If*>(Sass::If*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::ForRule*>(Sass::ForRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::EachRule*>(Sass::EachRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::WhileRule*>(Sass::WhileRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Return*>(Sass::Return*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Null*>(Sass::Null*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::List*>(Sass::List*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Map*>(Sass::Map*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Binary_Expression*>(Sass::Binary_Expression*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Unary_Expression*>(Sass::Unary_Expression*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Function_Call*>(Sass::Function_Call*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Variable*>(Sass::Variable*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Number*>(Sass::Number*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Color_RGBA*>(Sass::Color_RGBA*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Color_HSLA*>(Sass::Color_HSLA*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Boolean*>(Sass::Boolean*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::String_Schema*>(Sass::String_Schema*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::String_Quoted*>(Sass::String_Quoted*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::String_Constant*>(Sass::String_Constant*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SupportsOperation*>(Sass::SupportsOperation*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SupportsNegation*>(Sass::SupportsNegation*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SupportsDeclaration*>(Sass::SupportsDeclaration*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Supports_Interpolation*>(Sass::Supports_Interpolation*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Media_Query*>(Sass::Media_Query*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Media_Query_Expression*>(Sass::Media_Query_Expression*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::At_Root_Query*>(Sass::At_Root_Query*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Parent_Reference*>(Sass::Parent_Reference*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Argument*>(Sass::Argument*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Arguments*>(Sass::Arguments*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Selector_Schema*>(Sass::Selector_Schema*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::PlaceholderSelector*>(Sass::PlaceholderSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::TypeSelector*>(Sass::TypeSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::ClassSelector*>(Sass::ClassSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::IDSelector*>(Sass::IDSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::AttributeSelector*>(Sass::AttributeSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::PseudoSelector*>(Sass::PseudoSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SelectorComponent*>(Sass::SelectorComponent*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::CompoundSelector*>(Sass::CompoundSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::ComplexSelector*>(Sass::ComplexSelector*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SelectorList*>(Sass::SelectorList*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::AST_Node*>(Sass::AST_Node*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::StyleRule*>(Sass::StyleRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Bubble*>(Sass::Bubble*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Trace*>(Sass::Trace*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SupportsRule*>(Sass::SupportsRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::MediaRule*>(Sass::MediaRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::CssMediaRule*>(Sass::CssMediaRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::CssMediaQuery*>(Sass::CssMediaQuery*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::AtRootRule*>(Sass::AtRootRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::AtRule*>(Sass::AtRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Keyframe_Rule*>(Sass::Keyframe_Rule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Declaration*>(Sass::Declaration*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Import*>(Sass::Import*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Import_Stub*>(Sass::Import_Stub*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Content*>(Sass::Content*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::ExtendRule*>(Sass::ExtendRule*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Definition*>(Sass::Definition*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Mixin_Call*>(Sass::Mixin_Call*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Function*>(Sass::Function*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Custom_Warning*>(Sass::Custom_Warning*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Custom_Error*>(Sass::Custom_Error*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Color*>(Sass::Color*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SupportsCondition*>(Sass::SupportsCondition*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Parameter*>(Sass::Parameter*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::Parameters*>(Sass::Parameters*) Unexecuted instantiation: Sass::Expression* Sass::Eval::fallback<Sass::SelectorCombinator*>(Sass::SelectorCombinator*) |
102 | | |
103 | | private: |
104 | | void interpolation(Context& ctx, sass::string& res, ExpressionObj ex, bool into_quotes, bool was_itpl = false); |
105 | | |
106 | | }; |
107 | | |
108 | | } |
109 | | |
110 | | #endif |