Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / src / to_value.hpp
1 #ifndef SASS_TO_VALUE_H
2 #define SASS_TO_VALUE_H
3
4 #include "operation.hpp"
5 #include "sass/values.h"
6 #include "ast_fwd_decl.hpp"
7
8 namespace Sass {
9
10   class To_Value : public Operation_CRTP<Value_Ptr, To_Value> {
11
12     Value_Ptr fallback_impl(AST_Node_Ptr n);
13
14   private:
15
16     Context& ctx;
17
18   public:
19
20     To_Value(Context& ctx)
21     : ctx(ctx)
22     { }
23     ~To_Value() { }
24     using Operation<Value_Ptr>::operator();
25
26     Value_Ptr operator()(Argument_Ptr);
27     Value_Ptr operator()(Boolean_Ptr);
28     Value_Ptr operator()(Number_Ptr);
29     Value_Ptr operator()(Color_Ptr);
30     Value_Ptr operator()(String_Constant_Ptr);
31     Value_Ptr operator()(String_Quoted_Ptr);
32     Value_Ptr operator()(Custom_Warning_Ptr);
33     Value_Ptr operator()(Custom_Error_Ptr);
34     Value_Ptr operator()(List_Ptr);
35     Value_Ptr operator()(Map_Ptr);
36     Value_Ptr operator()(Null_Ptr);
37
38     // convert to string via `To_String`
39     Value_Ptr operator()(Selector_List_Ptr);
40     Value_Ptr operator()(Binary_Expression_Ptr);
41
42     // fallback throws error
43     template <typename U>
44     Value_Ptr fallback(U x) { return fallback_impl(x); }
45   };
46
47 }
48
49 #endif