Implementations
equal a b returns true if a and b are equals. String.equal a b =
equal a b for any a and b. The execution time of equal depends solely on the length of the strings, not the contents.
compare_be a b returns 0 if a is equal to b, a negative integer if a if less (lexicographically) than b, and a positive integer if a is greater (lexicographically) than b.
compare_be a b returns the same order than String.compare a b for any a and b (but not necessary the same integer!). Order is defined as:
compare_be a b < 0meansa < bcompare_be a b > 0meansa > bcompare_be a b = 0meansa = b
About time, if String.length a <> String.length b, compare_be does not look into a or b and no comparison in bytes will be done.
compare_be_with_len ~len a b does compare_be a b on len bytes.
- raises Invalid_argument
if
lenis upper thanString.length aorString.length b.
compare_le a b is semantically compare_be (rev a) (rev b). With rev reverses a string (a = rev (rev a)).
compare_le_with_len a b is semantically compare_be_with_len ~len (rev a)
(rev b). With rev reverse a string (a = rev (rev a)).
- raises Invalid_argument
if
lenis upper thanString.length aorString.length b.
one_if_not_zero n is a constant-time version of if n <> 0 then 1 else 0. This is functionally equivalent to !!n in the C programming language.
zero_if_not_zero n is a constant-time of if n <> 0 then 0 else 1. This is functionnaly equivalent to !n in the C programming language.
select_int choose_b a b is a if choose_b = 0 and b otherwise. This comparison is constant-time and it should not be possible for a measuring adversary to determine anything about the values of choose_b, a, or b.
find_uint8 ?off ~f v returns the index of the first occurrence which respects the predicate f in string v. Otherwise, it returns -1.