Sha256: 8dc430455b684fd1d76b3ed7d11b47ae7d18a92fbc5392f325fae3b1bb8be3b4
Contents?: true
Size: 1.42 KB
Versions: 4
Compression:
Stored size: 1.42 KB
Contents
#ifndef SASS_AST_DEF_MACROS_H #define SASS_AST_DEF_MACROS_H // Helper class to switch a flag and revert once we go out of scope template <class T> class LocalOption { private: T* var; // pointer to original variable T orig; // copy of the original option public: LocalOption(T& var) { this->var = &var; this->orig = var; } LocalOption(T& var, T orig) { this->var = &var; this->orig = var; *(this->var) = orig; } ~LocalOption() { *(this->var) = this->orig; } }; #define LOCAL_FLAG(name,opt) LocalOption<bool> flag_##name(name, opt) #define ATTACH_OPERATIONS()\ virtual void perform(Operation<void>* op) { (*op)(this); }\ virtual AST_Node* perform(Operation<AST_Node*>* op) { return (*op)(this); }\ virtual Statement* perform(Operation<Statement*>* op) { return (*op)(this); }\ virtual Expression* perform(Operation<Expression*>* op) { return (*op)(this); }\ virtual Selector* perform(Operation<Selector*>* op) { return (*op)(this); }\ virtual std::string perform(Operation<std::string>* op) { return (*op)(this); }\ virtual union Sass_Value* perform(Operation<union Sass_Value*>* op) { return (*op)(this); }\ virtual Value* perform(Operation<Value*>* op) { return (*op)(this); } #define ADD_PROPERTY(type, name)\ protected:\ type name##_;\ public:\ type name() const { return name##_; }\ type name(type name##__) { return name##_ = name##__; }\ private: #endif
Version data entries
4 entries across 4 versions & 1 rubygems