[dia] Bug 611847 - breaks strict aliasing rules



commit 8db3966fff544cd6b4e2175a8b2bb2a7f1a5428f
Author: Hans Breuer <hans breuer org>
Date:   Sat Jul 31 20:01:05 2010 +0200

    Bug 611847 - breaks strict aliasing rules
    
    Such a little warning following a huge change. Basically all the struct
    vdx_* were unrelated, so casting between their pointers was breaking
    strict aliasing rules (as far as I've understood the issue).
    Now the tppe and children fields are not any longer the first two just
    by convention, but by including vdx_any in every other struct.
    Every access to common fields needed adaption, the code causing
    the aliasing warning did not. No more:
    
    vdx-import.c:400: warning: dereferencing pointer 'Any' does break
    strict-aliasing rules (etc.)
    
    To (not any longer) reproduce use gcc-4.4

 plug-ins/vdx/vdx-export.c  |  254 +++++++++---------
 plug-ins/vdx/vdx-import.c  |   34 ++--
 plug-ins/vdx/vdx-xml.c     |  652 ++++++++++++++++++++++----------------------
 plug-ins/vdx/visio-types.h |  246 ++++++-----------
 4 files changed, 552 insertions(+), 634 deletions(-)
---
diff --git a/plug-ins/vdx/vdx-export.c b/plug-ins/vdx/vdx-export.c
index f2380cf..fa21ee7 100644
--- a/plug-ins/vdx/vdx-export.c
+++ b/plug-ins/vdx/vdx-export.c
@@ -488,7 +488,7 @@ create_Line(VDXRenderer *renderer, Color *color, struct vdx_Line *Line,
 {
     /* A Line (colour etc) */
     memset(Line, 0, sizeof(*Line));
-    Line->type = vdx_types_Line;
+    Line->any.type = vdx_types_Line;
     switch (renderer->stylemode)
     {
     case LINESTYLE_DASHED:
@@ -528,7 +528,7 @@ create_Fill(VDXRenderer *renderer, Color *color, struct vdx_Fill *Fill)
 {
     /* A Fill (colour etc) */
     memset(Fill, 0, sizeof(*Fill));
-    Fill->type = vdx_types_Fill;
+    Fill->any.type = vdx_types_Fill;
     Fill->FillForegnd = *color;
     Fill->FillPattern = 1;      /* Solid fill */
 }
@@ -566,7 +566,7 @@ draw_line(DiaRenderer *self, Point *start, Point *end, Color *color)
     
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "Line.%d", Shape.ID);
@@ -577,7 +577,7 @@ draw_line(DiaRenderer *self, Point *start, Point *end, Color *color)
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(*start);
     b = visio_point(*end);
     XForm.PinX = a.x;           /* Start */
@@ -590,7 +590,7 @@ draw_line(DiaRenderer *self, Point *start, Point *end, Color *color)
 
     /* Lines must have an XForm1D as well */
     memset(&XForm1D, 0, sizeof(XForm1D));
-    XForm1D.type = vdx_types_XForm1D;
+    XForm1D.any.type = vdx_types_XForm1D;
     XForm1D.BeginX = a.x;
     XForm1D.BeginY = a.y;
     XForm1D.EndX = b.x;
@@ -599,17 +599,17 @@ draw_line(DiaRenderer *self, Point *start, Point *end, Color *color)
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
     Geom.NoFill = 1;
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     /* Two children - MoveTo(start) and LineTo(end) */
     memset(&MoveTo, 0, sizeof(MoveTo));
-    MoveTo.type = vdx_types_MoveTo;
+    MoveTo.any.type = vdx_types_MoveTo;
     MoveTo.IX = 1;
     MoveTo.X = 0;
     MoveTo.Y = 0;
 
     memset(&LineTo, 0, sizeof(LineTo));
-    LineTo.type = vdx_types_LineTo;
+    LineTo.any.type = vdx_types_LineTo;
     LineTo.IX = 2;
     LineTo.X = b.x-a.x; 
     LineTo.Y = b.y-a.y;
@@ -618,20 +618,20 @@ draw_line(DiaRenderer *self, Point *start, Point *end, Color *color)
     create_Line(renderer, color, &Line, 0, 0);
 
     /* Setup children */
-    Geom.children = g_slist_append(Geom.children, &MoveTo);
-    Geom.children = g_slist_append(Geom.children, &LineTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &MoveTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &LineTo);
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &XForm1D);
-    Shape.children = g_slist_append(Shape.children, &Line);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm1D);
+    Shape.any.children = g_slist_append(Shape.any.children, &Line);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
 }
 
 
@@ -668,7 +668,7 @@ static void draw_polyline(DiaRenderer *self, Point *points, int num_points,
     
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "PolyLine.%d", Shape.ID);
@@ -679,7 +679,7 @@ static void draw_polyline(DiaRenderer *self, Point *points, int num_points,
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(points[0]);
 
     /* Find width and height */
@@ -704,11 +704,11 @@ static void draw_polyline(DiaRenderer *self, Point *points, int num_points,
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
     Geom.NoFill = 1;
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     /* Multiple children - MoveTo(start) and LineTo(others) */
     memset(&MoveTo, 0, sizeof(MoveTo));
-    MoveTo.type = vdx_types_MoveTo;
+    MoveTo.any.type = vdx_types_MoveTo;
     MoveTo.IX = 1;
     MoveTo.X = 0;
     MoveTo.Y = 0;
@@ -716,7 +716,7 @@ static void draw_polyline(DiaRenderer *self, Point *points, int num_points,
     LineTo = g_new0(struct vdx_LineTo, num_points-1);
     for (i=0; i<num_points-1; i++)
     {
-        LineTo[i].type = vdx_types_LineTo;
+        LineTo[i].any.type = vdx_types_LineTo;
         LineTo[i].IX = i+2;
         b = visio_point(points[i+1]);
         LineTo[i].X = b.x-a.x; 
@@ -727,22 +727,22 @@ static void draw_polyline(DiaRenderer *self, Point *points, int num_points,
     create_Line(renderer, color, &Line, 0, 0);
 
     /* Setup children */
-    Geom.children = g_slist_append(Geom.children, &MoveTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &MoveTo);
     for (i=0; i<num_points-1; i++)
     {
-        Geom.children = g_slist_append(Geom.children, &LineTo[i]);
+        Geom.any.children = g_slist_append(Geom.any.children, &LineTo[i]);
     }
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Line);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Line);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
     g_free(LineTo);
 }
 
@@ -799,7 +799,7 @@ static void fill_polygon(DiaRenderer *self,
     
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "FillPolygon.%d", Shape.ID);
@@ -810,7 +810,7 @@ static void fill_polygon(DiaRenderer *self,
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(points[0]);
 
     /* Find width and height */
@@ -834,11 +834,11 @@ static void fill_polygon(DiaRenderer *self,
 
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     /* Multiple children - MoveTo(start) and LineTo(others) */
     memset(&MoveTo, 0, sizeof(MoveTo));
-    MoveTo.type = vdx_types_MoveTo;
+    MoveTo.any.type = vdx_types_MoveTo;
     MoveTo.IX = 1;
     MoveTo.X = 0;
     MoveTo.Y = 0;
@@ -846,7 +846,7 @@ static void fill_polygon(DiaRenderer *self,
     LineTo = g_new0(struct vdx_LineTo, num_points);
     for (i=0; i<num_points; i++)
     {
-        LineTo[i].type = vdx_types_LineTo;
+        LineTo[i].any.type = vdx_types_LineTo;
         LineTo[i].IX = i+2;
         /* Last point = first */
         if (i == num_points-1) b = a;
@@ -859,22 +859,22 @@ static void fill_polygon(DiaRenderer *self,
     create_Fill(renderer, color, &Fill);
 
     /* Setup children */
-    Geom.children = g_slist_append(Geom.children, &MoveTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &MoveTo);
     for (i=0; i<num_points; i++)
     {
-        Geom.children = g_slist_append(Geom.children, &LineTo[i]);
+        Geom.any.children = g_slist_append(Geom.any.children, &LineTo[i]);
     }
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Fill);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Fill);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
     g_free(LineTo);
 }
 
@@ -966,7 +966,7 @@ static void draw_arc(DiaRenderer *self,
 
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "Arc.%d", Shape.ID);
@@ -977,7 +977,7 @@ static void draw_arc(DiaRenderer *self,
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
 
     /* Find the start of the arc */
     start = *center;
@@ -1018,17 +1018,17 @@ static void draw_arc(DiaRenderer *self,
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
     Geom.NoFill = 1;
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     memset(&MoveTo, 0, sizeof(MoveTo));
-    MoveTo.type = vdx_types_MoveTo;
+    MoveTo.any.type = vdx_types_MoveTo;
     MoveTo.IX = 1;
     MoveTo.X = 0;
     MoveTo.Y = 0;
 
     /* Second child - EllipticalArcTo */
     memset(&EllipticalArcTo, 0, sizeof(EllipticalArcTo));
-    EllipticalArcTo.type = vdx_types_EllipticalArcTo;
+    EllipticalArcTo.any.type = vdx_types_EllipticalArcTo;
     EllipticalArcTo.IX = 2;
 
     /* X and Y are the end point
@@ -1051,19 +1051,19 @@ static void draw_arc(DiaRenderer *self,
     create_Line(renderer, color, &Line, 0, 0);
 
     /* Setup children */
-    Geom.children = g_slist_append(Geom.children, &MoveTo);
-    Geom.children = g_slist_append(Geom.children, &EllipticalArcTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &MoveTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &EllipticalArcTo);
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Line);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Line);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
 }
 
 /** Render a Dia filled arc
@@ -1126,7 +1126,7 @@ static void draw_ellipse(DiaRenderer *self,
     
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "Ellipse.%d", Shape.ID);
@@ -1137,7 +1137,7 @@ static void draw_ellipse(DiaRenderer *self,
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(*center);
     XForm.PinX = a.x;           /* Start */
     XForm.PinY = a.y;
@@ -1150,11 +1150,11 @@ static void draw_ellipse(DiaRenderer *self,
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
     Geom.NoFill = 1;
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     /* One child - Ellipse */
     memset(&Ellipse, 0, sizeof(Ellipse));
-    Ellipse.type = vdx_types_Ellipse;
+    Ellipse.any.type = vdx_types_Ellipse;
     Ellipse.IX = 1;
     Ellipse.X = XForm.Width/2.0;
     Ellipse.Y = XForm.Height/2.0;
@@ -1167,18 +1167,18 @@ static void draw_ellipse(DiaRenderer *self,
     create_Line(renderer, color, &Line, 0, 0);
 
     /* Setup children */
-    Geom.children = g_slist_append(Geom.children, &Ellipse);
+    Geom.any.children = g_slist_append(Geom.any.children, &Ellipse);
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Line);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Line);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
 }
 
 /** Render a Dia filled ellipse (parallel to axes)
@@ -1214,7 +1214,7 @@ static void fill_ellipse(DiaRenderer *self,
     
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "FillEllipse.%d", Shape.ID);
@@ -1225,7 +1225,7 @@ static void fill_ellipse(DiaRenderer *self,
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(*center);
     XForm.PinX = a.x;           /* Start */
     XForm.PinY = a.y;
@@ -1237,11 +1237,11 @@ static void fill_ellipse(DiaRenderer *self,
 
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     /* One child - Ellipse */
     memset(&Ellipse, 0, sizeof(Ellipse));
-    Ellipse.type = vdx_types_Ellipse;
+    Ellipse.any.type = vdx_types_Ellipse;
     Ellipse.IX = 1;
     Ellipse.X = XForm.Width/2.0;
     Ellipse.Y = XForm.Height/2.0;
@@ -1254,18 +1254,18 @@ static void fill_ellipse(DiaRenderer *self,
     create_Fill(renderer, color, &Fill);
 
     /* Setup children */
-    Geom.children = g_slist_append(Geom.children, &Ellipse);
+    Geom.any.children = g_slist_append(Geom.any.children, &Ellipse);
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Fill);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Fill);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
 }
 
 /** Render a Dia string
@@ -1303,7 +1303,7 @@ static void draw_string(DiaRenderer *self,
     g_debug("draw_string");
     /* Standard shape */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "Text.%d", Shape.ID);
