summaryrefslogtreecommitdiff
path: root/src/util.ml
diff options
context:
space:
mode:
authorJon French2019-02-13 12:27:48 +0000
committerJon French2019-02-13 12:27:48 +0000
commitea39b3c674570ce5eea34067c36d5196ca201f83 (patch)
tree516e7491bc32797a4d0ac397ea47387f2b16cf1b /src/util.ml
parentab3f3671d4dd682b2aee922d5a05e9455afd5849 (diff)
parent24fc989891ad266eae642815646294279e2485ca (diff)
Merge branch 'sail2' into rmem_interpreter
Diffstat (limited to 'src/util.ml')
-rw-r--r--src/util.ml30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/util.ml b/src/util.ml
index 5e5654d1..0ff00df1 100644
--- a/src/util.ml
+++ b/src/util.ml
@@ -96,6 +96,7 @@
let opt_warnings = ref true
let opt_colors = ref true
+let opt_verbosity = ref 0
let rec last = function
| [x] -> x
@@ -465,3 +466,32 @@ let log_line str line msg =
"\n[" ^ (str ^ ":" ^ string_of_int line |> blue |> clear) ^ "] " ^ msg
let header str n = "\n" ^ str ^ "\n" ^ String.make (String.length str - 9 * n) '='
+
+let verbose_endline level str =
+ if level >= !opt_verbosity then
+ prerr_endline str
+ else
+ ()
+
+let progress prefix msg n total =
+ if !opt_verbosity > 0 then
+ let len = truncate ((float n /. float total) *. 50.0) in
+ let percent = truncate ((float n /. float total) *. 100.0) in
+ let msg =
+ if String.length msg <= 20 then
+ msg ^ ")" ^ String.make (20 - String.length msg) ' '
+ else
+ String.sub msg 0 17 ^ "...)"
+ in
+ let str = prefix ^ "[" ^ String.make len '=' ^ String.make (50 - len) ' ' ^ "] "
+ ^ string_of_int percent ^ "%"
+ ^ " (" ^ msg
+ in
+ prerr_string str;
+ if n = total then
+ prerr_char '\n'
+ else
+ prerr_string ("\x1B[" ^ string_of_int (String.length str) ^ "D");
+ flush stderr
+ else
+ ()