opam-version: "2.0"
authors: "Jun Furuse"
maintainer: "jun.furuse@gmail.com"
homepage: "https://bitbucket.org/camlspotter/ppx_poly_record"
bug-reports: "https://bitbucket.org/camlspotter/ppx_poly_record/issues?status=new&status=open"
dev-repo: "hg+https://bitbucket.org/camlspotter/ppx_poly_record"
build: [
  [ "ocaml" "setup.ml" "-configure" "--prefix" prefix ]
  [ "ocaml" "setup.ml" "-build" ]
]
install: [
  [ "ocaml" "setup.ml" "-install" ]
]
remove: [
  [ "ocaml" "setup.ml" "-configure" "--prefix" prefix ]
  [ "ocaml" "setup.ml" "-uninstall" ]
]
depends: [
  "ocaml" {>= "4.03.0"}
  "ocamlfind" {build}
  "omake" {build & < "0.10.1"}
  "ppxx" {>= "1.3.0"}
]
synopsis: "ppx for polymorphic records"
description: """
Polymorphic record in OCaml
=====================================

This ppx adds an extension point `[%poly_record <exp>]` for polymorphic record.

In side `[%poly_record <exp>]`, the record syntax `{ l = e; .. }`, 
`{ e with l = e'; .. }`, `r.l` and `r.l <- e` become for polymorphic records
whose type is `_ Ppx_poly_record.Poly_record.t`. The field information is
encoded into OCaml's object type. For example:

```ocaml
# [%poly_record { x = 1; y = 1.0 }];;
- : < x : int; y : float > Ppx_poly_record.Poly_record.t = <abstr>
```

Implementation of `_ PPx_poly_record.Poly_record.t` is not by OCaml objects:
it has no method table inside therefore safely serializable between different
programs if its fields have no functional value."""
url {
  src: "https://bitbucket.org/camlspotter/ppx_poly_record/get/1.1.1.tar.gz"
  checksum: "md5=c77c69e8e501cd539eab00cbd8b2d355"
}