@@ -1314,7 +1314,7 @@ static void draw_string(DiaRenderer *self,
 
     /* XForm describes bounding box */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(*pos);
     XForm.PinX = a.x;
     XForm.PinY = a.y;
@@ -1325,7 +1325,7 @@ static void draw_string(DiaRenderer *self,
 
     /* Character properties */
     memset(&Char, 0, sizeof(Char));
-    Char.type = vdx_types_Char;
+    Char.any.type = vdx_types_Char;
     Char.Font = vdxCheckFont(renderer);
     Char.Color = *color;
     Char.FontScale = 1;
@@ -1333,24 +1333,24 @@ static void draw_string(DiaRenderer *self,
 
     /* Text object - no attributes */
     memset(&Text, 0, sizeof(Text));
-    Text.type = vdx_types_Text;
+    Text.any.type = vdx_types_Text;
 
     /* text object (XML pseudo-tag) - no attributes */
     memset(&my_text, 0, sizeof(my_text));
-    my_text.type = vdx_types_text;
+    my_text.any.type = vdx_types_text;
     my_text.text = (char *)text;
 
     /* Construct the children */
-    Text.children = g_slist_append(Text.children, &my_text);
+    Text.any.children = g_slist_append(Text.any.children, &my_text);
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Char);
-    Shape.children = g_slist_append(Shape.children, &Text);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Char);
+    Shape.any.children = g_slist_append(Shape.any.children, &Text);
 
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
-    g_slist_free(Text.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Text.any.children);
+    g_slist_free(Shape.any.children);
 }
 
 /** Reads binary file and converts to Base64 data
@@ -1475,7 +1475,7 @@ static void draw_image(DiaRenderer *self,
             width, height, dia_image_filename(image));
     /* Setup the standard shape object */
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Foreign";
     sprintf(NameU, "Foreign.%d", Shape.ID);
@@ -1486,7 +1486,7 @@ static void draw_image(DiaRenderer *self,
 
     /* An XForm */
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     bottom_left.x = point->x;
     bottom_left.y = point->y + height;
     a = visio_point(bottom_left);
@@ -1500,12 +1500,12 @@ static void draw_image(DiaRenderer *self,
 
     /* Standard Geom object */
     memset(&Geom, 0, sizeof(Geom));
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
     /* We don't use it, but our decoder needs it */
 
     /* And a Foreign */
     memset(&Foreign, 0, sizeof(Foreign));
-    Foreign.type = vdx_types_Foreign;
+    Foreign.any.type = vdx_types_Foreign;
     Foreign.ImgOffsetX = 0;
     Foreign.ImgOffsetY = 0;
     Foreign.ImgHeight = visio_length(height);
@@ -1513,7 +1513,7 @@ static void draw_image(DiaRenderer *self,
 
     /* And a ForeignData */
     memset(&ForeignData, 0, sizeof(ForeignData));
-    ForeignData.type = vdx_types_ForeignData;
+    ForeignData.any.type = vdx_types_ForeignData;
     ForeignData.ForeignType = "Bitmap";
     ForeignData.CompressionType = "JPEG";
     ForeignData.CompressionLevel = 1.0;
@@ -1534,23 +1534,23 @@ static void draw_image(DiaRenderer *self,
 
     /* And the data itself */
     memset(&text, 0, sizeof(text));
-    text.type = vdx_types_text;
+    text.any.type = vdx_types_text;
     text.text = read_base64_file(filename);
     if (!text.text) return;     /* Problem reading file */
 
     /* Setup children */
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &Geom);
-    Shape.children = g_slist_append(Shape.children, &Foreign);
-    Shape.children = g_slist_append(Shape.children, &ForeignData);
-    ForeignData.children = g_slist_append(ForeignData.children, &text);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &Foreign);
+    Shape.any.children = g_slist_append(Shape.any.children, &ForeignData);
+    ForeignData.any.children = g_slist_append(ForeignData.any.children, &text);
 
     /* Write out XML */
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
     /* Free up list entries */
-    g_slist_free(ForeignData.children);
-    g_slist_free(Shape.children);
+    g_slist_free(ForeignData.any.children);
+    g_slist_free(Shape.any.children);
 
     /* And the Base64 data */
     g_free(text.text);
@@ -1688,7 +1688,7 @@ write_header(DiagramData *data, VDXRenderer *renderer)
         {
             struct vdx_FontEntry Font;
             memset(&Font, 0, sizeof(Font));
-            Font.type = vdx_types_FontEntry;
+            Font.any.type = vdx_types_FontEntry;
             f = g_array_index(renderer->Fonts, char *, i);
             
             /* Assume want stndard fonts names converted */
@@ -1739,60 +1739,60 @@ write_header(DiagramData *data, VDXRenderer *renderer)
 
     /* An initial stylesheet (mandatory) */
     memset(&StyleSheet, 0, sizeof(StyleSheet));
-    StyleSheet.type = vdx_types_StyleSheet;
+    StyleSheet.any.type = vdx_types_StyleSheet;
     StyleSheet.NameU = "No Style";
 
     /* All these values observed */
     memset(&StyleProp, 0, sizeof(StyleProp));
-    StyleProp.type = vdx_types_StyleProp;
+    StyleProp.any.type = vdx_types_StyleProp;
     StyleProp.EnableLineProps = 1;
     StyleProp.EnableFillProps = 1;
     StyleProp.EnableTextProps = 1;
 
     memset(&Line, 0, sizeof(Line));
-    Line.type = vdx_types_Line;
+    Line.any.type = vdx_types_Line;
     Line.LineWeight = 0.01;
     Line.LinePattern = 1;
     
     memset(&Fill, 0, sizeof(Fill));
-    Fill.type = vdx_types_Fill;
+    Fill.any.type = vdx_types_Fill;
     Fill.FillForegnd = color_black;
     Fill.FillPattern = 1;
 
     memset(&TextBlock, 0, sizeof(TextBlock));
-    TextBlock.type = vdx_types_TextBlock;
+    TextBlock.any.type = vdx_types_TextBlock;
     TextBlock.VerticalAlign = 1;
     TextBlock.DefaultTabStop = 0.59055118110236;
     
     memset(&Char, 0, sizeof(Char));
-    Char.type = vdx_types_Char;
+    Char.any.type = vdx_types_Char;
     Char.FontScale = 1;
     Char.Size = 0.16666666666667;
     
     memset(&Para, 0, sizeof(Para));
-    Para.type = vdx_types_Para;
+    Para.any.type = vdx_types_Para;
     Para.SpLine = -1.2;
     Para.HorzAlign = 1;
     Para.BulletStr = "&#xe000;";
     Para.BulletFontSize = "-1";
 
     memset(&Tabs, 0, sizeof(Tabs));
-    Tabs.type = vdx_types_Tabs;
+    Tabs.any.type = vdx_types_Tabs;
 
     /* Setup children */
-    StyleSheet.children = g_slist_append(StyleSheet.children, &StyleProp);
-    StyleSheet.children = g_slist_append(StyleSheet.children, &Line);
-    StyleSheet.children = g_slist_append(StyleSheet.children, &Fill);
-    StyleSheet.children = g_slist_append(StyleSheet.children, &TextBlock);
-    StyleSheet.children = g_slist_append(StyleSheet.children, &Char);
-    StyleSheet.children = g_slist_append(StyleSheet.children, &Para);
-    StyleSheet.children = g_slist_append(StyleSheet.children, &Tabs);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &StyleProp);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &Line);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &Fill);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &TextBlock);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &Char);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &Para);
+    StyleSheet.any.children = g_slist_append(StyleSheet.any.children, &Tabs);
 
     fprintf(file, "  <StyleSheets>\n");
     vdx_write_object(renderer->file, 2, &StyleSheet);
     fprintf(file, "  </StyleSheets>\n");
 
-    g_slist_free(StyleSheet.children);
+    g_slist_free(StyleSheet.any.children);
 
     /*  Following attributes observed */
     fprintf(file, "  <Pages>\n");
