File: pa_deriving_tc.ml

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 (28 lines) | stat: -rw-r--r-- 899 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
(* 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, _ as 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