src/Pure/System/options.ML
changeset 51942 527e39becafc
parent 48698 2585042b1a30
child 51943 3278729bfa38
--- a/src/Pure/System/options.ML	Sun May 12 15:05:15 2013 +0200
+++ b/src/Pure/System/options.ML	Sun May 12 15:08:11 2013 +0200
@@ -8,6 +8,7 @@
 sig
   type T
   val empty: T
+  val typ: T -> string -> string
   val bool: T -> string -> bool
   val int: T -> string -> int
   val real: T -> string -> real
@@ -15,6 +16,10 @@
   val declare: {name: string, typ: string, value: string} -> T -> T
   val decode: XML.body -> T
   val default: unit -> T
+  val default_bool: string -> bool
+  val default_int: string -> int
+  val default_real: string -> real
+  val default_string: string -> string
   val set_default: T -> unit
   val reset_default: unit -> unit
   val load_default: unit -> unit
@@ -35,6 +40,14 @@
 val empty = Options Symtab.empty;
 
 
+(* typ *)
+
+fun typ (Options tab) name =
+  (case Symtab.lookup tab name of
+    SOME opt => #typ opt
+  | NONE => error ("Unknown option " ^ quote name));
+
+
 (* get *)
 
 fun get T parse (Options tab) name =
@@ -87,6 +100,11 @@
     SOME options => options
   | NONE => error "No global default options");
 
+fun default_bool name = bool (default ()) name;
+fun default_int name = int (default ()) name;
+fun default_real name = real (default ()) name;
+fun default_string name = string (default ()) name;
+
 fun set_default options = Synchronized.change global_default (K (SOME options));
 fun reset_default () = Synchronized.change global_default (K NONE);