summaryrefslogtreecommitdiff
path: root/src/Values.ml
blob: 006cc8da7c2f00bb4e9b6d29f8dd67719e82c27c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
open Identifiers
open Types

module VarId = IdGen ()

module FunDefId = IdGen ()

type var = {
  index : VarId.id;  (** Unique variable identifier *)
  name : string option;
  ty : ety;
      (** The variable type - erased type, because variables are not used
       ** in function signatures *)
}
(** A variable *)

(** A scalar value

    Note that we use unbounded integers everywhere.
    We then harcode the boundaries for the different types.
 *)
type scalar_value =
  | Isize of Big_int.big_int
  | I8 of Big_int.big_int
  | I16 of Big_int.big_int
  | I32 of Big_int.big_int
  | I64 of Big_int.big_int
  | I128 of Big_int.big_int
  | Usize of Big_int.big_int
  | U8 of Big_int.big_int
  | U16 of Big_int.big_int
  | U32 of Big_int.big_int
  | U64 of Big_int.big_int
  | U128 of Big_int.big_int

type constant_value =
  | Scalar of scalar_value
  | Bool of bool
  | Char of char
  | String of string