     CAIRO_PATH_CLOSE_PATH ;
 
 ! NEED TO DO UNION HERE
-C-STRUCT: cairo_path_data_t-point
-    { "double" "x" }
-    { "double" "y" } ;
-
-C-STRUCT: cairo_path_data_t-header
-    { "cairo_path_data_type_t" "type" }
-    { "int" "length" } ;
-
-C-UNION: cairo_path_data_t "cairo_path_data_t-point" "cairo_path_data_t-header" ;
-
-C-STRUCT: cairo_path_t
-    { "cairo_status_t"      "status" }
-    { "cairo_path_data_t*"  "data" }
-    { "int"                 "num_data" } ;
+STRUCT: cairo_path_data_t-point
+    { x double }
+    { y double } ;
+
+STRUCT: cairo_path_data_t-header
+    { type cairo_path_data_type_t }
+    { length int } ;
+
+UNION-STRUCT: cairo_path_data_t 
+    { point  cairo_path_data_t-point }
+    { header cairo_path_data_t-header } ;
+
+STRUCT: cairo_path_t
+    { status   cairo_status_t      }
+    { data     cairo_path_data_t*  }
+    { num_data int                 } ;
 
 FUNCTION: cairo_path_t*
 cairo_copy_path ( cairo_t* cr ) ;


TYPEDEF: void* cairo_font_face_t

C-STRUCT: cairo_glyph_t
  { "ulong"     "index" }
  { "double"    "x" }
  { "double"    "y" } ;

C-STRUCT: cairo_text_extents_t
    { "double" "x_bearing" }
    { "double" "y_bearing" }
    { "double" "width" }
    { "double" "height" }
    { "double" "x_advance" }
    { "double" "y_advance" } ;

C-STRUCT: cairo_font_extents_t
    { "double" "ascent" }
    { "double" "descent" }
    { "double" "height" }
    { "double" "max_x_advance" }
    { "double" "max_y_advance" } ;

TYPEDEF: int cairo_font_slant_t
C-ENUM:


TYPEDEF: void* cairo_write_func_t
: cairo-write-func ( quot -- callback )
    [ cairo_status_t { void* uchar* int } "cdecl" ] dip alien-callback ; inline
                          
TYPEDEF: void* cairo_read_func_t
: cairo-read-func ( quot -- callback )
    [ cairo_status_t { void* uchar* int } "cdecl" ] dip alien-callback ; inline

! Functions for manipulating state objects
FUNCTION: cairo_t*
