diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2003-04-25 12:27:31 +0000 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2003-04-25 12:27:31 +0000 |
commit | 7abcc8799e5b726f0469512d888fa2f8d11b95c0 (patch) | |
tree | a328bf1bf7de799d41dc72145ed6444561e8d6f1 /stdlib | |
parent | 00e105ce490f8d7afd16b7c941fdf9d06ff347a6 (diff) |
Ajout des litteraux de type int32, nativeint, int64
git-svn-id: http://caml.inria.fr/svn/ocaml/trunk@5510 f963ae5c-01c2-4b8c-9fe0-0dff7051ff02
Diffstat (limited to 'stdlib')
-rw-r--r-- | stdlib/int32.ml | 18 | ||||
-rw-r--r-- | stdlib/int64.ml | 20 | ||||
-rw-r--r-- | stdlib/nativeint.ml | 18 |
3 files changed, 27 insertions, 29 deletions
diff --git a/stdlib/int32.ml b/stdlib/int32.ml index e21c22c56..c8a98b064 100644 --- a/stdlib/int32.ml +++ b/stdlib/int32.ml @@ -32,15 +32,15 @@ external to_int : int32 -> int = "%int32_to_int" external of_float : float -> int32 = "int32_of_float" external to_float : int32 -> float = "int32_to_float" -let zero = of_int 0 -let one = of_int 1 -let minus_one = of_int (-1) -let succ n = add n one -let pred n = sub n one -let abs n = if n >= zero then n else neg n -let min_int = shift_left one 31 -let max_int = sub min_int one -let lognot n = logxor n minus_one +let zero = 0l +let one = 1l +let minus_one = -1l +let succ n = add n 1l +let pred n = sub n 1l +let abs n = if n >= 0l then n else neg n +let min_int = 0x80000000l +let max_int = 0x7FFFFFFFl +let lognot n = logxor n (-1l) external format : string -> int32 -> string = "int32_format" let to_string n = format "%d" n diff --git a/stdlib/int64.ml b/stdlib/int64.ml index 6889e3478..8b634a5f2 100644 --- a/stdlib/int64.ml +++ b/stdlib/int64.ml @@ -36,17 +36,15 @@ external to_int32 : int64 -> int32 = "%int64_to_int32" external of_nativeint : nativeint -> int64 = "%int64_of_nativeint" external to_nativeint : int64 -> nativeint = "%int64_to_nativeint" -let zero = try of_int 0 with Invalid_argument _ -> Obj.magic Int32.zero -let one = try of_int 1 with Invalid_argument _ -> Obj.magic Int32.one -let minus_one = try of_int (-1) with Invalid_argument _ -> Obj.magic Int32.minus_one -let succ n = add n one -let pred n = sub n one -let abs n = if n >= zero then n else neg n -let min_int = - try shift_left one 63 with Invalid_argument _ -> Obj.magic Int32.min_int -let max_int = - try sub min_int one with Invalid_argument _ -> Obj.magic Int32.max_int -let lognot n = logxor n minus_one +let zero = 0L +let one = 1L +let minus_one = -1L +let succ n = add n 1L +let pred n = sub n 1L +let abs n = if n >= 0L then n else neg n +let min_int = 0x8000000000000000L +let max_int = 0x7FFFFFFFFFFFFFFFL +let lognot n = logxor n (-1L) external format : string -> int64 -> string = "int64_format" let to_string n = format "%d" n diff --git a/stdlib/nativeint.ml b/stdlib/nativeint.ml index 36c55ae66..216f2b30b 100644 --- a/stdlib/nativeint.ml +++ b/stdlib/nativeint.ml @@ -34,16 +34,16 @@ external to_float : nativeint -> float = "nativeint_to_float" external of_int32: int32 -> nativeint = "%nativeint_of_int32" external to_int32: nativeint -> int32 = "%nativeint_to_int32" -let zero = of_int 0 -let one = of_int 1 -let minus_one = of_int (-1) -let succ n = add n one -let pred n = sub n one -let abs n = if n >= zero then n else neg n +let zero = 0n +let one = 1n +let minus_one = -1n +let succ n = add n 1n +let pred n = sub n 1n +let abs n = if n >= 0n then n else neg n let size = Sys.word_size -let min_int = shift_left one (size - 1) -let max_int = sub min_int one -let lognot n = logxor n minus_one +let min_int = shift_left 1n (size - 1) +let max_int = sub min_int 1n +let lognot n = logxor n (-1n) external format : string -> nativeint -> string = "nativeint_format" let to_string n = format "%d" n |