extend.hpp 938 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #define SASS_EXTEND
  2. #include <vector>
  3. #include <map>
  4. #include <set>
  5. #include <iostream>
  6. #ifndef SASS_AST
  7. #include "ast.hpp"
  8. #endif
  9. #ifndef SASS_OPERATION
  10. #include "operation.hpp"
  11. #endif
  12. #ifndef SASS_SUBSET_MAP
  13. #include "subset_map.hpp"
  14. #endif
  15. namespace Sass {
  16. using namespace std;
  17. struct Context;
  18. typedef Subset_Map<string, pair<Complex_Selector*, Compound_Selector*> > ExtensionSubsetMap;
  19. class Extend : public Operation_CRTP<void, Extend> {
  20. Context& ctx;
  21. ExtensionSubsetMap& subset_map;
  22. void fallback_impl(AST_Node* n) { };
  23. public:
  24. Extend(Context&, ExtensionSubsetMap&);
  25. virtual ~Extend() { }
  26. using Operation<void>::operator();
  27. void operator()(Block*);
  28. void operator()(Ruleset*);
  29. void operator()(Feature_Block*);
  30. void operator()(Media_Block*);
  31. void operator()(At_Rule*);
  32. template <typename U>
  33. void fallback(U x) { return fallback_impl(x); }
  34. };
  35. }