File: otags_types.mli

package info (click to toggle)
otags 4.05.1-1
  • links: PTS, VCS
  • area: main
  • in suites: buster, sid
  • size: 424 kB
  • ctags: 356
  • sloc: ml: 1,267; sh: 212; makefile: 194
file content (73 lines) | stat: -rw-r--r-- 2,203 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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
(* Otags III
 * 
 * Hendrik Tews Copyright (C) 2010 - 2017
 * 
 * This file is part of "Otags III".
 * 
 * "Otags III" is free software: you can redistribute it and/or
 * modify it under the terms of the GNU General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 * 
 * "Otags III" is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * General Public License in file COPYING in this or one of the parent
 * directories for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with "Otags III". If not, see
 * <http://www.gnu.org/licenses/>.
 * 
 * global type definitions
 * 
 *)

type unit_type =
  | Signature
  | Structure

val string_of_unit_type : unit_type -> string


type comp_ast =
  | Sig_ast of Parsetree.signature
  | Struct_ast of Parsetree.structure


(* the type for the write_tag entry in the tag_functions record *)
type write_tag_t = Location.t -> string -> unit


(* The common interface of the vi and emacs tagging modules is captured
 * in this record. It contains the functions necessary for tagging.
 *)
type tag_functions = {
  (* start_unit file
   * start tagging compilation unit file
   *)
  start_unit : string -> unit;

  (* write_tag loc tag
   * write tag tag at loc
   *)
  write_tag : write_tag_t;

  (* finish one compilation unit *)
  finish_unit : unit -> unit;

  (* finish all tagging *)
  finish_tagging : unit -> unit;
}


(* Exception to wrap an error message and a location to be reported by
 * otags before continuing on the next input file. Lots of other
 * exceptions are transformed into Otags_parsing_error's, these are
 * those exceptions from which otags can recover. Therefore, when this
 * exceptions is raised, the internal state must be in a relatively
 * good shape. After this exception is caught the tags for the current
 * file are written to output, therefore no half tags entry should be
 * laying around somewhere. 
 *)
exception Otags_parsing_error of Location.t * string