@@ -1956,7 +1956,7 @@ static void draw_line_with_arrows(DiaRenderer *self,
 
     g_debug("draw_line_with_arrows");
     memset(&Shape, 0, sizeof(Shape));
-    Shape.type = vdx_types_Shape;
+    Shape.any.type = vdx_types_Shape;
     Shape.ID = renderer->shapeid++;
     Shape.Type = "Shape";
     sprintf(NameU, "ArrowLine.%d", Shape.ID);
@@ -1966,7 +1966,7 @@ static void draw_line_with_arrows(DiaRenderer *self,
     Shape.TextStyle_exists = 1;
 
     memset(&XForm, 0, sizeof(XForm));
-    XForm.type = vdx_types_XForm;
+    XForm.any.type = vdx_types_XForm;
     a = visio_point(*start);
     b = visio_point(*end);
     XForm.PinX = a.x;
@@ -1978,7 +1978,7 @@ static void draw_line_with_arrows(DiaRenderer *self,
     XForm.Angle = 0.0;
 
     memset(&XForm1D, 0, sizeof(XForm1D));
-    XForm1D.type = vdx_types_XForm1D;
+    XForm1D.any.type = vdx_types_XForm1D;
     XForm1D.BeginX = a.x;
     XForm1D.BeginY = a.y;
     XForm1D.EndX = b.x;
@@ -1986,34 +1986,34 @@ static void draw_line_with_arrows(DiaRenderer *self,
 
     memset(&Geom, 0, sizeof(Geom));
     Geom.NoFill = 1;
-    Geom.type = vdx_types_Geom;
+    Geom.any.type = vdx_types_Geom;
 
     memset(&MoveTo, 0, sizeof(MoveTo));
-    MoveTo.type = vdx_types_MoveTo;
+    MoveTo.any.type = vdx_types_MoveTo;
     MoveTo.IX = 1;
     MoveTo.X = 0;
     MoveTo.Y = 0;
 
     memset(&LineTo, 0, sizeof(LineTo));
-    LineTo.type = vdx_types_LineTo;
+    LineTo.any.type = vdx_types_LineTo;
     LineTo.IX = 2;
     LineTo.X = b.x-a.x; 
     LineTo.Y = b.y-a.y;
 
     create_Line(renderer, color, &Line, start_arrow, end_arrow);
 
-    Geom.children = g_slist_append(Geom.children, &MoveTo);
-    Geom.children = g_slist_append(Geom.children, &LineTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &MoveTo);
+    Geom.any.children = g_slist_append(Geom.any.children, &LineTo);
 
-    Shape.children = g_slist_append(Shape.children, &XForm);
-    Shape.children = g_slist_append(Shape.children, &XForm1D);
-    Shape.children = g_slist_append(Shape.children, &Line);
-    Shape.children = g_slist_append(Shape.children, &Geom);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm);
+    Shape.any.children = g_slist_append(Shape.any.children, &XForm1D);
+    Shape.any.children = g_slist_append(Shape.any.children, &Line);
+    Shape.any.children = g_slist_append(Shape.any.children, &Geom);
 
     vdx_write_object(renderer->file, renderer->xml_depth, &Shape);
 
-    g_slist_free(Geom.children);
-    g_slist_free(Shape.children);
+    g_slist_free(Geom.any.children);
+    g_slist_free(Shape.any.children);
 }
 
 /** Render a Dia polyline with arrows
diff --git a/plug-ins/vdx/vdx-import.c b/plug-ins/vdx/vdx-import.c
index d530c6e..2afd8df 100644
--- a/plug-ins/vdx/vdx-import.c
+++ b/plug-ins/vdx/vdx-import.c
@@ -388,7 +388,7 @@ vdx_get_stylesheets(xmlNodePtr cur, VDXDocument* theDoc)
 static void *
 find_child(unsigned int type, const void *p)
 {
-    struct vdx_any *Any = (struct vdx_any *)p;
+    const struct vdx_any *Any = p;
     GSList *child;
 
     if (!p)
@@ -516,7 +516,7 @@ get_shape_by_id(unsigned int id, struct vdx_Shapes *Shapes, unsigned int depth)
     }
 
     /* A Master has a list of Shapes */
-    for(child = Shapes->children; child; child = child->next)
+    for(child = Shapes->any.children; child; child = child->next)
     {
         struct vdx_any *Any_child = (struct vdx_any *)child->data;
         if (!child->data) continue;
@@ -782,13 +782,13 @@ apply_XForm(Point p, const struct vdx_XForm *XForm)
     q.x += XForm->PinX;
     q.y += XForm->PinY;
 
-    if (XForm->children)
+    if (XForm->any.children)
     {
         /* Recurse if we have a list */
         /* This is overloading the children list, but XForms cannot
            have real children, so this list is always empty, and it's a lot
            easier than the composition calculations */
-        XForm = (struct vdx_XForm*)XForm->children->data;
+        XForm = (struct vdx_XForm*)XForm->any.children->data;
         if (XForm)
         {
             q = apply_XForm(q, XForm);
@@ -1089,8 +1089,8 @@ arc_to_ellipticalarc(struct vdx_ArcTo *ArcTo, const Point *Start,
         return FALSE;
     }
 
-    EllipticalArcTo->type = vdx_types_EllipticalArcTo;
-    EllipticalArcTo->children = 0;
+    EllipticalArcTo->any.type = vdx_types_EllipticalArcTo;
+    EllipticalArcTo->any.children = 0;
 
     EllipticalArcTo->X = ArcTo->X;
     EllipticalArcTo->Y = ArcTo->Y;
@@ -1363,7 +1363,7 @@ plot_bezier(const struct vdx_Geom *Geom, const struct vdx_XForm *XForm,
     struct vdx_MoveTo *MoveTo;
     struct vdx_LineTo *LineTo;
     struct vdx_EllipticalArcTo *EllipticalArcTo;
-    struct vdx_EllipticalArcTo EllipticalArcTo_from_ArcTo = {0,};
+    struct vdx_EllipticalArcTo EllipticalArcTo_from_ArcTo = { {0, }, };
     struct vdx_ArcTo *ArcTo;
     struct vdx_any *Any;
     unsigned int num_points = 0;
@@ -2102,7 +2102,7 @@ plot_image(const struct vdx_Geom *Geom, const struct vdx_XForm *XForm,
     g_debug("Writing file %s", filename);
 
     /* Find the data in Base64 encoding in the body of ForeignData */
-    for (item = ForeignData->children; item; item = item->next)
+    for (item = ForeignData->any.children; item; item = item->next)
     {
         if (!item->data) continue;
         Any = (struct vdx_any *)(item->data);
@@ -2615,8 +2615,8 @@ vdx_plot_shape(struct vdx_Shape *Shape, GSList *objects,
         if (XForm)
         {
             /* Populate the XForm's children list with the parent XForm */
-            XForm->children =
-                g_slist_append(XForm->children, group_XForm);
+            XForm->any.children =
+                g_slist_append(XForm->any.children, group_XForm);
         }
         else
         {
@@ -2635,11 +2635,11 @@ vdx_plot_shape(struct vdx_Shape *Shape, GSList *objects,
             (struct vdx_Shapes*)find_child(vdx_types_Shapes, Shape);
 
         /* Create a list of member objects */
-        for (child = Shapes->children; child; child = child->next)
+        for (child = Shapes->any.children; child; child = child->next)
         {
             struct vdx_Shape * theShape = (struct vdx_Shape*)(child->data);
             if (!theShape) continue;
-            if (theShape->type == vdx_types_Shape)
+            if (theShape->any.type == vdx_types_Shape)
             {
                 if (!theShape->Master)
                 {
@@ -2668,7 +2668,7 @@ vdx_plot_shape(struct vdx_Shape *Shape, GSList *objects,
         Line = ShapeLine;
         if (Geom->NoLine) Line = 0;
 
-        more = Geom->children;
+        more = Geom->any.children;
         do
         {
             objects =
@@ -2695,7 +2695,7 @@ vdx_plot_shape(struct vdx_Shape *Shape, GSList *objects,
     }
 
     /* Wipe the child XForm list to avoid double-free */
-    if (XForm) XForm->children = 0;
+    if (XForm) XForm->any.children = 0;
     return objects;
 }
 
@@ -2711,7 +2711,7 @@ vdx_parse_shape(xmlNodePtr Shape, struct vdx_PageSheet *PageSheet,
                 VDXDocument* theDoc, DiagramData *dia)
 {
     /* All decoding is done in Visio-space */
-    struct vdx_Shape theShape = {0, 0 };
+    struct vdx_Shape theShape = { {0, }, };
     GSList *objects = NULL;
     GSList *object;
     struct vdx_LayerMem *LayerMem = NULL;
@@ -2754,7 +2754,7 @@ vdx_parse_shape(xmlNodePtr Shape, struct vdx_PageSheet *PageSheet,
     }
 
     /* Remove NULLs */
-    theShape.children = g_slist_remove_all(theShape.children, 0);
+    theShape.any.children = g_slist_remove_all(theShape.any.children, 0);
 
     /* What layer are we on, if any? */
     LayerMem = find_child(vdx_types_LayerMem, &theShape);
@@ -2824,7 +2824,7 @@ vdx_setup_layers(struct vdx_PageSheet* PageSheet, VDXDocument* theDoc,
         return;
     }
 
-    for (child = PageSheet->children; child; child = child->next)
+    for (child = PageSheet->any.children; child; child = child->next)
     {
         if (!child || !child->data) continue;
         Any = (struct vdx_any *)(child->data);
diff --git a/plug-ins/vdx/vdx-xml.c b/plug-ins/vdx/vdx-xml.c
index 1fdac65..c74d89e 100644
--- a/plug-ins/vdx/vdx-xml.c
+++ b/plug-ins/vdx/vdx-xml.c
@@ -58,8 +58,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Act *s;
         if (p) { s = (struct vdx_Act *)(p); }
         else { s = g_new0(struct vdx_Act, 1); }
-        s->children = 0;
-        s->type = vdx_types_Act;
+        s->any.children = 0;
+        s->any.type = vdx_types_Act;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ID") &&
                      attr->children && attr->children->content)
@@ -106,8 +106,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "TagName"))
             { if (child->children && child->children->content)
                 s->TagName = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -117,8 +117,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Align *s;
         if (p) { s = (struct vdx_Align *)(p); }
         else { s = g_new0(struct vdx_Align, 1); }
-        s->children = 0;
-        s->type = vdx_types_Align;
+        s->any.children = 0;
+        s->any.type = vdx_types_Align;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -141,8 +141,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "AlignTop"))
             { if (child->children && child->children->content)
                 s->AlignTop = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -152,8 +152,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_ArcTo *s;
         if (p) { s = (struct vdx_ArcTo *)(p); }
         else { s = g_new0(struct vdx_ArcTo, 1); }
-        s->children = 0;
-        s->type = vdx_types_ArcTo;
+        s->any.children = 0;
+        s->any.type = vdx_types_ArcTo;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Del") &&
                      attr->children && attr->children->content)
@@ -173,8 +173,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -184,8 +184,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Char *s;
         if (p) { s = (struct vdx_Char *)(p); }
         else { s = g_new0(struct vdx_Char, 1); }
-        s->children = 0;
-        s->type = vdx_types_Char;
+        s->any.children = 0;
+        s->any.type = vdx_types_Char;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Del") &&
                      attr->children && attr->children->content)
@@ -265,8 +265,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "UseVertical"))
             { if (child->children && child->children->content)
                 s->UseVertical = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -276,8 +276,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_ColorEntry *s;
         if (p) { s = (struct vdx_ColorEntry *)(p); }
         else { s = g_new0(struct vdx_ColorEntry, 1); }
-        s->children = 0;
-        s->type = vdx_types_ColorEntry;
+        s->any.children = 0;
+        s->any.type = vdx_types_ColorEntry;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -288,8 +288,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -299,8 +299,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Colors *s;
         if (p) { s = (struct vdx_Colors *)(p); }
         else { s = g_new0(struct vdx_Colors, 1); }
-        s->children = 0;
-        s->type = vdx_types_Colors;
+        s->any.children = 0;
+        s->any.type = vdx_types_Colors;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -308,8 +308,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "ColorEntry"))
             { if (child->children && child->children->content)
                 s->ColorEntry = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -319,8 +319,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Connect *s;
         if (p) { s = (struct vdx_Connect *)(p); }
         else { s = g_new0(struct vdx_Connect, 1); }
-        s->children = 0;
-        s->type = vdx_types_Connect;
+        s->any.children = 0;
+        s->any.type = vdx_types_Connect;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "FromCell") &&
                      attr->children && attr->children->content)
@@ -347,8 +347,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -358,8 +358,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Connection *s;
         if (p) { s = (struct vdx_Connection *)(p); }
         else { s = g_new0(struct vdx_Connection, 1); }
-        s->children = 0;
-        s->type = vdx_types_Connection;
+        s->any.children = 0;
+        s->any.type = vdx_types_Connection;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ID") &&
                      attr->children && attr->children->content)
@@ -394,8 +394,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -405,8 +405,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Connects *s;
         if (p) { s = (struct vdx_Connects *)(p); }
         else { s = g_new0(struct vdx_Connects, 1); }
-        s->children = 0;
-        s->type = vdx_types_Connects;
+        s->any.children = 0;
+        s->any.type = vdx_types_Connects;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -414,8 +414,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "Connect"))
             { if (child->children && child->children->content)
                 s->Connect = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -425,8 +425,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Control *s;
         if (p) { s = (struct vdx_Control *)(p); }
         else { s = g_new0(struct vdx_Control, 1); }
-        s->children = 0;
-        s->type = vdx_types_Control;
+        s->any.children = 0;
+        s->any.type = vdx_types_Control;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ID") &&
                      attr->children && attr->children->content)
@@ -464,8 +464,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "YDyn"))
             { if (child->children && child->children->content)
                 s->YDyn = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -475,8 +475,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_CustomProp *s;
         if (p) { s = (struct vdx_CustomProp *)(p); }
         else { s = g_new0(struct vdx_CustomProp, 1); }
-        s->children = 0;
-        s->type = vdx_types_CustomProp;
+        s->any.children = 0;
+        s->any.type = vdx_types_CustomProp;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Name") &&
                      attr->children && attr->children->content)
@@ -487,8 +487,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -498,8 +498,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_CustomProps *s;
         if (p) { s = (struct vdx_CustomProps *)(p); }
         else { s = g_new0(struct vdx_CustomProps, 1); }
-        s->children = 0;
-        s->type = vdx_types_CustomProps;
+        s->any.children = 0;
+        s->any.type = vdx_types_CustomProps;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -507,8 +507,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "CustomProp"))
             { if (child->children && child->children->content)
                 s->CustomProp = (char *)child->children->content; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -518,8 +518,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_DocProps *s;
         if (p) { s = (struct vdx_DocProps *)(p); }
         else { s = g_new0(struct vdx_DocProps, 1); }
-        s->children = 0;
-        s->type = vdx_types_DocProps;
+        s->any.children = 0;
+        s->any.type = vdx_types_DocProps;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -545,8 +545,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "ViewMarkup"))
             { if (child->children && child->children->content)
                 s->ViewMarkup = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -556,8 +556,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_DocumentProperties *s;
         if (p) { s = (struct vdx_DocumentProperties *)(p); }
         else { s = g_new0(struct vdx_DocumentProperties, 1); }
-        s->children = 0;
-        s->type = vdx_types_DocumentProperties;
+        s->any.children = 0;
+        s->any.type = vdx_types_DocumentProperties;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -601,8 +601,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Title"))
             { if (child->children && child->children->content)
                 s->Title = (char *)child->children->content; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -612,8 +612,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_DocumentSettings *s;
         if (p) { s = (struct vdx_DocumentSettings *)(p); }
         else { s = g_new0(struct vdx_DocumentSettings, 1); }
-        s->children = 0;
-        s->type = vdx_types_DocumentSettings;
+        s->any.children = 0;
+        s->any.type = vdx_types_DocumentSettings;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "DefaultFillStyle") &&
                      attr->children && attr->children->content)
