sig
  module type STRING =
    sig
      type t
      type char
      val length : CCKMP.STRING.t -> int
      val get : CCKMP.STRING.t -> int -> CCKMP.STRING.char
      val char_equal : CCKMP.STRING.char -> CCKMP.STRING.char -> bool
    end
  type 'a gen = unit -> 'a option
  type 'a sequence = ('-> unit) -> unit
  module type S =
    sig
      type string
      type pattern
      val compile : CCKMP.S.string -> CCKMP.S.pattern
      val find :
        pattern:CCKMP.S.pattern -> CCKMP.S.string -> int -> int option
      val search : pattern:CCKMP.S.pattern -> CCKMP.S.string -> int option
      val find_all :
        pattern:CCKMP.S.pattern -> CCKMP.S.string -> int -> int CCKMP.gen
      val seq :
        pattern:CCKMP.S.pattern ->
        CCKMP.S.string -> int -> int CCKMP.sequence
      val search' : pattern:CCKMP.S.string -> CCKMP.S.string -> int option
      val find_all' :
        pattern:CCKMP.S.string -> CCKMP.S.string -> int CCKMP.gen
      val seq' :
        pattern:CCKMP.S.string -> CCKMP.S.string -> int CCKMP.sequence
    end
  module Make :
    functor (Str : STRING->
      sig
        type string = Str.t
        type pattern
        val compile : string -> pattern
        val find : pattern:pattern -> string -> int -> int option
        val search : pattern:pattern -> string -> int option
        val find_all : pattern:pattern -> string -> int -> int gen
        val seq : pattern:pattern -> string -> int -> int sequence
        val search' : pattern:string -> string -> int option
        val find_all' : pattern:string -> string -> int gen
        val seq' : pattern:string -> string -> int sequence
      end
  type string = string
  type pattern
  val compile : string -> pattern
  val find : pattern:pattern -> string -> int -> int option
  val search : pattern:pattern -> string -> int option
  val find_all : pattern:pattern -> string -> int -> int gen
  val seq : pattern:pattern -> string -> int -> int sequence
  val search' : pattern:string -> string -> int option
  val find_all' : pattern:string -> string -> int gen
  val seq' : pattern:string -> string -> int sequence
end