File: db.mli

package info (click to toggle)
ocaml-odoc 3.0.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,104 kB
  • sloc: ml: 59,291; javascript: 2,572; sh: 566; makefile: 31
file content (23 lines) | stat: -rw-r--r-- 957 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module Entry = Entry
module Storage = Storage
module Type_polarity = Type_polarity
module Typexpr = Typexpr
module Occurences = Storage.Occurences
module String_automata = String_automata

type t = Storage.db =
  { db_names : String_automata.t
  ; db_pos_types : String_automata.t Occurences.t
  ; db_neg_types : String_automata.t Occurences.t
  }
(** The type of a search database.

    [db_names] is for text-based part of the query and [db_types] for the
    type-based part.

    [db_types] has [Entry.t array Int_map.t] ([Occ.t]) as a payload because we want
    the query [blabla : int -> int -> _] to return only entries that take at
    least two ints as arguments, an entry of type [int -> string] is invalid.
    The [Int_map.t] maps a number of occurences to a set of entries. See {!Occ}.
    [db_types] still is a suffix tree, so you can search in it only for text. The
    way we transform types into searchable text is in {!Type_polarity}. *)