@@ -662,8 +662,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "SnapSettings"))
             { if (child->children && child->children->content)
                 s->SnapSettings = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -673,8 +673,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_DocumentSheet *s;
         if (p) { s = (struct vdx_DocumentSheet *)(p); }
         else { s = g_new0(struct vdx_DocumentSheet, 1); }
-        s->children = 0;
-        s->type = vdx_types_DocumentSheet;
+        s->any.children = 0;
+        s->any.type = vdx_types_DocumentSheet;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "FillStyle") &&
                      attr->children && attr->children->content)
@@ -697,8 +697,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -708,8 +708,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Ellipse *s;
         if (p) { s = (struct vdx_Ellipse *)(p); }
         else { s = g_new0(struct vdx_Ellipse, 1); }
-        s->children = 0;
-        s->type = vdx_types_Ellipse;
+        s->any.children = 0;
+        s->any.type = vdx_types_Ellipse;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -735,8 +735,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -746,8 +746,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_EllipticalArcTo *s;
         if (p) { s = (struct vdx_EllipticalArcTo *)(p); }
         else { s = g_new0(struct vdx_EllipticalArcTo, 1); }
-        s->children = 0;
-        s->type = vdx_types_EllipticalArcTo;
+        s->any.children = 0;
+        s->any.type = vdx_types_EllipticalArcTo;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -773,8 +773,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -784,8 +784,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Event *s;
         if (p) { s = (struct vdx_Event *)(p); }
         else { s = g_new0(struct vdx_Event, 1); }
-        s->children = 0;
-        s->type = vdx_types_Event;
+        s->any.children = 0;
+        s->any.type = vdx_types_Event;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -805,8 +805,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "TheText"))
             { if (child->children && child->children->content)
                 s->TheText = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -816,8 +816,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_EventItem *s;
         if (p) { s = (struct vdx_EventItem *)(p); }
         else { s = g_new0(struct vdx_EventItem, 1); }
-        s->children = 0;
-        s->type = vdx_types_EventItem;
+        s->any.children = 0;
+        s->any.type = vdx_types_EventItem;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Action") &&
                      attr->children && attr->children->content)
@@ -841,8 +841,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -852,8 +852,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_EventList *s;
         if (p) { s = (struct vdx_EventList *)(p); }
         else { s = g_new0(struct vdx_EventList, 1); }
-        s->children = 0;
-        s->type = vdx_types_EventList;
+        s->any.children = 0;
+        s->any.type = vdx_types_EventList;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -861,8 +861,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "EventItem"))
             { if (child->children && child->children->content)
                 s->EventItem = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -872,8 +872,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_FaceName *s;
         if (p) { s = (struct vdx_FaceName *)(p); }
         else { s = g_new0(struct vdx_FaceName, 1); }
-        s->children = 0;
-        s->type = vdx_types_FaceName;
+        s->any.children = 0;
+        s->any.type = vdx_types_FaceName;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "CharSets") &&
                      attr->children && attr->children->content)
@@ -897,8 +897,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -908,8 +908,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_FaceNames *s;
         if (p) { s = (struct vdx_FaceNames *)(p); }
         else { s = g_new0(struct vdx_FaceNames, 1); }
-        s->children = 0;
-        s->type = vdx_types_FaceNames;
+        s->any.children = 0;
+        s->any.type = vdx_types_FaceNames;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -917,8 +917,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "FaceName"))
             { if (child->children && child->children->content)
                 s->FaceName = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -928,8 +928,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Field *s;
         if (p) { s = (struct vdx_Field *)(p); }
         else { s = g_new0(struct vdx_Field, 1); }
-        s->children = 0;
-        s->type = vdx_types_Field;
+        s->any.children = 0;
+        s->any.type = vdx_types_Field;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Del") &&
                      attr->children && attr->children->content)
@@ -967,8 +967,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Value"))
             { if (child->children && child->children->content)
                 s->Value = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -978,8 +978,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Fill *s;
         if (p) { s = (struct vdx_Fill *)(p); }
         else { s = g_new0(struct vdx_Fill, 1); }
-        s->children = 0;
-        s->type = vdx_types_Fill;
+        s->any.children = 0;
+        s->any.type = vdx_types_Fill;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1029,8 +1029,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "ShdwPattern"))
             { if (child->children && child->children->content)
                 s->ShdwPattern = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1040,8 +1040,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_FontEntry *s;
         if (p) { s = (struct vdx_FontEntry *)(p); }
         else { s = g_new0(struct vdx_FontEntry, 1); }
-        s->children = 0;
-        s->type = vdx_types_FontEntry;
+        s->any.children = 0;
+        s->any.type = vdx_types_FontEntry;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Attributes") &&
                      attr->children && attr->children->content)
@@ -1070,8 +1070,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1081,8 +1081,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Fonts *s;
         if (p) { s = (struct vdx_Fonts *)(p); }
         else { s = g_new0(struct vdx_Fonts, 1); }
-        s->children = 0;
-        s->type = vdx_types_Fonts;
+        s->any.children = 0;
+        s->any.type = vdx_types_Fonts;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1090,8 +1090,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "FontEntry"))
             { if (child->children && child->children->content)
                 s->FontEntry = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1101,8 +1101,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Foreign *s;
         if (p) { s = (struct vdx_Foreign *)(p); }
         else { s = g_new0(struct vdx_Foreign, 1); }
-        s->children = 0;
-        s->type = vdx_types_Foreign;
+        s->any.children = 0;
+        s->any.type = vdx_types_Foreign;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1119,8 +1119,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "ImgWidth"))
             { if (child->children && child->children->content)
                 s->ImgWidth = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1130,8 +1130,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_ForeignData *s;
         if (p) { s = (struct vdx_ForeignData *)(p); }
         else { s = g_new0(struct vdx_ForeignData, 1); }
-        s->children = 0;
-        s->type = vdx_types_ForeignData;
+        s->any.children = 0;
+        s->any.type = vdx_types_ForeignData;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "CompressionLevel") &&
                      attr->children && attr->children->content)
@@ -1170,8 +1170,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1181,8 +1181,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Geom *s;
         if (p) { s = (struct vdx_Geom *)(p); }
         else { s = g_new0(struct vdx_Geom, 1); }
-        s->children = 0;
-        s->type = vdx_types_Geom;
+        s->any.children = 0;
+        s->any.type = vdx_types_Geom;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -1202,8 +1202,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "NoSnap"))
             { if (child->children && child->children->content)
                 s->NoSnap = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1213,8 +1213,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Group *s;
         if (p) { s = (struct vdx_Group *)(p); }
         else { s = g_new0(struct vdx_Group, 1); }
-        s->children = 0;
-        s->type = vdx_types_Group;
+        s->any.children = 0;
+        s->any.type = vdx_types_Group;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1237,8 +1237,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "SelectMode"))
             { if (child->children && child->children->content)
                 s->SelectMode = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1248,8 +1248,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_HeaderFooter *s;
         if (p) { s = (struct vdx_HeaderFooter *)(p); }
         else { s = g_new0(struct vdx_HeaderFooter, 1); }
-        s->children = 0;
-        s->type = vdx_types_HeaderFooter;
+        s->any.children = 0;
+        s->any.type = vdx_types_HeaderFooter;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "HeaderFooterColor") &&
                      attr->children && attr->children->content)
@@ -1275,8 +1275,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "HeaderRight"))
             { if (child->children && child->children->content)
                 s->HeaderRight = (char *)child->children->content; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1286,8 +1286,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_HeaderFooterFont *s;
         if (p) { s = (struct vdx_HeaderFooterFont *)(p); }
         else { s = g_new0(struct vdx_HeaderFooterFont, 1); }
-        s->children = 0;
-        s->type = vdx_types_HeaderFooterFont;
+        s->any.children = 0;
+        s->any.type = vdx_types_HeaderFooterFont;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "CharSet") &&
                      attr->children && attr->children->content)
@@ -1339,8 +1339,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1350,8 +1350,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Help *s;
         if (p) { s = (struct vdx_Help *)(p); }
         else { s = g_new0(struct vdx_Help, 1); }
-        s->children = 0;
-        s->type = vdx_types_Help;
+        s->any.children = 0;
+        s->any.type = vdx_types_Help;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1362,8 +1362,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "HelpTopic"))
             { if (child->children && child->children->content)
                 s->HelpTopic = (char *)child->children->content; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1373,8 +1373,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Hyperlink *s;
         if (p) { s = (struct vdx_Hyperlink *)(p); }
         else { s = g_new0(struct vdx_Hyperlink, 1); }
-        s->children = 0;
-        s->type = vdx_types_Hyperlink;
+        s->any.children = 0;
+        s->any.type = vdx_types_Hyperlink;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ID") &&
                      attr->children && attr->children->content)
