quote
$(Expr(:toplevel, quote
    const gboxed_types = Any[]
    mutable struct cairoContext <: GBoxed
        handle::Ptr{cairoContext}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoContext) = begin
                    ccall(("cairo_gobject_context_get_type", libcairo_gobject), GType, ())
                end
            function cairoContext(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoContext)
        end
    end
    mutable struct cairoDevice <: GBoxed
        handle::Ptr{cairoDevice}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoDevice) = begin
                    ccall(("cairo_gobject_device_get_type", libcairo_gobject), GType, ())
                end
            function cairoDevice(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoDevice)
        end
    end
    mutable struct cairoSurface <: GBoxed
        handle::Ptr{cairoSurface}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoSurface) = begin
                    ccall(("cairo_gobject_surface_get_type", libcairo_gobject), GType, ())
                end
            function cairoSurface(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoSurface)
        end
    end
    mutable struct cairoMatrix
        handle::Ptr{cairoMatrix}
    end
    mutable struct cairoPattern <: GBoxed
        handle::Ptr{cairoPattern}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoPattern) = begin
                    ccall(("cairo_gobject_pattern_get_type", libcairo_gobject), GType, ())
                end
            function cairoPattern(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoPattern)
        end
    end
    mutable struct cairoRegion <: GBoxed
        handle::Ptr{cairoRegion}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoRegion) = begin
                    ccall(("cairo_gobject_region_get_type", libcairo_gobject), GType, ())
                end
            function cairoRegion(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoRegion)
        end
    end
    mutable struct cairoFontOptions <: GBoxed
        handle::Ptr{cairoFontOptions}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoFontOptions) = begin
                    ccall(("cairo_gobject_font_options_get_type", libcairo_gobject), GType, ())
                end
            function cairoFontOptions(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoFontOptions)
        end
    end
    mutable struct cairoFontFace <: GBoxed
        handle::Ptr{cairoFontFace}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoFontFace) = begin
                    ccall(("cairo_gobject_font_face_get_type", libcairo_gobject), GType, ())
                end
            function cairoFontFace(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoFontFace)
        end
    end
    mutable struct cairoScaledFont <: GBoxed
        handle::Ptr{cairoScaledFont}
        begin
            (GLib.g_type(::Type{T}) where T <: cairoScaledFont) = begin
                    ccall(("cairo_gobject_scaled_font_get_type", libcairo_gobject), GType, ())
                end
            function cairoScaledFont(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                x = new(ref)
                if own
                    finalizer(x) do x
                        GLib.delboxed(x)
                    end
                end
                x
            end
            push!(gboxed_types, cairoScaledFont)
        end
    end
    mutable struct cairoPath
        handle::Ptr{cairoPath}
    end
    begin
        struct _cairoRectangle
            x::Float64
            y::Float64
            width::Float64
            height::Float64
        end
        mutable struct cairoRectangle <: GBoxed
            handle::Ptr{_cairoRectangle}
            begin
                (GLib.g_type(::Type{T}) where T <: cairoRectangle) = begin
                        ccall(("cairo_gobject_rectangle_get_type", libcairo_gobject), GType, ())
                    end
                function cairoRectangle(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                    x = new(ref)
                    if own
                        finalizer(x) do x
                            GLib.delboxed(x)
                        end
                    end
                    x
                end
                push!(gboxed_types, cairoRectangle)
            end
        end
        unsafe_convert(::Type{Ptr{_cairoRectangle}}, box::cairoRectangle) = begin
                convert(Ptr{_cairoRectangle}, box.handle)
            end
    end
    begin
        struct _cairoRectangleInt
            x::Int32
            y::Int32
            width::Int32
            height::Int32
        end
        mutable struct cairoRectangleInt <: GBoxed
            handle::Ptr{_cairoRectangleInt}
            begin
                (GLib.g_type(::Type{T}) where T <: cairoRectangleInt) = begin
                        ccall(("cairo_gobject_rectangle_int_get_type", libcairo_gobject), GType, ())
                    end
                function cairoRectangleInt(ref::Ptr{T}, own::Bool = false) where T <: GBoxed
                    x = new(ref)
                    if own
                        finalizer(x) do x
                            GLib.delboxed(x)
                        end
                    end
                    x
                end
                push!(gboxed_types, cairoRectangleInt)
            end
        end
        unsafe_convert(::Type{Ptr{_cairoRectangleInt}}, box::cairoRectangleInt) = begin
                convert(Ptr{_cairoRectangleInt}, box.handle)
            end
    end
    gboxed_cache_init() = begin
            append!(GLib.gboxed_types, gboxed_types)
        end
    export cairoContext, cairoDevice, cairoSurface, cairoMatrix, cairoPattern, cairoRegion, cairoFontOptions, cairoFontFace, cairoScaledFont, cairoPath, cairoRectangle, _cairoRectangle, cairoRectangleInt, _cairoRectangleInt
end))
end
