diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-03-31 22:07:00 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-03-31 22:07:00 +0000 |
| commit | a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab (patch) | |
| tree | c2da53e170ecb9317e4fdf2e8ab3e884008eccaa /src | |
| parent | Added TypeInfo class. (diff) | |
| download | inkscape-a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab.tar.gz inkscape-a5d6e692d661f0bf7648e64e8fcb04588bb8f3ab.zip | |
Prepared exchange of casting macros.
(bzr r11608.1.63)
Diffstat (limited to 'src')
76 files changed, 97 insertions, 0 deletions
diff --git a/src/box3d-side.cpp b/src/box3d-side.cpp index c2672d89a..a04fffa86 100644 --- a/src/box3d-side.cpp +++ b/src/box3d-side.cpp @@ -45,6 +45,7 @@ static void box3d_side_init (Box3DSide * side) { side->cbox3dside = new CBox3DSide(side); + side->typeHierarchy.insert(typeid(Box3DSide)); delete side->cpolygon; side->cpolygon = side->cbox3dside; diff --git a/src/box3d.cpp b/src/box3d.cpp index a7e6b0538..f44f1bde3 100644 --- a/src/box3d.cpp +++ b/src/box3d.cpp @@ -60,6 +60,7 @@ static void box3d_init(SPBox3D *box) { box->cbox3d = new CBox3D(box); + box->typeHierarchy.insert(typeid(SPBox3D)); delete box->cgroup; box->cgroup = box->cbox3d; diff --git a/src/color-profile.cpp b/src/color-profile.cpp index a2810d22c..ae647944b 100644 --- a/src/color-profile.cpp +++ b/src/color-profile.cpp @@ -234,6 +234,7 @@ CColorProfile::~CColorProfile() { void ColorProfile::init( ColorProfile *cprof ) { cprof->ccolorprofile = new CColorProfile(cprof); + cprof->typeHierarchy.insert(typeid(ColorProfile)); delete cprof->cobject; cprof->cobject = cprof->ccolorprofile; diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp index b0704e23d..06678c826 100644 --- a/src/filters/blend.cpp +++ b/src/filters/blend.cpp @@ -49,6 +49,7 @@ static void sp_feBlend_init(SPFeBlend *feBlend) { feBlend->cfeblend = new CFeBlend(feBlend); + feBlend->typeHierarchy.insert(typeid(SPFeBlend)); delete feBlend->cfilterprimitive; feBlend->cfilterprimitive = feBlend->cfeblend; diff --git a/src/filters/colormatrix.cpp b/src/filters/colormatrix.cpp index d4e65bdc1..8dabf90fc 100644 --- a/src/filters/colormatrix.cpp +++ b/src/filters/colormatrix.cpp @@ -48,6 +48,7 @@ static void sp_feColorMatrix_init(SPFeColorMatrix *feColorMatrix) { feColorMatrix->cfecolormatrix = new CFeColorMatrix(feColorMatrix); + feColorMatrix->typeHierarchy.insert(typeid(SPFeColorMatrix)); delete feColorMatrix->cfilterprimitive; feColorMatrix->cfilterprimitive = feColorMatrix->cfecolormatrix; diff --git a/src/filters/componenttransfer-funcnode.cpp b/src/filters/componenttransfer-funcnode.cpp index f1015eced..6d8f4bc66 100644 --- a/src/filters/componenttransfer-funcnode.cpp +++ b/src/filters/componenttransfer-funcnode.cpp @@ -140,6 +140,7 @@ static void sp_fefuncnode_init(SPFeFuncNode *fefuncnode) { fefuncnode->cfefuncnode = new CFeFuncNode(fefuncnode); + fefuncnode->typeHierarchy.insert(typeid(SPFeFuncNode)); delete fefuncnode->cobject; fefuncnode->cobject = fefuncnode->cfefuncnode; diff --git a/src/filters/componenttransfer.cpp b/src/filters/componenttransfer.cpp index d94198506..6ab1e5d12 100644 --- a/src/filters/componenttransfer.cpp +++ b/src/filters/componenttransfer.cpp @@ -46,6 +46,7 @@ static void sp_feComponentTransfer_init(SPFeComponentTransfer *feComponentTransfer) { feComponentTransfer->cfecomponenttransfer = new CFeComponentTransfer(feComponentTransfer); + feComponentTransfer->typeHierarchy.insert(typeid(SPFeComponentTransfer)); delete feComponentTransfer->cfilterprimitive; feComponentTransfer->cfilterprimitive = feComponentTransfer->cfecomponenttransfer; diff --git a/src/filters/composite.cpp b/src/filters/composite.cpp index 1d065da77..e09b92d15 100644 --- a/src/filters/composite.cpp +++ b/src/filters/composite.cpp @@ -44,6 +44,7 @@ static void sp_feComposite_init(SPFeComposite *feComposite) { feComposite->cfecomposite = new CFeComposite(feComposite); + feComposite->typeHierarchy.insert(typeid(SPFeComposite)); delete feComposite->cfilterprimitive; feComposite->cfilterprimitive = feComposite->cfecomposite; diff --git a/src/filters/convolvematrix.cpp b/src/filters/convolvematrix.cpp index a25c4621e..b3db5fa8c 100644 --- a/src/filters/convolvematrix.cpp +++ b/src/filters/convolvematrix.cpp @@ -47,6 +47,7 @@ static void sp_feConvolveMatrix_init(SPFeConvolveMatrix *feConvolveMatrix) { feConvolveMatrix->cfeconvolvematrix = new CFeConvolveMatrix(feConvolveMatrix); + feConvolveMatrix->typeHierarchy.insert(typeid(SPFeConvolveMatrix)); delete feConvolveMatrix->cfilterprimitive; feConvolveMatrix->cfilterprimitive = feConvolveMatrix->cfeconvolvematrix; diff --git a/src/filters/diffuselighting.cpp b/src/filters/diffuselighting.cpp index 621c36e1a..3c6268266 100644 --- a/src/filters/diffuselighting.cpp +++ b/src/filters/diffuselighting.cpp @@ -54,6 +54,7 @@ static void sp_feDiffuseLighting_init(SPFeDiffuseLighting *feDiffuseLighting) { feDiffuseLighting->cfediffuselighting = new CFeDiffuseLighting(feDiffuseLighting); + feDiffuseLighting->typeHierarchy.insert(typeid(SPFeDiffuseLighting)); delete feDiffuseLighting->cfilterprimitive; feDiffuseLighting->cfilterprimitive = feDiffuseLighting->cfediffuselighting; diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp index 1f82efcef..2985647cf 100644 --- a/src/filters/displacementmap.cpp +++ b/src/filters/displacementmap.cpp @@ -44,6 +44,7 @@ static void sp_feDisplacementMap_init(SPFeDisplacementMap *feDisplacementMap) { feDisplacementMap->cfedisplacementmap = new CFeDisplacementMap(feDisplacementMap); + feDisplacementMap->typeHierarchy.insert(typeid(SPFeDisplacementMap)); delete feDisplacementMap->cfilterprimitive; feDisplacementMap->cfilterprimitive = feDisplacementMap->cfedisplacementmap; diff --git a/src/filters/distantlight.cpp b/src/filters/distantlight.cpp index 30cbb03fe..90f7dcf89 100644 --- a/src/filters/distantlight.cpp +++ b/src/filters/distantlight.cpp @@ -47,6 +47,7 @@ static void sp_fedistantlight_init(SPFeDistantLight *fedistantlight) { fedistantlight->cfedistantlight = new CFeDistantLight(fedistantlight); + fedistantlight->typeHierarchy.insert(typeid(SPFeDistantLight)); delete fedistantlight->cobject; fedistantlight->cobject = fedistantlight->cfedistantlight; diff --git a/src/filters/flood.cpp b/src/filters/flood.cpp index 7c780b5ca..58c1dd7e6 100644 --- a/src/filters/flood.cpp +++ b/src/filters/flood.cpp @@ -44,6 +44,7 @@ CFeFlood::~CFeFlood() { static void sp_feFlood_init(SPFeFlood *feFlood) { feFlood->cfeflood = new CFeFlood(feFlood); + feFlood->typeHierarchy.insert(typeid(SPFeFlood)); delete feFlood->cfilterprimitive; feFlood->cfilterprimitive = feFlood->cfeflood; diff --git a/src/filters/gaussian-blur.cpp b/src/filters/gaussian-blur.cpp index 90bdb4780..61f7dfdc3 100644 --- a/src/filters/gaussian-blur.cpp +++ b/src/filters/gaussian-blur.cpp @@ -49,6 +49,7 @@ static void sp_gaussianBlur_init(SPGaussianBlur *gaussianBlur) { gaussianBlur->cgaussianblur = new CGaussianBlur(gaussianBlur); + gaussianBlur->typeHierarchy.insert(typeid(SPGaussianBlur)); delete gaussianBlur->cfilterprimitive; gaussianBlur->cfilterprimitive = gaussianBlur->cgaussianblur; diff --git a/src/filters/image.cpp b/src/filters/image.cpp index aeae90471..840f51eed 100644 --- a/src/filters/image.cpp +++ b/src/filters/image.cpp @@ -46,6 +46,7 @@ CFeImage::~CFeImage() { static void sp_feImage_init(SPFeImage *feImage) { feImage->cfeimage = new CFeImage(feImage); + feImage->typeHierarchy.insert(typeid(SPFeImage)); delete feImage->cfilterprimitive; feImage->cfilterprimitive = feImage->cfeimage; diff --git a/src/filters/merge.cpp b/src/filters/merge.cpp index b3e87f1a4..b49ad4850 100644 --- a/src/filters/merge.cpp +++ b/src/filters/merge.cpp @@ -43,6 +43,7 @@ static void sp_feMerge_init(SPFeMerge *feMerge) { feMerge->cfemerge = new CFeMerge(feMerge); + feMerge->typeHierarchy.insert(typeid(SPFeMerge)); delete feMerge->cfilterprimitive; feMerge->cfilterprimitive = feMerge->cfemerge; diff --git a/src/filters/mergenode.cpp b/src/filters/mergenode.cpp index 4f9524c91..c91e69019 100644 --- a/src/filters/mergenode.cpp +++ b/src/filters/mergenode.cpp @@ -41,6 +41,7 @@ static void sp_feMergeNode_init(SPFeMergeNode *feMergeNode) { feMergeNode->cfemergenode = new CFeMergeNode(feMergeNode); + feMergeNode->typeHierarchy.insert(typeid(SPFeMergeNode)); delete feMergeNode->cobject; feMergeNode->cobject = feMergeNode->cfemergenode; diff --git a/src/filters/morphology.cpp b/src/filters/morphology.cpp index fb58b5fcf..e35406833 100644 --- a/src/filters/morphology.cpp +++ b/src/filters/morphology.cpp @@ -45,6 +45,7 @@ static void sp_feMorphology_init(SPFeMorphology *feMorphology) { feMorphology->cfemorphology = new CFeMorphology(feMorphology); + feMorphology->typeHierarchy.insert(typeid(SPFeMorphology)); delete feMorphology->cfilterprimitive; feMorphology->cfilterprimitive = feMorphology->cfemorphology; diff --git a/src/filters/offset.cpp b/src/filters/offset.cpp index cc1eb42fa..542bfb244 100644 --- a/src/filters/offset.cpp +++ b/src/filters/offset.cpp @@ -44,6 +44,7 @@ static void sp_feOffset_init(SPFeOffset *feOffset) { feOffset->cfeoffset = new CFeOffset(feOffset); + feOffset->typeHierarchy.insert(typeid(SPFeOffset)); delete feOffset->cfilterprimitive; feOffset->cfilterprimitive = feOffset->cfeoffset; diff --git a/src/filters/pointlight.cpp b/src/filters/pointlight.cpp index 718f9813c..e39c4811c 100644 --- a/src/filters/pointlight.cpp +++ b/src/filters/pointlight.cpp @@ -47,6 +47,7 @@ static void sp_fepointlight_init(SPFePointLight *fepointlight) { fepointlight->cfepointlight = new CFePointLight(fepointlight); + fepointlight->typeHierarchy.insert(typeid(SPFePointLight)); delete fepointlight->cobject; fepointlight->cobject = fepointlight->cfepointlight; diff --git a/src/filters/specularlighting.cpp b/src/filters/specularlighting.cpp index 4f4b4e2e2..97c905d51 100644 --- a/src/filters/specularlighting.cpp +++ b/src/filters/specularlighting.cpp @@ -54,6 +54,7 @@ static void sp_feSpecularLighting_init(SPFeSpecularLighting *feSpecularLighting) { feSpecularLighting->cfespecularlighting = new CFeSpecularLighting(feSpecularLighting); + feSpecularLighting->typeHierarchy.insert(typeid(SPFeSpecularLighting)); delete feSpecularLighting->cfilterprimitive; feSpecularLighting->cfilterprimitive = feSpecularLighting->cfespecularlighting; diff --git a/src/filters/spotlight.cpp b/src/filters/spotlight.cpp index b56265c54..cb6dc17e7 100644 --- a/src/filters/spotlight.cpp +++ b/src/filters/spotlight.cpp @@ -47,6 +47,7 @@ static void sp_fespotlight_init(SPFeSpotLight *fespotlight) { fespotlight->cfespotlight = new CFeSpotLight(fespotlight); + fespotlight->typeHierarchy.insert(typeid(SPFeSpotLight)); delete fespotlight->cobject; fespotlight->cobject = fespotlight->cfespotlight; diff --git a/src/filters/tile.cpp b/src/filters/tile.cpp index 436f9cd0b..31e2342c3 100644 --- a/src/filters/tile.cpp +++ b/src/filters/tile.cpp @@ -41,6 +41,7 @@ static void sp_feTile_init(SPFeTile *feTile) { feTile->cfetile = new CFeTile(feTile); + feTile->typeHierarchy.insert(typeid(SPFeTile)); delete feTile->cfilterprimitive; feTile->cfilterprimitive = feTile->cfetile; diff --git a/src/filters/turbulence.cpp b/src/filters/turbulence.cpp index 759fb6c23..74194ba24 100644 --- a/src/filters/turbulence.cpp +++ b/src/filters/turbulence.cpp @@ -47,6 +47,7 @@ static void sp_feTurbulence_init(SPFeTurbulence *feTurbulence) { feTurbulence->cfeturbulence = new CFeTurbulence(feTurbulence); + feTurbulence->typeHierarchy.insert(typeid(SPFeTurbulence)); delete feTurbulence->cfilterprimitive; feTurbulence->cfilterprimitive = feTurbulence->cfeturbulence; diff --git a/src/live_effects/lpeobject.cpp b/src/live_effects/lpeobject.cpp index 93f038473..d404b9743 100644 --- a/src/live_effects/lpeobject.cpp +++ b/src/live_effects/lpeobject.cpp @@ -85,6 +85,7 @@ LivePathEffectObject::livepatheffect_init(LivePathEffectObject *lpeobj) #endif lpeobj->clivepatheffectobject = new CLivePathEffectObject(lpeobj); + lpeobj->typeHierarchy.insert(typeid(LivePathEffectObject)); delete lpeobj->cobject; lpeobj->cobject = lpeobj->clivepatheffectobject; diff --git a/src/marker.cpp b/src/marker.cpp index f27715d92..adf89b0be 100644 --- a/src/marker.cpp +++ b/src/marker.cpp @@ -67,6 +67,7 @@ static void sp_marker_init (SPMarker *marker) { marker->cmarker = new CMarker(marker); + marker->typeHierarchy.insert(typeid(SPMarker)); delete marker->cgroup; marker->cgroup = marker->cmarker; diff --git a/src/persp3d.cpp b/src/persp3d.cpp index b6012f038..50ecd6522 100644 --- a/src/persp3d.cpp +++ b/src/persp3d.cpp @@ -76,6 +76,7 @@ static void persp3d_init(Persp3D *persp) { persp->cpersp3d = new CPersp3D(persp); + persp->typeHierarchy.insert(typeid(Persp3D)); delete persp->cobject; persp->cobject = persp->cpersp3d; diff --git a/src/sp-anchor.cpp b/src/sp-anchor.cpp index 846bf3c66..2c955419f 100644 --- a/src/sp-anchor.cpp +++ b/src/sp-anchor.cpp @@ -41,6 +41,7 @@ CAnchor::~CAnchor() { static void sp_anchor_init(SPAnchor *anchor) { anchor->canchor = new CAnchor(anchor); + anchor->typeHierarchy.insert(typeid(SPAnchor)); delete anchor->cgroup; anchor->cgroup = anchor->canchor; diff --git a/src/sp-clippath.cpp b/src/sp-clippath.cpp index 18ea91cc2..f4503386c 100644 --- a/src/sp-clippath.cpp +++ b/src/sp-clippath.cpp @@ -58,6 +58,7 @@ static void sp_clippath_init(SPClipPath *cp) { cp->cclippath = new CClipPath(cp); + cp->typeHierarchy.insert(typeid(SPClipPath)); delete cp->cobjectgroup; cp->cobjectgroup = cp->cclippath; diff --git a/src/sp-defs.cpp b/src/sp-defs.cpp index ef3c7182b..0a8bdb3cb 100644 --- a/src/sp-defs.cpp +++ b/src/sp-defs.cpp @@ -33,6 +33,7 @@ static void sp_defs_init(SPDefs* defs) { defs->cdefs = new CDefs(defs); + defs->typeHierarchy.insert(typeid(SPDefs)); delete defs->cobject; defs->cobject = defs->cdefs; diff --git a/src/sp-desc.cpp b/src/sp-desc.cpp index 41619eb87..d4836f86a 100644 --- a/src/sp-desc.cpp +++ b/src/sp-desc.cpp @@ -34,6 +34,7 @@ CDesc::~CDesc() { static void sp_desc_init(SPDesc *desc) { desc->cdesc = new CDesc(desc); + desc->typeHierarchy.insert(typeid(SPDesc)); delete desc->cobject; desc->cobject = desc->cdesc; diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp index 29f7f0397..ac0351a5e 100644 --- a/src/sp-ellipse.cpp +++ b/src/sp-ellipse.cpp @@ -83,6 +83,7 @@ static void sp_genericellipse_init(SPGenericEllipse *ellipse) { ellipse->cgenericEllipse = new CGenericEllipse(ellipse); + ellipse->typeHierarchy.insert(typeid(SPGenericEllipse)); delete ellipse->cshape; ellipse->cshape = ellipse->cgenericEllipse; @@ -360,6 +361,7 @@ static void sp_ellipse_init(SPEllipse *ellipse) { ellipse->cellipse = new CEllipse(ellipse); + ellipse->typeHierarchy.insert(typeid(SPEllipse)); delete ellipse->cgenericEllipse; ellipse->cgenericEllipse = ellipse->cellipse; @@ -472,6 +474,7 @@ static void sp_circle_init(SPCircle *circle) { circle->ccircle = new CCircle(circle); + circle->typeHierarchy.insert(typeid(SPCircle)); delete circle->cgenericEllipse; circle->cgenericEllipse = circle->ccircle; @@ -559,6 +562,7 @@ static void sp_arc_init(SPArc *arc) { arc->carc = new CArc(arc); + arc->typeHierarchy.insert(typeid(SPArc)); delete arc->cgenericEllipse; arc->cgenericEllipse = arc->carc; diff --git a/src/sp-filter-primitive.cpp b/src/sp-filter-primitive.cpp index 34f028518..d788b4314 100644 --- a/src/sp-filter-primitive.cpp +++ b/src/sp-filter-primitive.cpp @@ -75,6 +75,7 @@ void CFilterPrimitive::build_renderer(Inkscape::Filters::Filter* filter) { static void sp_filter_primitive_init(SPFilterPrimitive *filter_primitive) { filter_primitive->cfilterprimitive = new CFilterPrimitive(filter_primitive); + filter_primitive->typeHierarchy.insert(typeid(SPFilterPrimitive)); delete filter_primitive->cobject; filter_primitive->cobject = filter_primitive->cfilterprimitive; diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp index 0f9d47478..67fdd1ed9 100644 --- a/src/sp-filter.cpp +++ b/src/sp-filter.cpp @@ -59,6 +59,7 @@ static void sp_filter_init(SPFilter *filter) { filter->cfilter = new CFilter(filter); + filter->typeHierarchy.insert(typeid(SPFilter)); delete filter->cobject; filter->cobject = filter->cfilter; diff --git a/src/sp-flowdiv.cpp b/src/sp-flowdiv.cpp index 90c0e8795..ee387e88f 100644 --- a/src/sp-flowdiv.cpp +++ b/src/sp-flowdiv.cpp @@ -36,6 +36,7 @@ CFlowdiv::~CFlowdiv() { static void sp_flowdiv_init(SPFlowdiv *group) { group->cflowdiv = new CFlowdiv(group); + group->typeHierarchy.insert(typeid(SPFlowdiv)); delete group->citem; group->citem = group->cflowdiv; @@ -185,6 +186,7 @@ CFlowtspan::~CFlowtspan() { static void sp_flowtspan_init(SPFlowtspan *group) { group->cflowtspan = new CFlowtspan(group); + group->typeHierarchy.insert(typeid(SPFlowtspan)); delete group->citem; group->citem = group->cflowtspan; @@ -333,6 +335,7 @@ CFlowpara::~CFlowpara() { static void sp_flowpara_init (SPFlowpara *group) { group->cflowpara = new CFlowpara(group); + group->typeHierarchy.insert(typeid(SPFlowpara)); delete group->citem; group->citem = group->cflowpara; @@ -479,6 +482,7 @@ CFlowline::~CFlowline() { static void sp_flowline_init(SPFlowline *group) { group->cflowline = new CFlowline(group); + group->typeHierarchy.insert(typeid(SPFlowline)); delete group->cobject; group->cobject = group->cflowline; @@ -532,6 +536,7 @@ CFlowregionbreak::~CFlowregionbreak() { static void sp_flowregionbreak_init(SPFlowregionbreak *group) { group->cflowregionbreak = new CFlowregionbreak(group); + group->typeHierarchy.insert(typeid(SPFlowregionbreak)); delete group->cobject; group->cobject = group->cflowregionbreak; diff --git a/src/sp-flowregion.cpp b/src/sp-flowregion.cpp index da30db7d3..3c4bc84a1 100644 --- a/src/sp-flowregion.cpp +++ b/src/sp-flowregion.cpp @@ -54,6 +54,7 @@ static void sp_flowregion_init (SPFlowregion *group) { group->cflowregion = new CFlowregion(group); + group->typeHierarchy.insert(typeid(SPFlowregion)); delete group->citem; group->citem = group->cflowregion; @@ -235,6 +236,7 @@ static void sp_flowregionexclude_init (SPFlowregionExclude *group) { group->cflowregionexclude = new CFlowregionExclude(group); + group->typeHierarchy.insert(typeid(SPFlowregionExclude)); delete group->citem; group->citem = group->cflowregionexclude; diff --git a/src/sp-flowtext.cpp b/src/sp-flowtext.cpp index 6496d017d..7a695d68d 100644 --- a/src/sp-flowtext.cpp +++ b/src/sp-flowtext.cpp @@ -58,6 +58,7 @@ static void sp_flowtext_init(SPFlowtext *group) { group->cflowtext = new CFlowtext(group); + group->typeHierarchy.insert(typeid(SPFlowtext)); delete group->citem; group->citem = group->cflowtext; diff --git a/src/sp-font-face.cpp b/src/sp-font-face.cpp index 0da5f7e6a..5baff2751 100644 --- a/src/sp-font-face.cpp +++ b/src/sp-font-face.cpp @@ -275,6 +275,7 @@ CFontFace::~CFontFace() { static void sp_fontface_init(SPFontFace *face) { face->cfontface = new CFontFace(face); + face->typeHierarchy.insert(typeid(SPFontFace)); delete face->cobject; face->cobject = face->cfontface; diff --git a/src/sp-font.cpp b/src/sp-font.cpp index 0028310a6..0a7c63e33 100644 --- a/src/sp-font.cpp +++ b/src/sp-font.cpp @@ -46,6 +46,7 @@ CFont::~CFont() { static void sp_font_init(SPFont *font) { font->cfont = new CFont(font); + font->typeHierarchy.insert(typeid(SPFont)); delete font->cobject; font->cobject = font->cfont; diff --git a/src/sp-glyph-kerning.cpp b/src/sp-glyph-kerning.cpp index bdec3d089..c7dd90933 100644 --- a/src/sp-glyph-kerning.cpp +++ b/src/sp-glyph-kerning.cpp @@ -91,6 +91,7 @@ CGlyphKerning::~CGlyphKerning() { static void sp_glyph_kerning_init(SPGlyphKerning *glyph) { glyph->cglyphkerning = new CGlyphKerning(glyph); + glyph->typeHierarchy.insert(typeid(SPGlyphKerning)); delete glyph->cobject; glyph->cobject = glyph->cglyphkerning; diff --git a/src/sp-glyph.cpp b/src/sp-glyph.cpp index 332b720bc..1554fa08f 100644 --- a/src/sp-glyph.cpp +++ b/src/sp-glyph.cpp @@ -38,6 +38,7 @@ CGlyph::~CGlyph() { static void sp_glyph_init(SPGlyph *glyph) { glyph->cglyph = new CGlyph(glyph); + glyph->typeHierarchy.insert(typeid(SPGlyph)); delete glyph->cobject; glyph->cobject = glyph->cglyph; diff --git a/src/sp-gradient.cpp b/src/sp-gradient.cpp index b4bb9243e..889151cf8 100644 --- a/src/sp-gradient.cpp +++ b/src/sp-gradient.cpp @@ -91,6 +91,7 @@ static void sp_stop_init(SPStop *stop) { stop->cstop = new CStop(stop); + stop->typeHierarchy.insert(typeid(SPStop)); delete stop->cobject; stop->cobject = stop->cstop; @@ -364,6 +365,7 @@ CMeshRow::~CMeshRow() { static void sp_meshrow_init(SPMeshRow * meshrow) { meshrow->cmeshrow = new CMeshRow(meshrow); + meshrow->typeHierarchy.insert(typeid(SPMeshRow)); delete meshrow->cobject; meshrow->cobject = meshrow->cmeshrow; @@ -422,6 +424,7 @@ CMeshPatch::~CMeshPatch() { static void sp_meshpatch_init(SPMeshPatch * meshpatch) { meshpatch->cmeshpatch = new CMeshPatch(meshpatch); + meshpatch->typeHierarchy.insert(typeid(SPMeshPatch)); delete meshpatch->cobject; meshpatch->cobject = meshpatch->cmeshpatch; @@ -527,6 +530,7 @@ CGradient::~CGradient() { void CGradient::init(SPGradient *gr) { gr->cgradient = new CGradient(gr); + gr->typeHierarchy.insert(typeid(SPGradient)); delete gr->cpaintserver; gr->cpaintserver = gr->cgradient; @@ -1398,6 +1402,7 @@ CLinearGradient::~CLinearGradient() { static void sp_lineargradient_init(SPLinearGradient *lg) { lg->clineargradient = new CLinearGradient(lg); + lg->typeHierarchy.insert(typeid(SPLinearGradient)); delete lg->cgradient; lg->cgradient = lg->clineargradient; @@ -1525,6 +1530,7 @@ static void sp_radialgradient_init(SPRadialGradient *rg) { rg->cradialgradient = new CRadialGradient(rg); + rg->typeHierarchy.insert(typeid(SPRadialGradient)); delete rg->cgradient; rg->cgradient = rg->cradialgradient; @@ -1681,6 +1687,7 @@ static void sp_meshgradient_init(SPMeshGradient *mg) { mg->cmeshgradient = new CMeshGradient(mg); + mg->typeHierarchy.insert(typeid(SPMeshGradient)); delete mg->cgradient; mg->cgradient = mg->cmeshgradient; diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp index c25c44913..9083a6ef7 100644 --- a/src/sp-guide.cpp +++ b/src/sp-guide.cpp @@ -92,6 +92,7 @@ CGuide::~CGuide() { static void sp_guide_init(SPGuide *guide) { guide->cguide = new CGuide(guide); + guide->typeHierarchy.insert(typeid(SPGuide)); delete guide->cobject; guide->cobject = guide->cguide; diff --git a/src/sp-image.cpp b/src/sp-image.cpp index fa75915f9..ab3a1ac1b 100644 --- a/src/sp-image.cpp +++ b/src/sp-image.cpp @@ -515,6 +515,7 @@ CImage::~CImage() { static void sp_image_init( SPImage *image ) { image->cimage = new CImage(image); + image->typeHierarchy.insert(typeid(SPImage)); delete image->citem; image->citem = image->cimage; diff --git a/src/sp-item-group.cpp b/src/sp-item-group.cpp index 7a6e0c1ba..a95b347cf 100644 --- a/src/sp-item-group.cpp +++ b/src/sp-item-group.cpp @@ -78,6 +78,7 @@ static void sp_group_init (SPGroup *group) { group->cgroup = new CGroup(group); + group->typeHierarchy.insert(typeid(SPGroup)); delete group->clpeitem; group->clpeitem = group->cgroup; diff --git a/src/sp-item.cpp b/src/sp-item.cpp index ccc3e2313..5075bdcd3 100644 --- a/src/sp-item.cpp +++ b/src/sp-item.cpp @@ -103,6 +103,7 @@ static void sp_item_init(SPItem *item) { item->citem = new CItem(item); + item->typeHierarchy.insert(typeid(SPItem)); delete item->cobject; item->cobject = item->citem; diff --git a/src/sp-line.cpp b/src/sp-line.cpp index 71a9a78d6..588e4f375 100644 --- a/src/sp-line.cpp +++ b/src/sp-line.cpp @@ -43,6 +43,7 @@ static void sp_line_init(SPLine * line) { line->cline = new CLine(line); + line->typeHierarchy.insert(typeid(SPLine)); delete line->cshape; line->cshape = line->cline; diff --git a/src/sp-lpe-item.cpp b/src/sp-lpe-item.cpp index f20818a64..5001cb76e 100644 --- a/src/sp-lpe-item.cpp +++ b/src/sp-lpe-item.cpp @@ -71,6 +71,7 @@ static void sp_lpe_item_init(SPLPEItem *lpeitem) { lpeitem->clpeitem = new CLPEItem(lpeitem); + lpeitem->typeHierarchy.insert(typeid(SPLPEItem)); delete lpeitem->citem; lpeitem->citem = lpeitem->clpeitem; diff --git a/src/sp-mask.cpp b/src/sp-mask.cpp index e777ee154..8c7fbe53e 100644 --- a/src/sp-mask.cpp +++ b/src/sp-mask.cpp @@ -55,6 +55,7 @@ static void sp_mask_init (SPMask *mask) { mask->cmask = new CMask(mask); + mask->typeHierarchy.insert(typeid(SPMask)); delete mask->cobjectgroup; mask->cobjectgroup = mask->cmask; diff --git a/src/sp-metadata.cpp b/src/sp-metadata.cpp index d788ec48d..28bf1767b 100644 --- a/src/sp-metadata.cpp +++ b/src/sp-metadata.cpp @@ -51,6 +51,7 @@ static void sp_metadata_init (SPMetadata *metadata) { metadata->cmetadata = new CMetadata(metadata); + metadata->typeHierarchy.insert(typeid(SPMetadata)); delete metadata->cobject; metadata->cobject = metadata->cmetadata; diff --git a/src/sp-missing-glyph.cpp b/src/sp-missing-glyph.cpp index 227f4d802..b69c8f162 100644 --- a/src/sp-missing-glyph.cpp +++ b/src/sp-missing-glyph.cpp @@ -35,6 +35,7 @@ CMissingGlyph::~CMissingGlyph() { static void sp_missing_glyph_init(SPMissingGlyph *glyph) { glyph->cmissingglyph = new CMissingGlyph(glyph); + glyph->typeHierarchy.insert(typeid(SPMissingGlyph)); delete glyph->cobject; glyph->cobject = glyph->cmissingglyph; diff --git a/src/sp-namedview.cpp b/src/sp-namedview.cpp index 1771b0787..56e278b78 100644 --- a/src/sp-namedview.cpp +++ b/src/sp-namedview.cpp @@ -71,6 +71,7 @@ CNamedView::~CNamedView() { static void sp_namedview_init(SPNamedView *nv) { nv->cnamedview = new CNamedView(nv); + nv->typeHierarchy.insert(typeid(SPNamedView)); delete nv->cobjectgroup; nv->cobjectgroup = nv->cnamedview; diff --git a/src/sp-object-group.cpp b/src/sp-object-group.cpp index ad2210574..093d044c4 100644 --- a/src/sp-object-group.cpp +++ b/src/sp-object-group.cpp @@ -28,6 +28,7 @@ static void sp_objectgroup_init(SPObjectGroup * objectgroup) { objectgroup->cobjectgroup = new CObjectGroup(objectgroup); + objectgroup->typeHierarchy.insert(typeid(SPObjectGroup)); delete objectgroup->cobject; objectgroup->cobject = objectgroup->cobjectgroup; diff --git a/src/sp-object.cpp b/src/sp-object.cpp index 3984617bb..82f3f1c81 100644 --- a/src/sp-object.cpp +++ b/src/sp-object.cpp @@ -128,6 +128,9 @@ sp_object_init(SPObject *object) object->cobject = new CObject(object); + new (&object->typeHierarchy) std::set<TypeInfo>(); + object->typeHierarchy.insert(typeid(SPObject)); + object->hrefcount = 0; object->_total_hrefcount = 0; object->document = NULL; @@ -179,6 +182,7 @@ sp_object_finalize(GObject *object) { SPObject *spobject = (SPObject *)object; + spobject->typeHierarchy.~set(); delete spobject->cobject; g_free(spobject->_label); diff --git a/src/sp-object.h b/src/sp-object.h index b6162cc79..cd6dbc247 100644 --- a/src/sp-object.h +++ b/src/sp-object.h @@ -49,6 +49,9 @@ class SPObjectClass; #define SP_OBJECT_WRITE_EXT (1 << 1) #define SP_OBJECT_WRITE_ALL (1 << 2) +#include <set> +#include "type-info.h" + #include <glib-object.h> #include <stddef.h> #include <sigc++/connection.h> @@ -196,6 +199,7 @@ public: }; CObject* cobject; + std::set<TypeInfo> typeHierarchy; unsigned int cloned : 1; unsigned int uflags : 8; diff --git a/src/sp-offset.cpp b/src/sp-offset.cpp index d6ad5e426..511a0c4b1 100644 --- a/src/sp-offset.cpp +++ b/src/sp-offset.cpp @@ -113,6 +113,7 @@ static void sp_offset_init(SPOffset *offset) { offset->coffset = new COffset(offset); + offset->typeHierarchy.insert(typeid(SPOffset)); delete offset->cshape; offset->cshape = offset->coffset; diff --git a/src/sp-paint-server.cpp b/src/sp-paint-server.cpp index 75078f4ef..f75176f0e 100644 --- a/src/sp-paint-server.cpp +++ b/src/sp-paint-server.cpp @@ -47,6 +47,7 @@ static void sp_paint_server_init(SPPaintServer *ps) { ps->cpaintserver = new CPaintServer(ps); + ps->typeHierarchy.insert(typeid(SPPaintServer)); delete ps->cobject; ps->cobject = ps->cpaintserver; diff --git a/src/sp-path.cpp b/src/sp-path.cpp index cc469d027..43bf0a6a2 100644 --- a/src/sp-path.cpp +++ b/src/sp-path.cpp @@ -141,6 +141,7 @@ static void sp_path_init(SPPath *path) { path->cpath = new CPath(path); + path->typeHierarchy.insert(typeid(SPPath)); delete path->cshape; path->cshape = path->cpath; diff --git a/src/sp-pattern.cpp b/src/sp-pattern.cpp index 46e1978d3..f04ba3f0a 100644 --- a/src/sp-pattern.cpp +++ b/src/sp-pattern.cpp @@ -61,6 +61,7 @@ static void sp_pattern_init (SPPattern *pat) { pat->cpattern = new CPattern(pat); + pat->typeHierarchy.insert(typeid(SPPattern)); delete pat->cpaintserver; pat->cpaintserver = pat->cpattern; diff --git a/src/sp-polygon.cpp b/src/sp-polygon.cpp index b694c1755..7f9192839 100644 --- a/src/sp-polygon.cpp +++ b/src/sp-polygon.cpp @@ -41,6 +41,7 @@ CPolygon::~CPolygon() { static void sp_polygon_init(SPPolygon *polygon) { polygon->cpolygon = new CPolygon(polygon); + polygon->typeHierarchy.insert(typeid(SPPolygon)); delete polygon->cshape; polygon->cshape = polygon->cpolygon; diff --git a/src/sp-polyline.cpp b/src/sp-polyline.cpp index e8144d2a5..27d17d081 100644 --- a/src/sp-polyline.cpp +++ b/src/sp-polyline.cpp @@ -38,6 +38,7 @@ CPolyLine::~CPolyLine() { void sp_polyline_init(SPPolyLine * polyline) { polyline->cpolyline = new CPolyLine(polyline); + polyline->typeHierarchy.insert(typeid(SPPolyLine)); delete polyline->cshape; polyline->cshape = polyline->cpolyline; diff --git a/src/sp-rect.cpp b/src/sp-rect.cpp index 17a03ab19..7ab9854d4 100644 --- a/src/sp-rect.cpp +++ b/src/sp-rect.cpp @@ -49,6 +49,7 @@ static void sp_rect_init(SPRect *rect) { rect->crect = new CRect(rect); + rect->typeHierarchy.insert(typeid(SPRect)); delete rect->cshape; rect->cshape = rect->crect; diff --git a/src/sp-root.cpp b/src/sp-root.cpp index 715d4659e..1767c4cd2 100644 --- a/src/sp-root.cpp +++ b/src/sp-root.cpp @@ -54,6 +54,7 @@ CRoot::~CRoot() { static void sp_root_init(SPRoot *root) { root->croot = new CRoot(root); + root->typeHierarchy.insert(typeid(SPRoot)); delete root->cgroup; root->cgroup = root->croot; diff --git a/src/sp-script.cpp b/src/sp-script.cpp index 8190fe81c..6c2a029a0 100644 --- a/src/sp-script.cpp +++ b/src/sp-script.cpp @@ -32,6 +32,7 @@ CScript::~CScript() { static void sp_script_init(SPScript *script) { script->cscript = new CScript(script); + script->typeHierarchy.insert(typeid(SPScript)); delete script->cobject; script->cobject = script->cscript; diff --git a/src/sp-shape.cpp b/src/sp-shape.cpp index afaeb91a8..42b6ec6dd 100644 --- a/src/sp-shape.cpp +++ b/src/sp-shape.cpp @@ -83,6 +83,7 @@ static void sp_shape_init(SPShape *shape) { shape->cshape = new CShape(shape); + shape->typeHierarchy.insert(typeid(SPShape)); delete shape->clpeitem; shape->clpeitem = shape->cshape; diff --git a/src/sp-spiral.cpp b/src/sp-spiral.cpp index 348d9ca68..6c1deb4d5 100644 --- a/src/sp-spiral.cpp +++ b/src/sp-spiral.cpp @@ -51,6 +51,7 @@ static void sp_spiral_init (SPSpiral * spiral) { spiral->cspiral = new CSpiral(spiral); + spiral->typeHierarchy.insert(typeid(SPSpiral)); delete spiral->cshape; spiral->cshape = spiral->cspiral; diff --git a/src/sp-star.cpp b/src/sp-star.cpp index 7d22484cf..0b89ed10c 100644 --- a/src/sp-star.cpp +++ b/src/sp-star.cpp @@ -49,6 +49,7 @@ static void sp_star_init (SPStar * star) { star->cstar = new CStar(star); + star->typeHierarchy.insert(typeid(SPStar)); delete star->cpolygon; star->cpolygon = star->cstar; 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; diff --git a/src/sp-style-elem.cpp b/src/sp-style-elem.cpp index 65beaba07..5fc7f6377 100644 --- a/src/sp-style-elem.cpp +++ b/src/sp-style-elem.cpp @@ -25,6 +25,7 @@ static void sp_style_elem_init(SPStyleElem *style_elem) { style_elem->cstyleelem = new CStyleElem(style_elem); + style_elem->typeHierarchy.insert(typeid(SPStyleElem)); delete style_elem->cobject; style_elem->cobject = style_elem->cstyleelem; diff --git a/src/sp-switch.cpp b/src/sp-switch.cpp index f6c267f79..68f021fda 100644 --- a/src/sp-switch.cpp +++ b/src/sp-switch.cpp @@ -42,6 +42,7 @@ CSwitch::~CSwitch() { static void sp_switch_init (SPSwitch *sw) { sw->cswitch = new CSwitch(sw); + sw->typeHierarchy.insert(typeid(SPSwitch)); delete sw->cgroup; sw->cgroup = sw->cswitch; diff --git a/src/sp-symbol.cpp b/src/sp-symbol.cpp index 896e5b3a8..43d86c746 100644 --- a/src/sp-symbol.cpp +++ b/src/sp-symbol.cpp @@ -42,6 +42,7 @@ CSymbol::~CSymbol() { static void sp_symbol_init(SPSymbol *symbol) { symbol->csymbol = new CSymbol(symbol); + symbol->typeHierarchy.insert(typeid(SPSymbol)); delete symbol->cgroup; symbol->cgroup = symbol->csymbol; diff --git a/src/sp-text.cpp b/src/sp-text.cpp index 45f159b9d..8db9b5be3 100644 --- a/src/sp-text.cpp +++ b/src/sp-text.cpp @@ -79,6 +79,7 @@ static void sp_text_init (SPText *text) { text->ctext = new CText(text); + text->typeHierarchy.insert(typeid(SPText)); delete text->citem; text->citem = text->ctext; diff --git a/src/sp-title.cpp b/src/sp-title.cpp index 522901eaf..815f0e009 100644 --- a/src/sp-title.cpp +++ b/src/sp-title.cpp @@ -34,6 +34,7 @@ static void sp_title_init(SPTitle *desc) { desc->ctitle = new CTitle(desc); + desc->typeHierarchy.insert(typeid(SPTitle)); delete desc->cobject; desc->cobject = desc->ctitle; diff --git a/src/sp-tref.cpp b/src/sp-tref.cpp index 7d17f9d3b..6eee54450 100644 --- a/src/sp-tref.cpp +++ b/src/sp-tref.cpp @@ -77,6 +77,7 @@ static void sp_tref_init(SPTRef *tref) { tref->ctref = new CTRef(tref); + tref->typeHierarchy.insert(typeid(SPTRef)); delete tref->citem; tref->citem = tref->ctref; diff --git a/src/sp-tspan.cpp b/src/sp-tspan.cpp index fcbda7123..853966e46 100644 --- a/src/sp-tspan.cpp +++ b/src/sp-tspan.cpp @@ -65,6 +65,7 @@ static void sp_tspan_init(SPTSpan *tspan) { tspan->ctspan = new CTSpan(tspan); + tspan->typeHierarchy.insert(typeid(SPTSpan)); delete tspan->citem; tspan->citem = tspan->ctspan; @@ -267,6 +268,7 @@ static void sp_textpath_init(SPTextPath *textpath) { textpath->ctextpath = new CTextPath(textpath); + textpath->typeHierarchy.insert(typeid(SPTextPath)); delete textpath->citem; textpath->citem = textpath->ctextpath; diff --git a/src/sp-use.cpp b/src/sp-use.cpp index f3c478194..c195b34e9 100644 --- a/src/sp-use.cpp +++ b/src/sp-use.cpp @@ -67,6 +67,7 @@ static void sp_use_init(SPUse *use) { use->cuse = new CUse(use); + use->typeHierarchy.insert(typeid(SPUse)); delete use->citem; use->citem = use->cuse; |
