src/Pure/General/name_space.ML
changeset 17163 f1455d56e5b5
parent 16848 1c8a5bb7c688
child 17221 6cd180204582
equal deleted inserted replaced
17162:c332aaf1b460 17163:f1455d56e5b5
    37   val valid_accesses: T -> string -> xstring list
    37   val valid_accesses: T -> string -> xstring list
    38   val intern: T -> xstring -> string
    38   val intern: T -> xstring -> string
    39   val extern: T -> string -> xstring
    39   val extern: T -> string -> xstring
    40   val hide: bool -> string -> T -> T
    40   val hide: bool -> string -> T -> T
    41   val merge: T * T -> T
    41   val merge: T * T -> T
    42   val dest: T -> (string * xstring list) list
       
    43   type naming
    42   type naming
    44   val path_of: naming -> string
    43   val path_of: naming -> string
    45   val full: naming -> bstring -> string
    44   val full: naming -> bstring -> string
    46   val declare: naming -> string -> T -> T
    45   val declare: naming -> string -> T -> T
    47   val default_naming: naming
    46   val default_naming: naming
   181 fun merge (NameSpace tab1, space2) = Symtab.fold (fn (xname, (names1, names1')) =>
   180 fun merge (NameSpace tab1, space2) = Symtab.fold (fn (xname, (names1, names1')) =>
   182   xname |> map_space (fn (names2, names2') =>
   181   xname |> map_space (fn (names2, names2') =>
   183     (merge_lists' names2 names1, merge_lists' names2' names1'))) tab1 space2;
   182     (merge_lists' names2 names1, merge_lists' names2' names1'))) tab1 space2;
   184 
   183 
   185 
   184 
   186 (* dest *)
       
   187 
       
   188 fun dest_entry (xname, ([], _)) = NONE
       
   189   | dest_entry (xname, (name :: _, _)) = SOME (name, xname);
       
   190 
       
   191 fun dest (NameSpace tab) =
       
   192   map (apsnd (sort (int_ord o pairself size)))
       
   193     (Symtab.dest (Symtab.make_multi (List.mapPartial dest_entry (Symtab.dest tab))));
       
   194 
       
   195 
       
   196 
   185 
   197 (** naming contexts **)
   186 (** naming contexts **)
   198 
   187 
   199 (* datatype naming *)
   188 (* datatype naming *)
   200 
   189