@@ -1412,8 +1412,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "SubAddress"))
             { if (child->children && child->children->content)
                 s->SubAddress = (char *)child->children->content; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1423,8 +1423,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Icon *s;
         if (p) { s = (struct vdx_Icon *)(p); }
         else { s = g_new0(struct vdx_Icon, 1); }
-        s->children = 0;
-        s->type = vdx_types_Icon;
+        s->any.children = 0;
+        s->any.type = vdx_types_Icon;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -1432,8 +1432,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1443,8 +1443,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Image *s;
         if (p) { s = (struct vdx_Image *)(p); }
         else { s = g_new0(struct vdx_Image, 1); }
-        s->children = 0;
-        s->type = vdx_types_Image;
+        s->any.children = 0;
+        s->any.type = vdx_types_Image;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1470,8 +1470,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Transparency"))
             { if (child->children && child->children->content)
                 s->Transparency = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1481,8 +1481,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_InfiniteLine *s;
         if (p) { s = (struct vdx_InfiniteLine *)(p); }
         else { s = g_new0(struct vdx_InfiniteLine, 1); }
-        s->children = 0;
-        s->type = vdx_types_InfiniteLine;
+        s->any.children = 0;
+        s->any.type = vdx_types_InfiniteLine;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -1502,8 +1502,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1513,8 +1513,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Layer *s;
         if (p) { s = (struct vdx_Layer *)(p); }
         else { s = g_new0(struct vdx_Layer, 1); }
-        s->children = 0;
-        s->type = vdx_types_Layer;
+        s->any.children = 0;
+        s->any.type = vdx_types_Layer;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -1555,8 +1555,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Visible"))
             { if (child->children && child->children->content)
                 s->Visible = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1566,8 +1566,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_LayerMem *s;
         if (p) { s = (struct vdx_LayerMem *)(p); }
         else { s = g_new0(struct vdx_LayerMem, 1); }
-        s->children = 0;
-        s->type = vdx_types_LayerMem;
+        s->any.children = 0;
+        s->any.type = vdx_types_LayerMem;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1575,8 +1575,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "LayerMember"))
             { if (child->children && child->children->content)
                 s->LayerMember = (char *)child->children->content; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1586,8 +1586,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Layout *s;
         if (p) { s = (struct vdx_Layout *)(p); }
         else { s = g_new0(struct vdx_Layout, 1); }
-        s->children = 0;
-        s->type = vdx_types_Layout;
+        s->any.children = 0;
+        s->any.type = vdx_types_Layout;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1637,8 +1637,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "ShapeSplittable"))
             { if (child->children && child->children->content)
                 s->ShapeSplittable = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1648,8 +1648,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Line *s;
         if (p) { s = (struct vdx_Line *)(p); }
         else { s = g_new0(struct vdx_Line, 1); }
-        s->children = 0;
-        s->type = vdx_types_Line;
+        s->any.children = 0;
+        s->any.type = vdx_types_Line;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1684,8 +1684,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Rounding"))
             { if (child->children && child->children->content)
                 s->Rounding = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1695,8 +1695,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_LineTo *s;
         if (p) { s = (struct vdx_LineTo *)(p); }
         else { s = g_new0(struct vdx_LineTo, 1); }
-        s->children = 0;
-        s->type = vdx_types_LineTo;
+        s->any.children = 0;
+        s->any.type = vdx_types_LineTo;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Del") &&
                      attr->children && attr->children->content)
@@ -1713,8 +1713,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1724,8 +1724,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Master *s;
         if (p) { s = (struct vdx_Master *)(p); }
         else { s = g_new0(struct vdx_Master, 1); }
-        s->children = 0;
-        s->type = vdx_types_Master;
+        s->any.children = 0;
+        s->any.type = vdx_types_Master;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "AlignName") &&
                      attr->children && attr->children->content)
@@ -1769,8 +1769,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1780,8 +1780,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Misc *s;
         if (p) { s = (struct vdx_Misc *)(p); }
         else { s = g_new0(struct vdx_Misc, 1); }
-        s->children = 0;
-        s->type = vdx_types_Misc;
+        s->any.children = 0;
+        s->any.type = vdx_types_Misc;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -1846,8 +1846,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "WalkPreference"))
             { if (child->children && child->children->content)
                 s->WalkPreference = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1857,8 +1857,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_MoveTo *s;
         if (p) { s = (struct vdx_MoveTo *)(p); }
         else { s = g_new0(struct vdx_MoveTo, 1); }
-        s->children = 0;
-        s->type = vdx_types_MoveTo;
+        s->any.children = 0;
+        s->any.type = vdx_types_MoveTo;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -1872,8 +1872,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1883,8 +1883,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_NURBSTo *s;
         if (p) { s = (struct vdx_NURBSTo *)(p); }
         else { s = g_new0(struct vdx_NURBSTo, 1); }
-        s->children = 0;
-        s->type = vdx_types_NURBSTo;
+        s->any.children = 0;
+        s->any.type = vdx_types_NURBSTo;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -1913,8 +1913,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1924,8 +1924,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Page *s;
         if (p) { s = (struct vdx_Page *)(p); }
         else { s = g_new0(struct vdx_Page, 1); }
-        s->children = 0;
-        s->type = vdx_types_Page;
+        s->any.children = 0;
+        s->any.type = vdx_types_Page;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "BackPage") &&
                      attr->children && attr->children->content)
@@ -1955,8 +1955,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -1966,8 +1966,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PageLayout *s;
         if (p) { s = (struct vdx_PageLayout *)(p); }
         else { s = g_new0(struct vdx_PageLayout, 1); }
-        s->children = 0;
-        s->type = vdx_types_PageLayout;
+        s->any.children = 0;
+        s->any.type = vdx_types_PageLayout;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2053,8 +2053,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "RouteStyle"))
             { if (child->children && child->children->content)
                 s->RouteStyle = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2064,8 +2064,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PageProps *s;
         if (p) { s = (struct vdx_PageProps *)(p); }
         else { s = g_new0(struct vdx_PageProps, 1); }
-        s->children = 0;
-        s->type = vdx_types_PageProps;
+        s->any.children = 0;
+        s->any.type = vdx_types_PageProps;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2109,8 +2109,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "UIVisibility"))
             { if (child->children && child->children->content)
                 s->UIVisibility = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2120,8 +2120,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PageSheet *s;
         if (p) { s = (struct vdx_PageSheet *)(p); }
         else { s = g_new0(struct vdx_PageSheet, 1); }
-        s->children = 0;
-        s->type = vdx_types_PageSheet;
+        s->any.children = 0;
+        s->any.type = vdx_types_PageSheet;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "FillStyle") &&
                      attr->children && attr->children->content)
@@ -2141,8 +2141,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2152,8 +2152,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Para *s;
         if (p) { s = (struct vdx_Para *)(p); }
         else { s = g_new0(struct vdx_Para, 1); }
-        s->children = 0;
-        s->type = vdx_types_Para;
+        s->any.children = 0;
+        s->any.type = vdx_types_Para;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2203,8 +2203,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "TextPosAfterBullet"))
             { if (child->children && child->children->content)
                 s->TextPosAfterBullet = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2214,8 +2214,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PolylineTo *s;
         if (p) { s = (struct vdx_PolylineTo *)(p); }
         else { s = g_new0(struct vdx_PolylineTo, 1); }
-        s->children = 0;
-        s->type = vdx_types_PolylineTo;
+        s->any.children = 0;
+        s->any.type = vdx_types_PolylineTo;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2232,8 +2232,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2243,8 +2243,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PreviewPicture *s;
         if (p) { s = (struct vdx_PreviewPicture *)(p); }
         else { s = g_new0(struct vdx_PreviewPicture, 1); }
-        s->children = 0;
-        s->type = vdx_types_PreviewPicture;
+        s->any.children = 0;
+        s->any.type = vdx_types_PreviewPicture;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Size") &&
                      attr->children && attr->children->content)
@@ -2253,8 +2253,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2264,8 +2264,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PrintProps *s;
         if (p) { s = (struct vdx_PrintProps *)(p); }
         else { s = g_new0(struct vdx_PrintProps, 1); }
-        s->children = 0;
-        s->type = vdx_types_PrintProps;
+        s->any.children = 0;
+        s->any.type = vdx_types_PrintProps;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2315,8 +2315,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "ScaleY"))
             { if (child->children && child->children->content)
                 s->ScaleY = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2326,8 +2326,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_PrintSetup *s;
         if (p) { s = (struct vdx_PrintSetup *)(p); }
         else { s = g_new0(struct vdx_PrintSetup, 1); }
-        s->children = 0;
-        s->type = vdx_types_PrintSetup;
+        s->any.children = 0;
+        s->any.type = vdx_types_PrintSetup;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2368,8 +2368,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "PrintScale"))
             { if (child->children && child->children->content)
                 s->PrintScale = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2379,8 +2379,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Prop *s;
         if (p) { s = (struct vdx_Prop *)(p); }
         else { s = g_new0(struct vdx_Prop, 1); }
-        s->children = 0;
-        s->type = vdx_types_Prop;
+        s->any.children = 0;
+        s->any.type = vdx_types_Prop;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ID") &&
                      attr->children && attr->children->content)
@@ -2424,8 +2424,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Verify"))
             { if (child->children && child->children->content)
                 s->Verify = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2435,8 +2435,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Protection *s;
         if (p) { s = (struct vdx_Protection *)(p); }
         else { s = g_new0(struct vdx_Protection, 1); }
-        s->children = 0;
-        s->type = vdx_types_Protection;
+        s->any.children = 0;
+        s->any.type = vdx_types_Protection;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2492,8 +2492,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "LockWidth"))
             { if (child->children && child->children->content)
                 s->LockWidth = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2503,8 +2503,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_RulerGrid *s;
         if (p) { s = (struct vdx_RulerGrid *)(p); }
         else { s = g_new0(struct vdx_RulerGrid, 1); }
-        s->children = 0;
-        s->type = vdx_types_RulerGrid;
+        s->any.children = 0;
+        s->any.type = vdx_types_RulerGrid;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2539,8 +2539,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "YRulerOrigin"))
             { if (child->children && child->children->content)
                 s->YRulerOrigin = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2550,8 +2550,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Scratch *s;
         if (p) { s = (struct vdx_Scratch *)(p); }
         else { s = g_new0(struct vdx_Scratch, 1); }
-        s->children = 0;
-        s->type = vdx_types_Scratch;
+        s->any.children = 0;
+        s->any.type = vdx_types_Scratch;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2577,8 +2577,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2588,8 +2588,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Shape *s;
         if (p) { s = (struct vdx_Shape *)(p); }
         else { s = g_new0(struct vdx_Shape, 1); }
-        s->children = 0;
-        s->type = vdx_types_Shape;
+        s->any.children = 0;
+        s->any.type = vdx_types_Shape;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "Del") &&
                      attr->children && attr->children->content)
