summaryrefslogtreecommitdiff
path: root/src/value.ml
diff options
context:
space:
mode:
Diffstat (limited to 'src/value.ml')
-rw-r--r--src/value.ml14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/value.ml b/src/value.ml
index 7972c692..8ee219b7 100644
--- a/src/value.ml
+++ b/src/value.ml
@@ -188,6 +188,17 @@ let value_eq_string = function
| [v1; v2] -> V_bool (Sail_lib.eq_string (coerce_string v1, coerce_string v2))
| _ -> failwith "value eq_string"
+let value_string_startswith = function
+ | [v1; v2] -> V_bool (Sail_lib.string_startswith (coerce_string v1, coerce_string v2))
+ | _ -> failwith "value string_startswith"
+
+let value_string_drop = function
+ | [v1; v2] -> V_string (Sail_lib.string_drop (coerce_string v1, coerce_int v2))
+ | _ -> failwith "value string_drop"
+
+let value_string_length = function
+ | [v] -> V_int (coerce_string v |> Sail_lib.string_length)
+ | _ -> failwith "value string_length"
let value_eq_bit = function
| [v1; v2] -> V_bool (Sail_lib.eq_bit (coerce_bit v1, coerce_bit v2))
| _ -> failwith "value eq_bit"
@@ -500,6 +511,9 @@ let primops =
("eq_list", value_eq_list);
("eq_bool", value_eq_bool);
("eq_string", value_eq_string);
+ ("string_startswith", value_string_startswith);
+ ("string_drop", value_string_drop);
+ ("string_length", value_string_length);
("eq_bit", value_eq_bit);
("eq_anything", value_eq_anything);
("length", value_length);