Code

make Debug::SimpleEvent more convenient
authormental <mental@users.sourceforge.net>
Sat, 29 Apr 2006 19:21:13 +0000 (19:21 +0000)
committermental <mental@users.sourceforge.net>
Sat, 29 Apr 2006 19:21:13 +0000 (19:21 +0000)
ChangeLog
src/debug/event.h
src/debug/logger.cpp
src/debug/simple-event.h

index f3fca5e6fcd9cc32359ebfd6c6cc8d61c4d78362..37e7d7fe7474a1f44f48a3550d571d0249444df2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2006-04-29  MenTaLguY  <mental@rydia.net>
+
+       * src/debug/simple-event.h: make Debug::SimpleEvent more convenient
+
 2006-04-29  MenTaLguY  <mental@rydia.net>
 
        * src/debug/logger.cpp:
index fdc50f225a00f9aad069fb2272344cf9af86e34a..54ac31476fe236143e727ce31025938112750010 100644 (file)
@@ -30,6 +30,7 @@ public:
         DOCUMENT,
         REFCOUNT,
         EXTENSION,
+        FINALIZERS,
         OTHER
     };
     enum { N_CATEGORIES=OTHER+1 };
index f28d1526b965e1d08b24b188212ed49a94259645..fc83e89df006878579182213364194d9f0f34534 100644 (file)
@@ -104,6 +104,7 @@ static void set_category_mask(bool * const mask, char const *filter) {
                 { "DOCUMENT", Event::DOCUMENT },
                 { "REFCOUNT", Event::REFCOUNT },
                 { "EXTENSION", Event::EXTENSION },
+                { "FINALIZERS", Event::FINALIZERS },
                 { "OTHER", Event::OTHER },
                 { NULL, Event::OTHER }
             };
index 3695eaa6a921edaaa405f42367c0a62d9c26f20a..cb4e85016c90ad9e86c558f88bf66c2d74f44507 100644 (file)
@@ -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;
 };
 
 }