Mercurial > urweb
annotate src/mono_fooify.sig @ 2297:6d56080f495c
Fix a read-after-free bug using a timestamp check
author | Adam Chlipala <adam@chlipala.net> |
---|---|
date | Thu, 19 Nov 2015 13:18:58 -0500 |
parents | f81f1930c5d6 |
children |
rev | line source |
---|---|
ziv@2254 | 1 signature MONO_FOOIFY = sig |
ziv@2254 | 2 |
ziv@2254 | 3 (* TODO: don't expose raw references if possible. *) |
ziv@2254 | 4 val nextPvar : int ref |
ziv@2254 | 5 val pvarDefs : ((string * int * (string * int * Mono.typ option) list) list) ref |
ziv@2254 | 6 |
ziv@2254 | 7 datatype foo_kind = Attr | Url |
ziv@2254 | 8 |
ziv@2254 | 9 structure Fm : sig |
ziv@2254 | 10 type t |
ziv@2254 | 11 |
ziv@2254 | 12 type vr = string * int * Mono.typ * Mono.exp * string |
ziv@2254 | 13 |
ziv@2254 | 14 val empty : int -> t |
ziv@2254 | 15 |
ziv@2254 | 16 val lookup : t -> foo_kind -> int -> (int -> t -> vr * t) -> t * int |
ziv@2254 | 17 val lookupList : t -> foo_kind -> Mono.typ -> (int -> t -> vr * t) -> t * int |
ziv@2254 | 18 val enter : t -> t |
ziv@2261 | 19 (* This list should be reversed before adding to list of file declarations. *) |
ziv@2254 | 20 val decls : t -> Mono.decl list |
ziv@2254 | 21 |
ziv@2254 | 22 val freshName : t -> int * t |
ziv@2254 | 23 end |
ziv@2254 | 24 |
ziv@2254 | 25 (* General form used in [Monoize]. *) |
ziv@2254 | 26 val fooifyExp : foo_kind |
ziv@2254 | 27 -> (int -> Mono.typ * string) |
ziv@2254 | 28 -> (int -> string * (string * int * Mono.typ option) list) |
ziv@2254 | 29 -> Fm.t |
ziv@2254 | 30 -> Mono.exp * Mono.typ |
ziv@2254 | 31 -> Mono.exp * Fm.t |
ziv@2254 | 32 |
ziv@2256 | 33 (* Easy-to-use interface in [Sqlcache]. Uses [Fm.canonical]. *) |
ziv@2256 | 34 val canonicalFm : Fm.t ref (* Set at the end of [Monoize]. *) |
ziv@2256 | 35 val urlify : MonoEnv.env -> Mono.exp * Mono.typ -> Mono.exp option |
ziv@2261 | 36 (* This list should be reversed before adding to list of file declarations. *) |
ziv@2256 | 37 val getNewFmDecls : unit -> Mono.decl list |
ziv@2254 | 38 |
ziv@2254 | 39 end |