8 sig |
8 sig |
9 type entry = string * string |
9 type entry = string * string |
10 type T = entry list |
10 type T = entry list |
11 val defined: T -> string -> bool |
11 val defined: T -> string -> bool |
12 val get: T -> string -> string option |
12 val get: T -> string -> string option |
13 val get_int: T -> string -> int option |
|
14 val put: entry -> T -> T |
13 val put: entry -> T -> T |
15 val put_int: string * int -> T -> T |
|
16 val remove: string -> T -> T |
14 val remove: string -> T -> T |
17 end; |
15 end; |
18 |
16 |
19 structure Properties: PROPERTIES = |
17 structure Properties: PROPERTIES = |
20 struct |
18 struct |
21 |
19 |
22 type entry = string * string; |
20 type entry = string * string; |
23 type T = entry list; |
21 type T = entry list; |
24 |
22 |
25 fun defined (props: T) name = AList.defined (op =) props name; |
23 fun defined (props: T) name = AList.defined (op =) props name; |
26 |
|
27 fun get (props: T) name = AList.lookup (op =) props name; |
24 fun get (props: T) name = AList.lookup (op =) props name; |
28 fun get_int props name = (case get props name of NONE => NONE | SOME s => Int.fromString s); |
|
29 |
|
30 fun put entry (props: T) = AList.update (op =) entry props; |
25 fun put entry (props: T) = AList.update (op =) entry props; |
31 fun put_int (name, i) = put (name, signed_string_of_int i); |
|
32 |
|
33 fun remove name (props: T) = AList.delete (op =) name props; |
26 fun remove name (props: T) = AList.delete (op =) name props; |
34 |
27 |
35 end; |
28 end; |