Initial commit
[yaffs-website] / node_modules / node-sass / src / libsass / src / cssize.hpp
1 #ifndef SASS_CSSIZE_H
2 #define SASS_CSSIZE_H
3
4 #include "ast.hpp"
5 #include "context.hpp"
6 #include "operation.hpp"
7 #include "environment.hpp"
8
9 namespace Sass {
10
11   struct Backtrace;
12
13   class Cssize : public Operation_CRTP<Statement_Ptr, Cssize> {
14
15     Context&                    ctx;
16     std::vector<Block_Ptr>         block_stack;
17     std::vector<Statement_Ptr>     p_stack;
18     Backtrace*                  backtrace;
19
20     Statement_Ptr fallback_impl(AST_Node_Ptr n);
21
22   public:
23     Cssize(Context&, Backtrace*);
24     ~Cssize() { }
25
26     Selector_List_Ptr selector();
27
28     Block_Ptr operator()(Block_Ptr);
29     Statement_Ptr operator()(Ruleset_Ptr);
30     // Statement_Ptr operator()(Bubble_Ptr);
31     Statement_Ptr operator()(Media_Block_Ptr);
32     Statement_Ptr operator()(Supports_Block_Ptr);
33     Statement_Ptr operator()(At_Root_Block_Ptr);
34     Statement_Ptr operator()(Directive_Ptr);
35     Statement_Ptr operator()(Keyframe_Rule_Ptr);
36     Statement_Ptr operator()(Trace_Ptr);
37     Statement_Ptr operator()(Declaration_Ptr);
38     // Statement_Ptr operator()(Assignment_Ptr);
39     // Statement_Ptr operator()(Import_Ptr);
40     // Statement_Ptr operator()(Import_Stub_Ptr);
41     // Statement_Ptr operator()(Warning_Ptr);
42     // Statement_Ptr operator()(Error_Ptr);
43     // Statement_Ptr operator()(Comment_Ptr);
44     // Statement_Ptr operator()(If_Ptr);
45     // Statement_Ptr operator()(For_Ptr);
46     // Statement_Ptr operator()(Each_Ptr);
47     // Statement_Ptr operator()(While_Ptr);
48     // Statement_Ptr operator()(Return_Ptr);
49     // Statement_Ptr operator()(Extension_Ptr);
50     // Statement_Ptr operator()(Definition_Ptr);
51     // Statement_Ptr operator()(Mixin_Call_Ptr);
52     // Statement_Ptr operator()(Content_Ptr);
53     Statement_Ptr operator()(Null_Ptr);
54
55     Statement_Ptr parent();
56     std::vector<std::pair<bool, Block_Obj>> slice_by_bubble(Block_Ptr);
57     Statement_Ptr bubble(Directive_Ptr);
58     Statement_Ptr bubble(At_Root_Block_Ptr);
59     Statement_Ptr bubble(Media_Block_Ptr);
60     Statement_Ptr bubble(Supports_Block_Ptr);
61
62     Block_Ptr debubble(Block_Ptr children, Statement_Ptr parent = 0);
63     Block_Ptr flatten(Block_Ptr);
64     bool bubblable(Statement_Ptr);
65
66     List_Ptr merge_media_queries(Media_Block_Ptr, Media_Block_Ptr);
67     Media_Query_Ptr merge_media_query(Media_Query_Ptr, Media_Query_Ptr);
68
69     template <typename U>
70     Statement_Ptr fallback(U x) { return fallback_impl(x); }
71
72     void append_block(Block_Ptr, Block_Ptr);
73   };
74
75 }
76
77 #endif