21 val map_base: (string -> string) -> T -> T |
21 val map_base: (string -> string) -> T -> T |
22 val qualify: string -> T -> T |
22 val qualify: string -> T -> T |
23 val add_prefix: bool -> string -> T -> T |
23 val add_prefix: bool -> string -> T -> T |
24 val map_prefix: ((string * bool) list -> T -> T) -> T -> T |
24 val map_prefix: ((string * bool) list -> T -> T) -> T -> T |
25 val is_empty: T -> bool |
25 val is_empty: T -> bool |
|
26 val base_name: T -> string |
26 val pos_of: T -> Position.T |
27 val pos_of: T -> Position.T |
27 val dest: T -> (string * bool) list * string |
28 val dest: T -> (string * bool) list * string |
28 val display: T -> string |
29 val display: T -> string |
29 end |
30 end |
30 |
31 |
54 fun qualify_base path name = |
55 fun qualify_base path name = |
55 if path = "" orelse name = "" then name |
56 if path = "" orelse name = "" then name |
56 else path ^ "." ^ name; |
57 else path ^ "." ^ name; |
57 |
58 |
58 val qualify = map_base o qualify_base; |
59 val qualify = map_base o qualify_base; |
59 (*FIXME should all operations on bare names moved here from name_space.ML ?*) |
60 (*FIXME should all operations on bare names move here from name_space.ML ?*) |
60 |
61 |
61 fun add_prefix sticky prfx b = if prfx = "" then error "empty name prefix" |
62 fun add_prefix sticky prfx b = if prfx = "" then error "empty name prefix" |
62 else (map_binding o apfst) (cons (prfx, sticky)) b; |
63 else (map_binding o apfst) (cons (prfx, sticky)) b; |
63 |
64 |
64 fun map_prefix f (Binding ((prefix, name), pos)) = |
65 fun map_prefix f (Binding ((prefix, name), pos)) = |
65 f prefix (name_pos (name, pos)); |
66 f prefix (name_pos (name, pos)); |
66 |
67 |
67 fun is_empty (Binding ((_, name), _)) = name = ""; |
68 fun is_empty (Binding ((_, name), _)) = name = ""; |
|
69 fun base_name (Binding ((_, name), _)) = name; |
68 fun pos_of (Binding (_, pos)) = pos; |
70 fun pos_of (Binding (_, pos)) = pos; |
69 fun dest (Binding (prefix_name, _)) = prefix_name; |
71 fun dest (Binding (prefix_name, _)) = prefix_name; |
70 |
72 |
71 fun display (Binding ((prefix, name), _)) = |
73 fun display (Binding ((prefix, name), _)) = |
72 let |
74 let |