@@ -2641,8 +2641,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Data3"))
             { if (child->children && child->children->content)
                 s->Data3 = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2652,14 +2652,14 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Shapes *s;
         if (p) { s = (struct vdx_Shapes *)(p); }
         else { s = g_new0(struct vdx_Shapes, 1); }
-        s->children = 0;
-        s->type = vdx_types_Shapes;
+        s->any.children = 0;
+        s->any.type = vdx_types_Shapes;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2669,8 +2669,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_SplineKnot *s;
         if (p) { s = (struct vdx_SplineKnot *)(p); }
         else { s = g_new0(struct vdx_SplineKnot, 1); }
-        s->children = 0;
-        s->type = vdx_types_SplineKnot;
+        s->any.children = 0;
+        s->any.type = vdx_types_SplineKnot;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2687,8 +2687,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2698,8 +2698,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_SplineStart *s;
         if (p) { s = (struct vdx_SplineStart *)(p); }
         else { s = g_new0(struct vdx_SplineStart, 1); }
-        s->children = 0;
-        s->type = vdx_types_SplineStart;
+        s->any.children = 0;
+        s->any.type = vdx_types_SplineStart;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2725,8 +2725,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Y"))
             { if (child->children && child->children->content)
                 s->Y = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2736,8 +2736,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_StyleProp *s;
         if (p) { s = (struct vdx_StyleProp *)(p); }
         else { s = g_new0(struct vdx_StyleProp, 1); }
-        s->children = 0;
-        s->type = vdx_types_StyleProp;
+        s->any.children = 0;
+        s->any.type = vdx_types_StyleProp;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2754,8 +2754,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "HideForApply"))
             { if (child->children && child->children->content)
                 s->HideForApply = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2765,8 +2765,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_StyleSheet *s;
         if (p) { s = (struct vdx_StyleSheet *)(p); }
         else { s = g_new0(struct vdx_StyleSheet, 1); }
-        s->children = 0;
-        s->type = vdx_types_StyleSheet;
+        s->any.children = 0;
+        s->any.type = vdx_types_StyleSheet;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "FillStyle") &&
                      attr->children && attr->children->content)
@@ -2792,8 +2792,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2803,8 +2803,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Tab *s;
         if (p) { s = (struct vdx_Tab *)(p); }
         else { s = g_new0(struct vdx_Tab, 1); }
-        s->children = 0;
-        s->type = vdx_types_Tab;
+        s->any.children = 0;
+        s->any.type = vdx_types_Tab;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2818,8 +2818,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Position"))
             { if (child->children && child->children->content)
                 s->Position = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2829,8 +2829,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Tabs *s;
         if (p) { s = (struct vdx_Tabs *)(p); }
         else { s = g_new0(struct vdx_Tabs, 1); }
-        s->children = 0;
-        s->type = vdx_types_Tabs;
+        s->any.children = 0;
+        s->any.type = vdx_types_Tabs;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2838,8 +2838,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2849,8 +2849,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Text *s;
         if (p) { s = (struct vdx_Text *)(p); }
         else { s = g_new0(struct vdx_Text, 1); }
-        s->children = 0;
-        s->type = vdx_types_Text;
+        s->any.children = 0;
+        s->any.type = vdx_types_Text;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -2870,8 +2870,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "tp"))
             { if (child->children && child->children->content)
                 s->tp = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2881,8 +2881,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_TextBlock *s;
         if (p) { s = (struct vdx_TextBlock *)(p); }
         else { s = g_new0(struct vdx_TextBlock, 1); }
-        s->children = 0;
-        s->type = vdx_types_TextBlock;
+        s->any.children = 0;
+        s->any.type = vdx_types_TextBlock;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2914,8 +2914,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "VerticalAlign"))
             { if (child->children && child->children->content)
                 s->VerticalAlign = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2925,8 +2925,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_TextXForm *s;
         if (p) { s = (struct vdx_TextXForm *)(p); }
         else { s = g_new0(struct vdx_TextXForm, 1); }
-        s->children = 0;
-        s->type = vdx_types_TextXForm;
+        s->any.children = 0;
+        s->any.type = vdx_types_TextXForm;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -2952,8 +2952,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "TxtWidth"))
             { if (child->children && child->children->content)
                 s->TxtWidth = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2963,8 +2963,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_User *s;
         if (p) { s = (struct vdx_User *)(p); }
         else { s = g_new0(struct vdx_User, 1); }
-        s->children = 0;
-        s->type = vdx_types_User;
+        s->any.children = 0;
+        s->any.type = vdx_types_User;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ID") &&
                      attr->children && attr->children->content)
@@ -2984,8 +2984,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Value"))
             { if (child->children && child->children->content)
                 s->Value = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -2995,8 +2995,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_VisioDocument *s;
         if (p) { s = (struct vdx_VisioDocument *)(p); }
         else { s = g_new0(struct vdx_VisioDocument, 1); }
-        s->children = 0;
-        s->type = vdx_types_VisioDocument;
+        s->any.children = 0;
+        s->any.type = vdx_types_VisioDocument;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "DocLangID") &&
                      attr->children && attr->children->content)
@@ -3031,8 +3031,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Masters"))
             { if (child->children && child->children->content)
                 s->Masters = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3042,8 +3042,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Window *s;
         if (p) { s = (struct vdx_Window *)(p); }
         else { s = g_new0(struct vdx_Window, 1); }
-        s->children = 0;
-        s->type = vdx_types_Window;
+        s->any.children = 0;
+        s->any.type = vdx_types_Window;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ContainerType") &&
                      attr->children && attr->children->content)
@@ -3140,8 +3140,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "TabSplitterPos"))
             { if (child->children && child->children->content)
                 s->TabSplitterPos = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3151,8 +3151,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_Windows *s;
         if (p) { s = (struct vdx_Windows *)(p); }
         else { s = g_new0(struct vdx_Windows, 1); }
-        s->children = 0;
-        s->type = vdx_types_Windows;
+        s->any.children = 0;
+        s->any.type = vdx_types_Windows;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "ClientHeight") &&
                      attr->children && attr->children->content)
@@ -3168,8 +3168,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             if (!strcmp((char *)child->name, "Window"))
             { if (child->children && child->children->content)
                 s->Window = atoi((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3179,8 +3179,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_XForm *s;
         if (p) { s = (struct vdx_XForm *)(p); }
         else { s = g_new0(struct vdx_XForm, 1); }
-        s->children = 0;
-        s->type = vdx_types_XForm;
+        s->any.children = 0;
+        s->any.type = vdx_types_XForm;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -3215,8 +3215,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "Width"))
             { if (child->children && child->children->content)
                 s->Width = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3226,8 +3226,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_XForm1D *s;
         if (p) { s = (struct vdx_XForm1D *)(p); }
         else { s = g_new0(struct vdx_XForm1D, 1); }
-        s->children = 0;
-        s->type = vdx_types_XForm1D;
+        s->any.children = 0;
+        s->any.type = vdx_types_XForm1D;
         for (attr = cur->properties; attr; attr = attr->next) {
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
@@ -3244,8 +3244,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
             else if (!strcmp((char *)child->name, "EndY"))
             { if (child->children && child->children->content)
                 s->EndY = atof((char *)child->children->content); }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3255,8 +3255,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_cp *s;
         if (p) { s = (struct vdx_cp *)(p); }
         else { s = g_new0(struct vdx_cp, 1); }
-        s->children = 0;
-        s->type = vdx_types_cp;
+        s->any.children = 0;
+        s->any.type = vdx_types_cp;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -3264,8 +3264,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3275,8 +3275,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_fld *s;
         if (p) { s = (struct vdx_fld *)(p); }
         else { s = g_new0(struct vdx_fld, 1); }
-        s->children = 0;
-        s->type = vdx_types_fld;
+        s->any.children = 0;
+        s->any.type = vdx_types_fld;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -3284,8 +3284,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3295,8 +3295,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_pp *s;
         if (p) { s = (struct vdx_pp *)(p); }
         else { s = g_new0(struct vdx_pp, 1); }
-        s->children = 0;
-        s->type = vdx_types_pp;
+        s->any.children = 0;
+        s->any.type = vdx_types_pp;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -3304,8 +3304,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3315,8 +3315,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_tp *s;
         if (p) { s = (struct vdx_tp *)(p); }
         else { s = g_new0(struct vdx_tp, 1); }
-        s->children = 0;
-        s->type = vdx_types_tp;
+        s->any.children = 0;
+        s->any.type = vdx_types_tp;
         for (attr = cur->properties; attr; attr = attr->next) {
             if (!strcmp((char *)attr->name, "IX") &&
                      attr->children && attr->children->content)
@@ -3324,8 +3324,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         }
         for (child = cur->xmlChildrenNode; child; child = child->next) {
             if (xmlIsBlankNode(child)) { continue; }
-            else s->children =
-                     g_slist_append(s->children,
+            else s->any.children =
+                     g_slist_append(s->any.children,
                                     vdx_read_object(child, theDoc, 0));
         }
         return s;
@@ -3335,8 +3335,8 @@ vdx_read_object(xmlNodePtr cur, VDXDocument *theDoc, void *p)
         struct vdx_text *s;
         if (p) { s = (struct vdx_text *)(p); }
         else { s = g_new0(struct vdx_text, 1); }
-        s->children = 0;
-        s->type = vdx_types_text;
+        s->any.children = 0;
+        s->any.type = vdx_types_text;
         s->text = (char *)cur->content;
         return s;
     }
diff --git a/plug-ins/vdx/visio-types.h b/plug-ins/vdx/visio-types.h
index 107e6fc..4d9111f 100644
--- a/plug-ins/vdx/visio-types.h
+++ b/plug-ins/vdx/visio-types.h
@@ -31,8 +31,7 @@ struct vdx_any
 
 struct vdx_Act
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float Action; /* F=0,0,1,0))",1,SETF(&quot;LockDelete&quot;,&quot;Guard(0)&quot;),SETF(&quot;Loc Unit=BOOL */
     gboolean BeginGroup; /* F=No Formula =0 */
     unsigned int ButtonFace; /* F=No Formula = */
@@ -52,8 +51,7 @@ struct vdx_Act
 
 struct vdx_Align
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float AlignBottom; /* F=IntersectY(Sheet.1972!PinX,Sheet.1972!PinY,Sheet.1972!Angle,10.185039370079DL */
     float AlignCenter; /* F=IntersectX(Sheet.1972!PinX,Sheet.1972!PinY,Sheet.1972!Angle,10.185039370079DL */
     gboolean AlignLeft; /* F=_Marker(1) =1 */
@@ -64,8 +62,7 @@ struct vdx_Align
 
 struct vdx_ArcTo
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=(Scratch.X4+Scratch.B4)*Scratch.C4,-(Scratch.X1-Scratch.Y1)*0.2929,-(Scratch. Unit=DL,IN,MM,PT */
     gboolean Del; /* =1 */
     unsigned int IX; /* */
@@ -75,8 +72,7 @@ struct vdx_ArcTo
 
 struct vdx_Char
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int AsianFont; /* F=Inh */
     gboolean Case; /* F=0,Inh =0 */
     Color Color; /* F=0,0,0,19))",0,1,16))",1,14,15,2,4,GUARD(IF(Sheet.5!User.active,0,19)),HSL(0,0 */
@@ -106,23 +102,20 @@ struct vdx_Char
 
 struct vdx_ColorEntry
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
     char * RGB; /* =#000000,#000080,#0000FF,#007D7B,#008000,#008080,#00FF00,#00FFFF,#1A1A1A,#33333 */
 };
 
 struct vdx_Colors
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int ColorEntry; /* = */
 };
 
 struct vdx_Connect
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * FromCell; /* =AlignBottom,AlignTop,BeginX,BeginY,Controls.Row_1,Controls.Row_10,Controls.Row */
     unsigned int FromPart; /* =10,100,101,102,103,104,105,106,107,108,109,11,12,4,6,7,8,9 */
     gboolean FromPart_exists;
@@ -137,8 +130,7 @@ struct vdx_Connect
 
 struct vdx_Connection
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean AutoGen; /* F=Inh,No Formula =0,1 */
     float DirX; /* F=-1IN,-25.4MM,Inh,No Formula Unit=IN,MM,NUM */
     float DirY; /* F=-1IN,-25.4MM,Inh,No Formula Unit=IN,MM,NUM */
@@ -153,15 +145,13 @@ struct vdx_Connection
 
 struct vdx_Connects
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int Connect; /* = */
 };
 
 struct vdx_Control
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean CanGlue; /* F=Inh =0,1 */
     unsigned int ID; /* */
     unsigned int IX; /* */
@@ -177,23 +167,20 @@ struct vdx_Control
 
 struct vdx_CustomProp
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * Name; /* =_TemplateID */
     char * PropType; /* =String */
 };
 
 struct vdx_CustomProps
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * CustomProp; /* =TC010483951033,TC010492811033,TC010498121033,TC010498511033 */
 };
 
 struct vdx_DocProps
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean AddMarkup; /* F=No Formula =0 */
     unsigned int DocLangID; /* =1033,1053,2057 */
     gboolean LockPreview; /* F=No Formula =0,1 */
