summaryrefslogtreecommitdiffstats
path: root/src/debug/simple-event.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/debug/simple-event.h')
-rw-r--r--src/debug/simple-event.h87
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;
};
}