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 |