@@ -205,8 +192,7 @@ struct vdx_DocProps
 
 struct vdx_DocumentProperties
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * AlternateNames; /* =?,rt\export,Õ?ç²?à ??Õ­ç²?᫤à¶?ã·¤? */
     int BuildNumberCreated; /* =-1,1245,2072,671351279,671351309,671353298,671355894,738200627,738200720,73820 */
     unsigned int BuildNumberEdited; /* =671351309,671352994,671353097,671353298,671353406,738200720,738203013 */
@@ -224,8 +210,7 @@ struct vdx_DocumentProperties
 
 struct vdx_DocumentSettings
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int DefaultFillStyle; /* */
     gboolean DefaultFillStyle_exists;
     unsigned int DefaultGuideStyle; /* */
@@ -248,8 +233,7 @@ struct vdx_DocumentSettings
 
 struct vdx_DocumentSheet
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int FillStyle; /* */
     gboolean FillStyle_exists;
     unsigned int LineStyle; /* */
@@ -262,8 +246,7 @@ struct vdx_DocumentSheet
 
 struct vdx_Ellipse
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=Inh,Width*0,Width*0.021265284423179,Width*0.021346344438398,Width*0.026441036 Unit=DL,IN,MM */
     float B; /* F=Height*0,Height*0.050632911392406,Height*0.061728395014259,Height*0.072100313 Unit=DL,IN,MM */
     float C; /* F=Geometry1.X1,Inh,Width*0.01063264221159,Width*0.010673172221386,Width*0.01322 Unit=DL,IN,MM */
@@ -275,8 +258,7 @@ struct vdx_Ellipse
 
 struct vdx_EllipticalArcTo
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=Controls.Row_1,Controls.X1,Geometry1.A2,Geometry3.A2,Inh,Width,Width*0,Width* Unit=DL,IN,MM */
     float B; /* F=2*Scratch.X1,Controls.Row_1.Y,Controls.Y1,Geometry1.B2,Geometry1.Y1-Scratch.Y Unit=DL,IN,MM */
     float C; /* F=-1E-14,Inh,_ELLIPSE_THETA(-0.004496519859392,1,0.76771653543307,1.14175745231 Unit=DA */
@@ -289,8 +271,7 @@ struct vdx_EllipticalArcTo
 
 struct vdx_Event
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int EventDblClick; /* F=1001&quot;)",DEFAULTEVENT(),GUARD(0),GUARD(DOCMD(1312)),Inh,NA(),No Formula,O */
 /* ? Event.EventDblClick.Err */
     float EventDrop; /* F=0,DOCMD(1048),DOCMD(1312)+SETF(&quot;EventDrop&quot;,GUARD(DOCMD(1046))),DOCM */
@@ -301,8 +282,7 @@ struct vdx_Event
 
 struct vdx_EventItem
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean Action; /* =1 */
     gboolean Enabled; /* =1 */
     unsigned int EventCode; /* =1,2 */
@@ -314,15 +294,13 @@ struct vdx_EventItem
 
 struct vdx_EventList
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int EventItem; /* = */
 };
 
 struct vdx_FaceName
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * CharSets; /* =-2147483648 0,0 0,1 0,1048577 0,1073742335 -65536,1073873055 -539557888,107426 */
     unsigned int Flags; /* =260,261,325,327,357,421 */
     gboolean Flags_exists;
@@ -334,15 +312,13 @@ struct vdx_FaceName
 
 struct vdx_FaceNames
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int FaceName; /* = */
 };
 
 struct vdx_Field
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean Calendar; /* F=No Formula =0 */
     gboolean Del; /* =1 */
     gboolean EditMode; /* F=Inh =0 */
@@ -358,8 +334,7 @@ struct vdx_Field
 
 struct vdx_Fill
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     Color FillBkgnd; /* F=0,1,14,15,18,2,8,HSL(0,0,128),HSL(0,0,181),HSL(0,0,210),HSL(0,0,240),HSL(0,0, */
     float FillBkgndTrans; /* F=0%,Inh,No Formula */
     Color FillForegnd; /* F=0,0,0,20)",0,1,17)",0,10,19))",1,10,11,12,13,14,15,17,18,19,2,20,21,23,3,4,5, */
@@ -379,8 +354,7 @@ struct vdx_Fill
 
 struct vdx_FontEntry
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int Attributes; /* =0,16896,19072,19140,19172,23040,23108,23140,4096,4160,4196 */
     gboolean Attributes_exists;
     unsigned int CharSet; /* =0,2 */
@@ -395,15 +369,13 @@ struct vdx_FontEntry
 
 struct vdx_Fonts
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int FontEntry; /* = */
 };
 
 struct vdx_Foreign
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float ImgHeight; /* F=Height*1,Height*1.0169491525424,Height*1.0189032166643,Height*1.0189032166645 Unit=IN */
     float ImgOffsetX; /* F=ImgWidth*-0.00091096324461408,ImgWidth*-0.00091096324461409,ImgWidth*-0.00092 Unit=IN */
     float ImgOffsetY; /* F=ImgHeight*-0.0086805555555564,ImgHeight*-0.0095961281708911,ImgHeight*-0.0095 Unit=IN */
@@ -412,8 +384,7 @@ struct vdx_Foreign
 
 struct vdx_ForeignData
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float CompressionLevel; /* =0.05,1.000000 */
     char * CompressionType; /* =GIF,JPEG,PNG */
     unsigned int ExtentX; /* =10112,10370,10413,10520,10523,107,10883,10948,11,11013,11043,11073,11138,11203 */
@@ -432,8 +403,7 @@ struct vdx_ForeignData
 
 struct vdx_Geom
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
     gboolean NoFill; /* F=GUARD(1),GUARD(TRUE),Guard(1),Inh =0,1 */
     gboolean NoLine; /* F=Inh,No Formula =0,1 */
@@ -443,8 +413,7 @@ struct vdx_Geom
 
 struct vdx_Group
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int DisplayMode; /* F=2,Inh =2 */
     gboolean DontMoveChildren; /* F=FALSE,Inh */
     gboolean IsDropTarget; /* F=FALSE,Inh */
@@ -455,8 +424,7 @@ struct vdx_Group
 
 struct vdx_HeaderFooter
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * FooterLeft; /* =&amp;f&amp;e&amp;n */
     float FooterMargin; /* Unit=IN_F,MM */
     char * HeaderFooterColor; /* =#000000 */
@@ -468,8 +436,7 @@ struct vdx_HeaderFooter
 
 struct vdx_HeaderFooterFont
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean CharSet; /* =0 */
     unsigned int ClipPrecision; /* =0,2 */
     gboolean ClipPrecision_exists;
@@ -493,16 +460,14 @@ struct vdx_HeaderFooterFont
 
 struct vdx_Help
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * Copyright; /* F=Inh =,&#xe000;,Copyright (C) 1997 Visio Corporation. Med ensamrätt.,Copyrigh */
     char * HelpTopic; /* F=Inh =,!#52533,!#52846,!#55170,!#55174,!#55477,!#55488,!#55499,&#xe000;,ET.HLP */
 };
 
 struct vdx_Hyperlink
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * Address; /* =,http://netc.members.microsoft.com/,http://officeupdate.com/visio/,http://vdxt */
     gboolean Default; /* F=No Formula =0 */
     char * Description; /* =,VDXtoSVG Home Page,Visio Network Solutions */
@@ -518,15 +483,13 @@ struct vdx_Hyperlink
 
 struct vdx_Icon
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
 };
 
 struct vdx_Image
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float Blur; /* F=0% */
     float Brightness; /* F=50% */
     float Contrast; /* F=50% */
@@ -538,8 +501,7 @@ struct vdx_Image
 
 struct vdx_InfiniteLine
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=IF(Width&gt;0,Width,1DL),If(Width&gt;0,Width,0.039370078740157DL) Unit=DL */
     float B; /* F=Height*0.5 Unit=DL */
     unsigned int IX; /* */
@@ -549,8 +511,7 @@ struct vdx_InfiniteLine
 
 struct vdx_Layer
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean Active; /* =0 */
     unsigned int Color; /* =255 */
     float ColorTrans; /* F=No Formula =0,0.5 */
@@ -568,15 +529,13 @@ struct vdx_Layer
 
 struct vdx_LayerMem
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * LayerMember; /* F=No Formula =,&#xe000;,0,0;1,1,2,4,5,6,î?? */
 };
 
 struct vdx_Layout
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int ConFixedCode; /* F=0,Inh =0,3,6 */
     gboolean ConLineJumpCode; /* F=0,Inh =0 */
     gboolean ConLineJumpDirX; /* F=0,Inh =0 */
@@ -596,8 +555,7 @@ struct vdx_Layout
 
 struct vdx_Line
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int BeginArrow; /* F=0,3,41,4)))',4,GUARD(0),Inh,USE(&quot;Composite&quot;) =0,1,10,11,13,14,15,25 */
     unsigned int BeginArrowSize; /* F=1,2,IF(User.UMLError,0,2),Inh =0,1,2,3,4 */
     unsigned int EndArrow; /* F=0,3,41,4)))',4,GUARD(0),Inh =0,1,10,11,12,13,14,15,16,4,5,9 */
@@ -612,8 +570,7 @@ struct vdx_Line
 
 struct vdx_LineTo
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean Del; /* =1 */
     unsigned int IX; /* */
     float X; /* F=(Width+Scratch.Y1)/2,-0.5*Scratch.A1*AND(Scratch.B1&lt;&gt;Scratch.C1,Scratch Unit=IN,IN_F,MM,PT */
@@ -622,8 +579,7 @@ struct vdx_LineTo
 
 struct vdx_Master
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int AlignName; /* =2 */
     gboolean AlignName_exists;
     char * BaseID; /* ={0018B32E-000A-F00D-0000-000000000000},{001AFBE6-0020-F00D-0000-000000000000}, */
@@ -643,8 +599,7 @@ struct vdx_Master
 
 struct vdx_Misc
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int BegTrigger; /* F=Inh,No Formula,_XFTRIGGER(Class!EventXFMod),_XFTRIGGER(Class.102!EventXFMod), */
 /* ? Misc.BegTrigger.Err */
     gboolean Calendar; /* F=Inh =0 */
