~npalix/coccinelle/upstream

« back to all changes in this revision

Viewing changes to bundles/stdcompat/stdcompat-8/stdcompat__nativeint.ml.in

  • Committer: Thierry Martinez
  • Date: 2019-08-20 13:37:04 UTC
  • Revision ID: git-v1:0214afad4a32c95349c2c5a38e37cea407c455d0
Update bundles

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
include Nativeint
2
 
 
3
 
@BEGIN_BEFORE_4_08_0@
4
 
let unsigned_compare i j =
5
 
  compare (sub i min_int) (sub j min_int)
6
 
 
7
 
let unsigned_to_int =
8
 
  let max_int = of_int Stdcompat__pervasives.max_int in
9
 
  fun i ->
10
 
    if compare zero i <= 0 && compare i max_int <= 0 then
11
 
      Some (to_int i)
12
 
    else
13
 
      None
14
 
 
15
 
(* Unsigned division from signed division of the same
16
 
   bitness. See Warren Jr., Henry S. (2013). Hacker's Delight (2 ed.), Sec 9-3.
17
 
*)
18
 
let unsigned_div n d =
19
 
  if d < zero then
20
 
    if unsigned_compare n d < 0 then zero else one
21
 
  else
22
 
    let q = shift_left (div (shift_right_logical n 1) d) 1 in
23
 
    let r = sub n (mul q d) in
24
 
    if unsigned_compare r d >= 0 then succ q else q
25
 
 
26
 
let unsigned_rem n d =
27
 
  sub n (mul (unsigned_div n d) d)
28
 
@END_BEFORE_4_08_0@
29
 
 
30
 
@BEGIN_BEFORE_4_03_0@
31
 
let equal : t -> t -> bool = ( = )
32
 
@END_BEFORE_4_03_0@
33
 
 
34
 
@BEGIN_BEFORE_4_05_0@
35
 
let of_string_opt s =
36
 
  Stdcompat__tools.option_fail of_string s
37
 
@END_BEFORE_4_05_0@