equal
deleted
inserted
replaced
23 val is_qualified: string -> bool |
23 val is_qualified: string -> bool |
24 val implode: string list -> string |
24 val implode: string list -> string |
25 val explode: string -> string list |
25 val explode: string -> string list |
26 val append: string -> string -> string |
26 val append: string -> string -> string |
27 val qualified: string -> string -> string |
27 val qualified: string -> string -> string |
28 val base: string -> string |
28 val base_name: string -> string |
29 val qualifier: string -> string |
29 val qualifier: string -> string |
30 val map_base: (string -> string) -> string -> string |
30 val map_base_name: (string -> string) -> string -> string |
31 type T |
31 type T |
32 val empty: T |
32 val empty: T |
33 val intern: T -> xstring -> string |
33 val intern: T -> xstring -> string |
34 val extern: T -> string -> xstring |
34 val extern: T -> string -> xstring |
35 val extern_flags: {long_names: bool, short_names: bool, unique_names: bool} -> |
35 val extern_flags: {long_names: bool, short_names: bool, unique_names: bool} -> |
76 |
76 |
77 fun qualified path name = |
77 fun qualified path name = |
78 if path = "" orelse name = "" then name |
78 if path = "" orelse name = "" then name |
79 else path ^ separator ^ name; |
79 else path ^ separator ^ name; |
80 |
80 |
81 fun base "" = "" |
81 fun base_name "" = "" |
82 | base name = List.last (explode_name name); |
82 | base_name name = List.last (explode_name name); |
83 |
83 |
84 fun qualifier "" = "" |
84 fun qualifier "" = "" |
85 | qualifier name = implode_name (#1 (split_last (explode_name name))); |
85 | qualifier name = implode_name (#1 (split_last (explode_name name))); |
86 |
86 |
87 fun map_base _ "" = "" |
87 fun map_base_name _ "" = "" |
88 | map_base f name = |
88 | map_base_name f name = |
89 let val names = explode_name name |
89 let val names = explode_name name |
90 in implode_name (nth_map (length names - 1) f names) end; |
90 in implode_name (nth_map (length names - 1) f names) end; |
91 |
91 |
92 |
92 |
93 (* standard accesses *) |
93 (* standard accesses *) |
159 |
159 |
160 fun ext [] = if valid false name then name else hidden name |
160 fun ext [] = if valid false name then name else hidden name |
161 | ext (nm :: nms) = if valid unique_names nm then nm else ext nms; |
161 | ext (nm :: nms) = if valid unique_names nm then nm else ext nms; |
162 in |
162 in |
163 if long_names then name |
163 if long_names then name |
164 else if short_names then base name |
164 else if short_names then base_name name |
165 else ext (get_accesses space name) |
165 else ext (get_accesses space name) |
166 end; |
166 end; |
167 |
167 |
168 val long_names = ref false; |
168 val long_names = ref false; |
169 val short_names = ref false; |
169 val short_names = ref false; |
202 error ("Attempt to hide hidden name " ^ quote name) |
202 error ("Attempt to hide hidden name " ^ quote name) |
203 else |
203 else |
204 let val names = valid_accesses space name in |
204 let val names = valid_accesses space name in |
205 space |
205 space |
206 |> add_name' name name |
206 |> add_name' name name |
207 |> fold (del_name name) (if fully then names else names inter_string [base name]) |
207 |> fold (del_name name) (if fully then names else names inter_string [base_name name]) |
208 |> fold (del_name_extra name) (get_accesses space name) |
208 |> fold (del_name_extra name) (get_accesses space name) |
209 end; |
209 end; |
210 |
210 |
211 |
211 |
212 (* merge *) |
212 (* merge *) |