From 3e1740c0faeaac588ff5d3aaafe461f74ebcc7e2 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 21 Aug 2012 02:31:16 +0200 Subject: Added "virtual pad" to SPString. (bzr r11608.1.33) --- src/sp-string.cpp | 55 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 43 insertions(+), 12 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 3512aa45a..45bf98ea6 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -84,35 +84,53 @@ sp_string_class_init(SPStringClass *classname) sp_object_class->update = sp_string_update; } +CString::CString(SPString* str) : CObject(str) { + this->spstring = str; +} + +CString::~CString() { +} + static void sp_string_init(SPString *string) { + string->cstring = new CString(string); + string->cobject = string->cstring; + new (&string->string) Glib::ustring(); } -static void -sp_string_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr) -{ +void CString::onBuild(SPDocument *doc, Inkscape::XML::Node *repr) { + SPString* object = this->spstring; sp_string_read_content(object); - if (((SPObjectClass *) string_parent_class)->build) - ((SPObjectClass *) string_parent_class)->build(object, doc, repr); + CObject::onBuild(doc, repr); } static void -sp_string_release(SPObject *object) +sp_string_build(SPObject *object, SPDocument *doc, Inkscape::XML::Node *repr) { + ((SPString*)object)->cstring->onBuild(doc, repr); +} + +void CString::onRelease() { + SPString* object = this->spstring; SPString *string = SP_STRING(object); string->string.~ustring(); - if (((SPObjectClass *) string_parent_class)->release) - ((SPObjectClass *) string_parent_class)->release(object); + CObject::onRelease(); } static void -sp_string_read_content(SPObject *object) +sp_string_release(SPObject *object) { + ((SPString*)object)->cstring->onRelease(); +} + +void CString::onReadContent() { + SPString* object = this->spstring; + SPString *string = SP_STRING(object); string->string.clear(); @@ -154,10 +172,17 @@ sp_string_read_content(SPObject *object) } static void -sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags) +sp_string_read_content(SPObject *object) { - if (((SPObjectClass *) string_parent_class)->update) - ((SPObjectClass *) string_parent_class)->update(object, ctx, flags); + ((SPString*)object)->cstring->onReadContent(); +} + +void CString::onUpdate(SPCtx *ctx, unsigned flags) { + // CPPIFY: This doesn't make no sense. + // CObject::onUpdate is pure. What was the idea behind these lines? +// if (((SPObjectClass *) string_parent_class)->update) +// ((SPObjectClass *) string_parent_class)->update(object, ctx, flags); +// CObject::onUpdate(ctx, flags); if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) { /* Parent style or we ourselves changed, so recalculate */ @@ -165,6 +190,12 @@ sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags) } } +static void +sp_string_update(SPObject *object, SPCtx *ctx, unsigned flags) +{ + ((SPString*)object)->cstring->onUpdate(ctx, flags); +} + /* Local Variables: -- cgit v1.2.3 From a0a8d020201e0e38a63d9aa3dce228d7d9e6fb35 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Thu, 14 Mar 2013 12:42:39 +0100 Subject: Various changes. (bzr r11608.1.48) --- src/sp-string.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 45bf98ea6..eb0b7a9f0 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -78,7 +78,7 @@ sp_string_class_init(SPStringClass *classname) string_parent_class = (SPObjectClass*)g_type_class_ref(SP_TYPE_OBJECT); - sp_object_class->build = sp_string_build; + //sp_object_class->build = sp_string_build; sp_object_class->release = sp_string_release; sp_object_class->read_content = sp_string_read_content; sp_object_class->update = sp_string_update; -- cgit v1.2.3 From 957c3e4b7909d42c5a13f1b1dd583f877fc32259 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:46:57 +0100 Subject: Removed function pointers from SPObject and subclasses. Added some missing virtual pads for classes that were hidden by preprocessor macros. (bzr r11608.1.55) --- src/sp-string.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index eb0b7a9f0..af38d6f8e 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -79,9 +79,9 @@ sp_string_class_init(SPStringClass *classname) string_parent_class = (SPObjectClass*)g_type_class_ref(SP_TYPE_OBJECT); //sp_object_class->build = sp_string_build; - sp_object_class->release = sp_string_release; - sp_object_class->read_content = sp_string_read_content; - sp_object_class->update = sp_string_update; +// sp_object_class->release = sp_string_release; +// sp_object_class->read_content = sp_string_read_content; +// sp_object_class->update = sp_string_update; } CString::CString(SPString* str) : CObject(str) { -- cgit v1.2.3 From 7df6616da5ea2debb86838366ddf746841549cdb Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 30 Mar 2013 00:56:13 +0100 Subject: Renamed virtual function names. (bzr r11608.1.57) --- src/sp-string.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index b66c1e9d1..81dc9576f 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -62,24 +62,24 @@ sp_string_init(SPString *string) new (&string->string) Glib::ustring(); } -void CString::onBuild(SPDocument *doc, Inkscape::XML::Node *repr) { +void CString::build(SPDocument *doc, Inkscape::XML::Node *repr) { SPString* object = this->spstring; - object->cstring->onReadContent(); + object->cstring->read_content(); - CObject::onBuild(doc, repr); + CObject::build(doc, repr); } -void CString::onRelease() { +void CString::release() { SPString* object = this->spstring; SPString *string = SP_STRING(object); string->string.~ustring(); - CObject::onRelease(); + CObject::release(); } -void CString::onReadContent() { +void CString::read_content() { SPString* object = this->spstring; SPString *string = SP_STRING(object); @@ -122,7 +122,7 @@ void CString::onReadContent() { object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } -void CString::onUpdate(SPCtx *ctx, unsigned flags) { +void CString::update(SPCtx *ctx, unsigned flags) { // CObject::onUpdate(ctx, flags); if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) { -- cgit v1.2.3 From a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Mon, 1 Apr 2013 00:07:00 +0200 Subject: Prepared exchange of casting macros. (bzr r11608.1.63) --- src/sp-string.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 81dc9576f..1625729b1 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -55,6 +55,7 @@ static void sp_string_init(SPString *string) { string->cstring = new CString(string); + string->typeHierarchy.insert(typeid(SPString)); delete string->cobject; string->cobject = string->cstring; -- cgit v1.2.3 From 69f3b6f1abb2bb422935d43262e1e99aab359954 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 01:41:30 +0200 Subject: Added constructors to SP classes. (bzr r11608.1.67) --- src/sp-string.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 1625729b1..332ccaf31 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -37,7 +37,7 @@ # SPSTRING #####################################################*/ -G_DEFINE_TYPE(SPString, sp_string, SP_TYPE_OBJECT); +G_DEFINE_TYPE(SPString, sp_string, G_TYPE_OBJECT); static void sp_string_class_init(SPStringClass *classname) @@ -51,9 +51,9 @@ CString::CString(SPString* str) : CObject(str) { CString::~CString() { } -static void -sp_string_init(SPString *string) -{ +SPString::SPString() : SPObject() { + SPString* string = this; + string->cstring = new CString(string); string->typeHierarchy.insert(typeid(SPString)); @@ -63,6 +63,12 @@ sp_string_init(SPString *string) new (&string->string) Glib::ustring(); } +static void +sp_string_init(SPString *string) +{ + new (string) SPString(); +} + void CString::build(SPDocument *doc, Inkscape::XML::Node *repr) { SPString* object = this->spstring; object->cstring->read_content(); -- cgit v1.2.3 From 0a7e23844c3a43203de3f5207aecb278e84ee739 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Tue, 2 Apr 2013 20:45:20 +0200 Subject: Added virtual destructor to SPObject. Switched to new factory. Replaced some casts. Inkscape seems stable, car.svgz renders correctly to png. (bzr r11608.1.70) --- src/sp-string.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 332ccaf31..29679b93a 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -32,6 +32,15 @@ #include "sp-string.h" #include "xml/repr.h" +#include "sp-factory.h" + +namespace { + SPObject* createString() { + return new SPString(); + } + + bool stringRegistered = SPFactory::instance().registerObject("string", createString); +} /*##################################################### # SPSTRING -- cgit v1.2.3 From 7b7e0294b0c06a8d3ec19b73486a91e12cf67adf Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sat, 6 Apr 2013 22:16:05 +0200 Subject: Merged more classes. (bzr r11608.1.84) --- src/sp-string.cpp | 48 +++++++++++++----------------------------------- 1 file changed, 13 insertions(+), 35 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 29679b93a..a5df0c726 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -46,47 +46,25 @@ namespace { # SPSTRING #####################################################*/ -G_DEFINE_TYPE(SPString, sp_string, G_TYPE_OBJECT); +SPString::SPString() : SPObject(), CObject(this) { + delete this->cobject; + this->cobject = this; -static void -sp_string_class_init(SPStringClass *classname) -{ + new (&this->string) Glib::ustring(); } -CString::CString(SPString* str) : CObject(str) { - this->spstring = str; +SPString::~SPString() { } -CString::~CString() { -} - -SPString::SPString() : SPObject() { - SPString* string = this; - - string->cstring = new CString(string); - string->typeHierarchy.insert(typeid(SPString)); - - delete string->cobject; - string->cobject = string->cstring; - - new (&string->string) Glib::ustring(); -} - -static void -sp_string_init(SPString *string) -{ - new (string) SPString(); -} - -void CString::build(SPDocument *doc, Inkscape::XML::Node *repr) { - SPString* object = this->spstring; - object->cstring->read_content(); +void SPString::build(SPDocument *doc, Inkscape::XML::Node *repr) { + SPString* object = this; + object->read_content(); CObject::build(doc, repr); } -void CString::release() { - SPString* object = this->spstring; +void SPString::release() { + SPString* object = this; SPString *string = SP_STRING(object); string->string.~ustring(); @@ -95,8 +73,8 @@ void CString::release() { } -void CString::read_content() { - SPString* object = this->spstring; +void SPString::read_content() { + SPString* object = this; SPString *string = SP_STRING(object); @@ -138,7 +116,7 @@ void CString::read_content() { object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); } -void CString::update(SPCtx *ctx, unsigned flags) { +void SPString::update(SPCtx *ctx, unsigned flags) { // CObject::onUpdate(ctx, flags); if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) { -- cgit v1.2.3 From 27e2102f96a5554bcd5310ec11435d155773b279 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Sun, 7 Apr 2013 18:28:22 +0200 Subject: Merge Object and subclasses. Merging of SP- and C-classes complete. (bzr r11608.1.86) --- src/sp-string.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index a5df0c726..67f86033e 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -46,10 +46,7 @@ namespace { # SPSTRING #####################################################*/ -SPString::SPString() : SPObject(), CObject(this) { - delete this->cobject; - this->cobject = this; - +SPString::SPString() : SPObject() { new (&this->string) Glib::ustring(); } @@ -60,7 +57,7 @@ void SPString::build(SPDocument *doc, Inkscape::XML::Node *repr) { SPString* object = this; object->read_content(); - CObject::build(doc, repr); + SPObject::build(doc, repr); } void SPString::release() { @@ -69,7 +66,7 @@ void SPString::release() { string->string.~ustring(); - CObject::release(); + SPObject::release(); } @@ -117,7 +114,7 @@ void SPString::read_content() { } void SPString::update(SPCtx *ctx, unsigned flags) { -// CObject::onUpdate(ctx, flags); +// SPObject::onUpdate(ctx, flags); if (flags & (SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_MODIFIED_FLAG)) { /* Parent style or we ourselves changed, so recalculate */ -- cgit v1.2.3 From 127543bae3c0a76770e197c7058a783dea18fe3e Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Wed, 31 Jul 2013 23:23:10 +0200 Subject: Removed placement news / explicit destructor calls. (bzr r11608.1.113) --- src/sp-string.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sp-string.cpp') diff --git a/src/sp-string.cpp b/src/sp-string.cpp index 690903ce8..a826d182d 100644 --- a/src/sp-string.cpp +++ b/src/sp-string.cpp @@ -47,7 +47,7 @@ namespace { #####################################################*/ SPString::SPString() : SPObject() { - new (&this->string) Glib::ustring(); + //new (&this->string) Glib::ustring(); } SPString::~SPString() { @@ -64,7 +64,7 @@ void SPString::release() { SPString* object = this; SPString *string = SP_STRING(object); - string->string.~ustring(); + //string->string.~ustring(); SPObject::release(); } -- cgit v1.2.3