summaryrefslogtreecommitdiffstats
path: root/stdlib
diff options
context:
space:
mode:
authorDamien Doligez <damien.doligez-inria.fr>2002-03-21 17:13:02 +0000
committerDamien Doligez <damien.doligez-inria.fr>2002-03-21 17:13:02 +0000
commit424fd989f5cf395fc187b6ae726a65b067e20122 (patch)
tree84fe82f8d8a99b744f43f2d494ae72a7496ba83a /stdlib
parente5540bf1968bbd41b9cf15e014d8c5eae7e3310a (diff)
Format.kprintf
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@4553 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib')
-rw-r--r--stdlib/format.ml6
-rw-r--r--stdlib/format.mli4
2 files changed, 8 insertions, 2 deletions
diff --git a/stdlib/format.ml b/stdlib/format.ml
index 51eded16e..50958542a 100644
--- a/stdlib/format.ml
+++ b/stdlib/format.ml
@@ -1065,10 +1065,12 @@ let string_out b ppf () =
let fprintf ppf = fprintf_out false unit_out ppf;;
let printf f = fprintf_out false unit_out std_formatter f;;
let eprintf f = fprintf_out false unit_out err_formatter f;;
-let sprintf f =
+let kprintf k f =
let b = Buffer.create 512 in
let ppf = formatter_of_buffer b in
- fprintf_out true (string_out b ppf) ppf f;;
+ fprintf_out true (fun () -> k (string_out b ppf ())) ppf f
+;;
+let sprintf f = kprintf (fun x -> x) f;;
let bprintf b =
let ppf = formatter_of_buffer b in
diff --git a/stdlib/format.mli b/stdlib/format.mli
index cb0431f0f..4600b43ab 100644
--- a/stdlib/format.mli
+++ b/stdlib/format.mli
@@ -593,3 +593,7 @@ val bprintf : Buffer.t -> ('a, formatter, unit) format -> 'a;;
[fprintf] with a formatter writing to the buffer [b] (as obtained
by [formatter_of_buffer b]), otherwise the repeated flushes of the
pretty-printer queue would result in badly formatted output. *)
+
+val kprintf : (string -> string) -> ('a, unit, string) format -> 'a;;
+(** Same as [sprintf] above, but instead of returning the string,
+ pass it to the first argument. *)