sig
  val cast : 'Gobject.obj -> Gtk.box Gtk.obj
  module P :
    sig
      val homogeneous : ([> `box ], bool) Gobject.property
      val spacing : ([> `box ], int) Gobject.property
    end
  val create :
    Gtk.Tags.orientation -> Gtk.box Gobject.param list -> Gtk.box Gtk.obj
  external pack_start :
    [> `box ] Gtk.obj ->
    [> `widget ] Gtk.obj -> expand:bool -> fill:bool -> padding:int -> unit
    = "ml_gtk_box_pack_start"
  external pack_end :
    [> `box ] Gtk.obj ->
    [> `widget ] Gtk.obj -> expand:bool -> fill:bool -> padding:int -> unit
    = "ml_gtk_box_pack_end"
  external reorder_child :
    [> `box ] Gtk.obj -> [> `widget ] Gtk.obj -> pos:int -> unit
    = "ml_gtk_box_reorder_child"
  external query_child_packing :
    [> `box ] Gtk.obj -> [> `widget ] Gtk.obj -> Gtk.box_packing
    = "ml_gtk_box_query_child_packing"
  external set_child_packing :
    [> `box ] Gtk.obj ->
    [> `widget ] Gtk.obj ->
    ?expand:bool ->
    ?fill:bool -> ?padding:int -> ?from:Gtk.Tags.pack_type -> unit
    = "ml_gtk_box_set_child_packing_bc" "ml_gtk_box_set_child_packing"
  val make_params :
    cont:(([> `box ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list -> ?homogeneous:bool -> ?spacing:int -> 'b
end