src/Pure/General/name_space.ML
changeset 56052 4873054cd1fc
parent 56038 0e2dec666152
child 56056 4d46d53566e6
equal deleted inserted replaced
56051:c3681b9e060f 56052:4873054cd1fc
    69   val fold_table: (string * 'a -> 'b -> 'b) -> 'a table -> 'b -> 'b
    69   val fold_table: (string * 'a -> 'b -> 'b) -> 'a table -> 'b -> 'b
    70   val empty_table: string -> 'a table
    70   val empty_table: string -> 'a table
    71   val merge_tables: 'a table * 'a table -> 'a table
    71   val merge_tables: 'a table * 'a table -> 'a table
    72   val join_tables: (string -> 'a * 'a -> 'a) (*Symtab.SAME*) ->
    72   val join_tables: (string -> 'a * 'a -> 'a) (*Symtab.SAME*) ->
    73     'a table * 'a table -> 'a table
    73     'a table * 'a table -> 'a table
    74   val dest_table': Proof.context -> T -> 'a Symtab.table -> ((string * xstring) * 'a) list
    74   val extern_entries: Proof.context -> T -> (string * 'a) list -> ((string * xstring) * 'a) list
    75   val dest_table: Proof.context -> 'a table -> ((string * xstring) * 'a) list
    75   val markup_entries: Proof.context -> T -> (string * 'a) list -> ((Markup.T * xstring) * 'a) list
    76   val extern_table': Proof.context -> T -> 'a Symtab.table -> ((Markup.T * xstring) * 'a) list
    76   val extern_table: Proof.context -> 'a table -> ((string * xstring) * 'a) list
    77   val extern_table: Proof.context -> 'a table -> ((Markup.T * xstring) * 'a) list
    77   val markup_table: Proof.context -> 'a table -> ((Markup.T * xstring) * 'a) list
    78 end;
    78 end;
    79 
    79 
    80 structure Name_Space: NAME_SPACE =
    80 structure Name_Space: NAME_SPACE =
    81 struct
    81 struct
    82 
    82 
   534   Table (merge (space1, space2), Symtab.join f (tab1, tab2));
   534   Table (merge (space1, space2), Symtab.join f (tab1, tab2));
   535 
   535 
   536 
   536 
   537 (* present table content *)
   537 (* present table content *)
   538 
   538 
   539 fun dest_table' ctxt space tab =
   539 fun extern_entries ctxt space entries =
   540   Symtab.fold (fn (name, x) => cons ((name, extern ctxt space name), x)) tab []
   540   fold (fn (name, x) => cons ((name, extern ctxt space name), x)) entries []
   541   |> Library.sort_wrt (#2 o #1);
   541   |> Library.sort_wrt (#2 o #1);
   542 
   542 
   543 fun dest_table ctxt (Table (space, tab)) = dest_table' ctxt space tab;
   543 fun markup_entries ctxt space entries =
   544 
   544   extern_entries ctxt space entries
   545 fun extern_table' ctxt space tab =
       
   546   dest_table' ctxt space tab
       
   547   |> map (fn ((name, xname), x) => ((markup space name, xname), x));
   545   |> map (fn ((name, xname), x) => ((markup space name, xname), x));
   548 
   546 
   549 fun extern_table ctxt (Table (space, tab)) = extern_table' ctxt space tab;
   547 fun extern_table ctxt (Table (space, tab)) = extern_entries ctxt space (Symtab.dest tab);
       
   548 fun markup_table ctxt (Table (space, tab)) = markup_entries ctxt space (Symtab.dest tab);
   550 
   549 
   551 end;
   550 end;
   552 
   551