File: defs.mli

package info (click to toggle)
ocaml-deriving-ocsigen 0.3c-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 600 kB
  • sloc: ml: 5,788; makefile: 298
file content (42 lines) | stat: -rw-r--r-- 1,117 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
(* Copyright Jeremy Yallop 2007.
   Copyright Grégoire Henry 2011.
   This file is free software, distributed under the MIT license.
   See the file COPYING for details.
*)

open Camlp4.PreCast

module type Loc = sig
  val _loc : Loc.t (* location of the type definition being derived *)
end

module type Class = sig
  val generate: Type.decl list -> Ast.str_item
  val generate_sigs: Type.decl list -> Ast.sig_item
end

module type ClassBuilder = functor (Loc: Loc) -> Class

module type FullClass = sig
  val classname: Type.name
  val runtimename: Type.name
  include Class
  val generate_expr:
    Ast.module_expr Type.EMap.t ->
    Type.qname Type.NameMap.t ->
    Type.expr -> Ast.module_expr
end

module type FullClassBuilder = functor (L: Loc) -> FullClass

module type ClassDescription = sig
  val classname: Type.name
  val runtimename: Type.name
  val default_module: Type.name option
  val alpha: Type.name option
  val allow_private: bool
  val predefs: (Type.qname * Type.qname) list
  val depends: (module FullClassBuilder) list
end

type generator = (module ClassDescription) * (module ClassBuilder)