src/Tools/Metis/PortableIsabelle.sml
author wenzelm
Mon, 02 Jul 2018 16:43:06 +0200
changeset 68572 c8bf6077a87d
parent 59179 cad8a0012a12
child 78650 47d0c333d155
permissions -rw-r--r--
Added tag Isabelle2018-RC1 for changeset cf01d04e94d7

(*  Title:      Tools/Metis/PortableIsabelle.sml
    Author:     Jasmin Blanchette, TU Muenchen
    Copyright   2010

Isabelle-specific setup for Metis. Based on "src/PortablePolyml.sml".
*)

structure Portable :> Portable =
struct

val ml = "isabelle"

fun pointerEqual (x : 'a, y : 'a) = pointer_eq (x, y)

local
  val lock = Mutex.mutex ();
in
  fun critical e () = Multithreading.synchronized "metis" lock e
end;

val randomWord = Random.nextWord
val randomBool = Random.nextBool
val randomInt = Random.nextInt
val randomReal = Random.nextReal

fun time f x = f x (* dummy *)

end

datatype 'a frag = QUOTE of string | ANTIQUOTE of 'a