diff options
Diffstat (limited to 'src/debug/simple-event.h')
| -rw-r--r-- | src/debug/simple-event.h | 87 |
1 files changed, 84 insertions, 3 deletions
diff --git a/src/debug/simple-event.h b/src/debug/simple-event.h index 3695eaa6a..cb4e85016 100644 --- a/src/debug/simple-event.h +++ b/src/debug/simple-event.h @@ -12,6 +12,8 @@ #ifndef SEEN_INKSCAPE_DEBUG_SIMPLE_EVENT_H #define SEEN_INKSCAPE_DEBUG_SIMPLE_EVENT_H +#include <vector> +#include "gc-alloc.h" #include "debug/event.h" namespace Inkscape { @@ -21,17 +23,96 @@ namespace Debug { template <Event::Category C=Event::OTHER> class SimpleEvent : public Event { public: - SimpleEvent(Util::ptr_shared<char> name) : _name(name) {} SimpleEvent(char const *name) : _name(Util::share_string(name)) {} static Category category() { return C; } Util::ptr_shared<char> name() const { return _name; } - unsigned propertyCount() const { return 0; } - PropertyPair property(unsigned property) const { return PropertyPair(); } + unsigned propertyCount() const { return _properties.size(); } + PropertyPair property(unsigned property) const { + return _properties[property]; + } + +protected: + SimpleEvent(char const *name, + char const *attr0, char const *value0) + : _name(Util::share_string(name)) + { + _addProperty(attr0, value0); + } + + SimpleEvent(char const *name, + char const *attr0, char const *value0, + char const *attr1, char const *value1) + : _name(Util::share_string(name)) + { + _addProperty(attr0, value0); + _addProperty(attr1, value1); + } + + SimpleEvent(char const *name, + char const *attr0, char const *value0, + char const *attr1, char const *value1, + char const *attr2, char const *value2) + : _name(Util::share_string(name)) + { + _addProperty(attr0, value0); + _addProperty(attr1, value1); + _addProperty(attr2, value2); + } + + SimpleEvent(char const *name, + char const *attr0, char const *value0, + char const *attr1, char const *value1, + char const *attr2, char const *value2, + char const *attr3, char const *value3) + : _name(Util::share_string(name)) + { + _addProperty(attr0, value0); + _addProperty(attr1, value1); + _addProperty(attr2, value2); + _addProperty(attr3, value3); + } + + SimpleEvent(char const *name, + char const *attr0, char const *value0, + char const *attr1, char const *value1, + char const *attr2, char const *value2, + char const *attr3, char const *value3, + char const *attr4, char const *value4) + : _name(Util::share_string(name)) + { + _addProperty(attr0, value0); + _addProperty(attr1, value1); + _addProperty(attr2, value2); + _addProperty(attr3, value3); + _addProperty(attr4, value4); + } + + SimpleEvent(char const *name, + char const *attr0, char const *value0, + char const *attr1, char const *value1, + char const *attr2, char const *value2, + char const *attr3, char const *value3, + char const *attr4, char const *value4, + char const *attr5, char const *value5) + : _name(Util::share_string(name)) + { + _addProperty(attr0, value0); + _addProperty(attr1, value1); + _addProperty(attr2, value2); + _addProperty(attr3, value3); + _addProperty(attr4, value4); + _addProperty(attr5, value5); + } + + void _addProperty(char const *name, char const *value) { + _properties.push_back(PropertyPair(name, value)); + } private: Util::ptr_shared<char> _name; + std::vector<PropertyPair, GC::Alloc<PropertyPair, GC::AUTO> > _properties; }; } |
