File: pa_deriving_tc.ml

package info (click to toggle)
ocaml-deriving-ocsigen 0.6.2-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 628 kB
  • ctags: 1,159
  • sloc: ml: 6,334; makefile: 63; sh: 18
file content (28 lines) | stat: -rw-r--r-- 895 bytes parent folder | download | duplicates (2)
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
(* Copyright Grégoire Henry 2010.
   This file is free software, distributed under the MIT license.
   See the file COPYING for details.
*)

(* Registering type derivers into type-conv. *)

open Camlp4.PreCast

open Pa_deriving_common

let translate_str deriver _ types =
  let _loc = Ast.loc_of_ctyp types in
  let decls = Base.display_errors _loc Type.Translate.decls types in
  Base.derive_str _loc decls deriver

let translate_sig deriver _ types =
  let _loc = Ast.loc_of_ctyp types in
  let decls = Base.display_errors _loc Type.Translate.decls types in
  Base.derive_sig _loc decls deriver

let register desc class_ =
  let module Desc = (val desc : Defs.ClassDescription) in
  let name = String.uncapitalize Desc.classname in
  Pa_type_conv.add_generator name (translate_str class_);
  Pa_type_conv.add_sig_generator name (translate_sig class_)

let _ = Base.add_register_hook register