sig
  type write_handler = string -> int -> int -> unit
  val write_raw_byte : string -> Dfm.Writer.write_handler -> int -> unit
  val write_raw_int8 : Dfm.Writer.write_handler -> int -> unit
  val write_raw_int16 : Dfm.Writer.write_handler -> int -> unit
  val write_raw_int32 : Dfm.Writer.write_handler -> int32 -> unit
  val write_raw_int64 : Dfm.Writer.write_handler -> int64 -> unit
  val write_raw_extended_image :
    Dfm.Writer.write_handler -> int64 * int -> unit
  val write_raw_extended : Dfm.Writer.write_handler -> float -> unit
  val write_raw_short_string : Dfm.Writer.write_handler -> string -> unit
  val write_raw_zero_terminated_string :
    Dfm.Writer.write_handler -> string -> unit
  val write_resource_header :
    Dfm.Writer.write_handler -> string -> int -> unit
  val write_value : Dfm.Writer.write_handler -> Dfm.value_type -> unit
  val write_int8 : Dfm.Writer.write_handler -> int -> unit
  val write_int16 : Dfm.Writer.write_handler -> int -> unit
  val write_int32 : Dfm.Writer.write_handler -> int32 -> unit
  val write_int64 : Dfm.Writer.write_handler -> int64 -> unit
  val write_int : Dfm.Writer.write_handler -> int -> unit
  val write_string : Dfm.Writer.write_handler -> string -> unit
  val write_wide_string :
    Dfm.Writer.write_handler -> Unicode.utf16_string -> unit
  val write_char : Dfm.Writer.write_handler -> char -> unit
  val write_wchar : Dfm.Writer.write_handler -> int -> unit
  val write_bool : Dfm.Writer.write_handler -> bool -> unit
  val write_ident : Dfm.Writer.write_handler -> string -> unit
  val write_single : Dfm.Writer.write_handler -> float -> unit
  val write_double : Dfm.Writer.write_handler -> float -> unit
  val write_extended_image : Dfm.Writer.write_handler -> int64 * int -> unit
  val write_extended : Dfm.Writer.write_handler -> float -> unit
  val write_currency : Dfm.Writer.write_handler -> float -> unit
  val write_date : Dfm.Writer.write_handler -> float -> unit
  val write_binary : Dfm.Writer.write_handler -> Dfm.byte_array -> unit
  val write_nil : Dfm.Writer.write_handler -> unit
  val write_null : Dfm.Writer.write_handler -> unit
  val write_property_name : Dfm.Writer.write_handler -> string -> unit
  val write_list_begin : Dfm.Writer.write_handler -> unit
  val write_list_end : Dfm.Writer.write_handler -> unit
  val write_collection_begin : Dfm.Writer.write_handler -> unit
  val write_collection_end : Dfm.Writer.write_handler -> unit
  val write_set_begin : Dfm.Writer.write_handler -> unit
  val write_set_end : Dfm.Writer.write_handler -> unit
  val write_set_element :
    Dfm.Writer.write_handler ->
    [ `char of char | `int of int | `tag of string | `wchar of int ] -> unit
  val write_signature : Dfm.Writer.write_handler -> unit
  val write_component :
    Dfm.Writer.write_handler ->
    Dfm.filer_flags -> int -> string -> string -> unit
  val write_variant : Dfm.Writer.write_handler -> Dfm.variant -> unit
  val create :
    ?resource_header:bool ->
    string ->
    Pervasives.out_channel ->
    [> `writing of
         (unit -> unit) list Pervasives.ref *
         (string ->
          [< `binary of Dfm.byte_array
           | `bool of bool
           | `char of char
           | `currency of float
           | `efloat of float * (int64 * int)
           | `end_of_list
           | `end_of_record
           | `float of float
           | `int of int
           | `int32 of int32
           | `int64 of int64
           | `list of [< `any | `record ]
           | `nil
           | `none
           | `null
           | `record
           | `sfloat of float
           | `some
           | `string of string
           | `tag of string
           | `time of float
           | `wchar of int
           | `wstring of Unicode.utf16_string ] ->
          unit) ]
end