#ifndef SASS_AST_DEF_MACROS_H #define SASS_AST_DEF_MACROS_H #define ATTACH_OPERATIONS()\ virtual void perform(Operation* op) { (*op)(this); }\ virtual AST_Node* perform(Operation* op) { return (*op)(this); }\ virtual Statement* perform(Operation* op) { return (*op)(this); }\ virtual Expression* perform(Operation* op) { return (*op)(this); }\ virtual Selector* perform(Operation* op) { return (*op)(this); }\ virtual string perform(Operation* op) { return (*op)(this); }\ virtual Sass_Value* perform(Operation* 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