src/Pure/General/print_mode.ML
author wenzelm
Sun, 29 Jul 2007 17:28:55 +0200
changeset 24058 81aafd465662
parent 23934 79393cb9c0a6
child 24362 a9fe7ed25fa4
permissions -rw-r--r--
NAMED_CRITICAL;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23827
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     1
(*  Title:      Pure/General/print_mode.ML
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     3
    Author:     Makarius
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     4
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     5
Generic print mode -- implicit configuration for various output
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     6
mechanisms.
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     7
*)
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
     8
23934
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
     9
signature BASIC_PRINT_MODE =
23827
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    10
sig
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    11
  val print_mode: string list ref
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    12
  val print_mode_active: string -> bool
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    13
end;
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    14
23934
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    15
signature PRINT_MODE =
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    16
sig
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    17
  include BASIC_PRINT_MODE
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    18
  val with_modes: string list -> ('a -> 'b) -> 'a -> 'b
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    19
  val with_default: ('a -> 'b) -> 'a -> 'b
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    20
end;
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    21
23827
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    22
structure PrintMode: PRINT_MODE =
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    23
struct
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    24
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    25
val print_mode = ref ([]: string list);
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    26
fun print_mode_active s = member (op =) (! print_mode) s;
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    27
24058
81aafd465662 NAMED_CRITICAL;
wenzelm
parents: 23934
diff changeset
    28
fun with_modes modes f x = NAMED_CRITICAL "print_mode" (fn () =>
23934
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    29
  setmp print_mode (modes @ ! print_mode) f x);
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    30
24058
81aafd465662 NAMED_CRITICAL;
wenzelm
parents: 23934
diff changeset
    31
fun with_default f x = NAMED_CRITICAL "print_mode" (fn () =>
81aafd465662 NAMED_CRITICAL;
wenzelm
parents: 23934
diff changeset
    32
  setmp print_mode [] f x);
23934
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    33
23827
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    34
end;
0f0d1cf4992d Generic print mode.
wenzelm
parents:
diff changeset
    35
23934
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    36
structure BasicPrintMode: BASIC_PRINT_MODE = PrintMode;
79393cb9c0a6 added with_modes, with_default;
wenzelm
parents: 23827
diff changeset
    37
open BasicPrintMode;