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*, Cssize> { |
14 | |
15 | Backtraces& traces; |
16 | BlockStack block_stack; |
17 | sass::vector<Statement*> p_stack; |
18 | |
19 | public: |
20 | Cssize(Context&); |
21 | ~Cssize() { } |
22 | |
23 | Block* operator()(Block*); |
24 | Statement* operator()(StyleRule*); |
25 | // Statement* operator()(Bubble*); |
26 | Statement* operator()(CssMediaRule*); |
27 | Statement* operator()(SupportsRule*); |
28 | Statement* operator()(AtRootRule*); |
29 | Statement* operator()(AtRule*); |
30 | Statement* operator()(Keyframe_Rule*); |
31 | Statement* operator()(Trace*); |
32 | Statement* operator()(Declaration*); |
33 | // Statement* operator()(Assignment*); |
34 | // Statement* operator()(Import*); |
35 | // Statement* operator()(Import_Stub*); |
36 | // Statement* operator()(WarningRule*); |
37 | // Statement* operator()(Error*); |
38 | // Statement* operator()(Comment*); |
39 | // Statement* operator()(If*); |
40 | // Statement* operator()(ForRule*); |
41 | // Statement* operator()(EachRule*); |
42 | // Statement* operator()(WhileRule*); |
43 | // Statement* operator()(Return*); |
44 | // Statement* operator()(ExtendRule*); |
45 | // Statement* operator()(Definition*); |
46 | // Statement* operator()(Mixin_Call*); |
47 | // Statement* operator()(Content*); |
48 | Statement* operator()(Null*); |
49 | |
50 | Statement* parent(); |
51 | sass::vector<std::pair<bool, Block_Obj>> slice_by_bubble(Block*); |
52 | Statement* bubble(AtRule*); |
53 | Statement* bubble(AtRootRule*); |
54 | Statement* bubble(CssMediaRule*); |
55 | Statement* bubble(SupportsRule*); |
56 | |
57 | Block* debubble(Block* children, Statement* parent = 0); |
58 | Block* flatten(const Block*); |
59 | bool bubblable(Statement*); |
60 | |
61 | // generic fallback |
62 | template <typename U> |
63 | Statement* fallback(U x) |
64 | { return Cast<Statement>(x); } |
65 | |
66 | void append_block(Block*, Block*); |
67 | }; |
68 | |
69 | } |
70 | |
71 | #endif |
72 |