@@ -671,8 +626,7 @@ struct vdx_Misc
 
 struct vdx_MoveTo
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
     float X; /* F=(Width*1-Height*0.5)*NOT(Scratch.A1),(Width-Scratch.Y1)/2,-Geometry1.X2,-Scra Unit=IN,IN_F,MM,PT */
     float Y; /* F=(Height+Scratch.X1)/2,-2*User.Margin,-Height*0.2,-Height*0.25,-Scratch.A1,-Us Unit=CM,IN,MM,PT */
@@ -680,8 +634,7 @@ struct vdx_MoveTo
 
 struct vdx_NURBSTo
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=Inh =-0.06462336099700583,-0.314670638477898,-0.6860878983991592,-0.701050922 */
     float B; /* F=Inh =1 */
     float C; /* F=Inh =-0.2847946620216469,-0.314670638477898,-0.412922655298515,-0.69374622906 */
@@ -694,8 +647,7 @@ struct vdx_NURBSTo
 
 struct vdx_Page
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int BackPage; /* =10,4,5,6,8 */
     gboolean BackPage_exists;
     gboolean Background; /* =1 */
@@ -709,8 +661,7 @@ struct vdx_Page
 
 struct vdx_PageLayout
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float AvenueSizeX; /* F=0.29527559055118DL,0.375DL,Inh Unit=IN,MM */
     float AvenueSizeY; /* F=0.29527559055118DL,0.375DL,Inh Unit=IN,MM */
     float BlockSizeX; /* F=0.19685039370079DL,0.25DL,Inh Unit=IN,MM */
@@ -742,8 +693,7 @@ struct vdx_PageLayout
 
 struct vdx_PageProps
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float DrawingScale; /* F=No Formula Unit=F_I,IN,IN_F,M,MM */
     unsigned int DrawingScaleType; /* F=No Formula =0,1,3,4 */
     unsigned int DrawingSizeType; /* F=No Formula =0,1,2,3,4,5,6 */
@@ -761,8 +711,7 @@ struct vdx_PageProps
 
 struct vdx_PageSheet
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int FillStyle; /* */
     gboolean FillStyle_exists;
     unsigned int LineStyle; /* */
@@ -774,8 +723,7 @@ struct vdx_PageSheet
 
 struct vdx_Para
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int Bullet; /* F=0,Inh =0,1,2 */
     unsigned int BulletFont; /* F=Inh */
     char * BulletFontSize; /* F=Inh =-1,0) */
@@ -795,8 +743,7 @@ struct vdx_Para
 
 struct vdx_PolylineTo
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=POLYLINE(0, 0, 0,1, 0,0, 1,0),POLYLINE(0, 0, 0.085708617154953,0, 0.085708617 Unit=POLYLINE */
     unsigned int IX; /* */
     float X; /* F=Width*0,Width*0.13061305469215,Width*0.2612261093843,Width*0.39183916407645,W */
@@ -805,16 +752,14 @@ struct vdx_PolylineTo
 
 struct vdx_PreviewPicture
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int Size; /* =1056,1064,1088,1124,1168,1192,1352,1372,1980,20740,20760,20936,20980,21032,210 */
     gboolean Size_exists;
 };
 
 struct vdx_PrintProps
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean CenterX; /* F=Inh =0,1 */
     gboolean CenterY; /* F=Inh =0,1 */
     gboolean OnPage; /* F=Inh =0,1 */
@@ -834,8 +779,7 @@ struct vdx_PrintProps
 
 struct vdx_PrintSetup
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float PageBottomMargin; /* =0.25,0.55,106.63 */
     float PageLeftMargin; /* =0.25,138.38 */
     float PageRightMargin; /* =0.25,138.38 */
@@ -852,8 +796,7 @@ struct vdx_PrintSetup
 
 struct vdx_Prop
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean Calendar; /* F=No Formula =0 */
     char * Format; /* F=Guard(ThePage!Prop.Theme.Format),Inh,No Formula,ThePage!Prop.Theme.Format =,& */
     unsigned int ID; /* */
@@ -871,8 +814,7 @@ struct vdx_Prop
 
 struct vdx_Protection
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean LockAspect; /* F=0,Inh =0,1 */
     gboolean LockBegin; /* F=0,Inh =0 */
     gboolean LockCalcWH; /* F=0,Inh =0,1 */
@@ -894,8 +836,7 @@ struct vdx_Protection
 
 struct vdx_RulerGrid
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int XGridDensity; /* F=8,Inh =0,4,8 */
     float XGridOrigin; /* F=0DL,Inh Unit=IN */
     float XGridSpacing; /* F=0DL,Inh Unit=CM,IN,MM */
@@ -910,8 +851,7 @@ struct vdx_RulerGrid
 
 struct vdx_Scratch
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=0)",0,0,1)+Int(Sheet.21!Width/Scratch.X1)',0,0,1)+Int(Sheet.38!Width/Scratch. Unit=BOOL,DA,DL,DT,IN,MM,STR */
     float B; /* F=(LineWeight+(EndArrowSize+2)*0.02IN*Scratch.B1),(LineWeight+(EndArrowSize+2)* Unit=BOOL,DEG,DL,DT,IN,MM,PT,STR */
     float C; /* F=(ABS(Width)&lt;2*Scratch.B2),0,Geometry1.Y7,Geometry1.Y1)",0,LineWeight*-3,0) Unit=BOOL,DA,DL,IN,MM,PT,STR */
@@ -923,8 +863,7 @@ struct vdx_Scratch
 
 struct vdx_Shape
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int Data1; /* =,1001 */
     unsigned int Data2; /* = */
     unsigned int Data3; /* = */
@@ -948,14 +887,12 @@ struct vdx_Shape
 
 struct vdx_Shapes
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
 };
 
 struct vdx_SplineKnot
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=Inh =0,0.01588792876351469,0.019830308804445,0.049324479568668,0.055118110236 */
     unsigned int IX; /* */
     float X; /* F=Geometry1.X1,Inh,Scratch.X2/(12/81),Sheet.77!Width*1.4396670792842,Sheet.77!W */
@@ -964,8 +901,7 @@ struct vdx_SplineKnot
 
 struct vdx_SplineStart
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float A; /* F=Inh =0 */
     float B; /* F=Inh =0 */
     float C; /* F=Inh =0.13484716066176,0.1698959365932391,0.1910708009830822,0.197567972399904 */
@@ -977,8 +913,7 @@ struct vdx_SplineStart
 
 struct vdx_StyleProp
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean EnableFillProps; /* F=0,1,Inh =0,1 */
     gboolean EnableLineProps; /* F=0,1,Inh =0,1 */
     gboolean EnableTextProps; /* F=0,1,Inh =0,1 */
@@ -987,8 +922,7 @@ struct vdx_StyleProp
 
 struct vdx_StyleSheet
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int FillStyle; /* */
     gboolean FillStyle_exists;
     unsigned int ID; /* */
@@ -1002,8 +936,7 @@ struct vdx_StyleSheet
 
 struct vdx_Tab
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     gboolean Alignment; /* =0 */
     unsigned int IX; /* */
     float Position; /* Unit=DP,MM */
@@ -1011,15 +944,13 @@ struct vdx_Tab
 
 struct vdx_Tabs
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
 };
 
 struct vdx_Text
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
     unsigned int cp; /* = */
     float fld; /* =0.006,0.009,0.011,0.031,0.042,0.046,0.048,0.061,0.063,0.071,0.081,0.084,0.086, */
@@ -1029,8 +960,7 @@ struct vdx_Text
 
 struct vdx_TextBlock
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float BottomMargin; /* F=0DP,0DT,0PT,1PT,2PT,4PT,Char.Size*0.5,Char.Size/4,Inh Unit=PT */
     float DefaultTabStop; /* F=0.59055118110236DP,0.5DP,Inh =0.5,0.590551,0.59055118110236,0.590551181102362 */
     float LeftMargin; /* F=0DP,0PT,1PT,2PT,4PT,Char.Size/2,Inh Unit=PT */
@@ -1044,8 +974,7 @@ struct vdx_TextBlock
 
 struct vdx_TextXForm
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float TxtAngle; /* F=-Angle,-Scratch.A1,90DEG),0DEG,180DEG)",90DEG),0DEG,180DEG)',GRAVITY(Angle,-6 Unit=DEG */
 /* ? TextXForm.TxtAngle.Err */
     float TxtHeight; /* F=0,TEXTHEIGHT(TheText,TxtWidth),TEXTWIDTH(TheText)))",1,TEXTWIDTH(TheText),TEX Unit=CM,IN,IN_F,MM */
@@ -1058,8 +987,7 @@ struct vdx_TextXForm
 
 struct vdx_User
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int ID; /* */
     char * Name; /* =216Nff,216Npp */
     char * NameU; /* =1stLegDir,1stLegDirInd,1stLegDirLook,216V,216Vff,216Vpp,28V,28Vpp,AL_ChildLayo */
@@ -1069,8 +997,7 @@ struct vdx_User
 
 struct vdx_VisioDocument
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int DocLangID; /* =1033,1053,2057 */
     gboolean DocLangID_exists;
     unsigned int EventList; /* = */
@@ -1087,8 +1014,7 @@ struct vdx_VisioDocument
 
 struct vdx_Window
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * ContainerType; /* =Page */
     char * Document; /* =C:\Archivos de programa\Microsoft Office\Visio11\1033\UMLACT_M.VSS,C:\Archivos */
     gboolean DynamicGridEnabled; /* =0,1 */
@@ -1129,8 +1055,7 @@ struct vdx_Window
 
 struct vdx_Windows
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int ClientHeight; /* =587,605,607,609,612,621,625,641,643,681,791,851,855,864,868,871,875,882,890 */
     gboolean ClientHeight_exists;
     unsigned int ClientWidth; /* =1020,1022,1024,1095,1119,1125,1156,1184,1236,1280,1680,818,819,828 */
@@ -1140,8 +1065,7 @@ struct vdx_Windows
 
 struct vdx_XForm
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float Angle; /* F=-0.5235987756666,-90DEG,-Scratch.B1*90DEG,ATAN2(EndY-BeginY,EndX-BeginX),ATan Unit=DEG */
     gboolean FlipX; /* F=FlipY,GUARD(0),GUARD(FALSE),Guard(0),Guard(EndX&lt;BeginX),Guard(FALSE),Inh,S */
     gboolean FlipY; /* F=BeginY&lt;EndY)",BeginY&lt;EndY)',FlipX,GUARD(0),GUARD(EndY&lt;BeginY),GUARD( */
@@ -1156,8 +1080,7 @@ struct vdx_XForm
 
 struct vdx_XForm1D
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     float BeginX; /* F=GUARD(Sheet.10!PinX),GUARD(Sheet.5!LocPinX),Guard(Sheet.6!Width+Sheet.9!Width Unit=IN,IN_F,MM */
 /* ? XForm1D.BeginX.Err */
     float BeginY; /* F=GUARD(Sheet.13!PinY+Sheet.13!Height),GUARD(Sheet.5!LocPinY),GUARD(Sheet.8!Pin Unit=IN,IN_F,MM */
@@ -1170,36 +1093,31 @@ struct vdx_XForm1D
 
 struct vdx_cp
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
 };
 
 struct vdx_fld
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
 };
 
 struct vdx_pp
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
 };
 
 struct vdx_tp
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     unsigned int IX; /* */
 };
 
 struct vdx_text
 {
-    GSList *children;
-    char type;
+    struct vdx_any any;
     char * text; /* */
 };
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]