This file is indexed.

/usr/lib/ocaml/apron/box.idl is in libapron-ocaml-dev 0.9.10-6.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* -*- mode: c -*- */

quote(C,"#include \"box.h\"")
quote(C,"#include \"ap_manager.h\"")
quote(C,"#include \"apron_caml.h\"")

import "manager.idl";

quote(MLMLI,"(** Intervals abstract domain *)")

quote(MLMLI,"
(** Type of boxes.

    Boxes constrains each dimension/variable [x_i] to belong to an interval
    [I_i].

    Abstract values which are boxes have the type [t Apron.AbstractX.t].

    Managers allocated for boxes have the type [t Apron.manager.t].
*)
type t
")

quote(MLI,"\n(** Create a Box manager. *)")
ap_manager_ptr box_manager_alloc()
quote(call,"_res = box_manager_alloc();
{ ap_exc_t i;
for (i=1; i<AP_EXC_SIZE; i++){
ap_manager_set_abort_if_exception(_res,i,false);
}}
");

quote(MLI,"\n(** {2 Type conversions} *)

val manager_is_box : 'a Apron.Manager.t -> bool
  (** Return [true] iff the argument manager is a box manager *)
val manager_of_box : t Apron.Manager.t -> 'a Apron.Manager.t
  (** Make a box manager generic *)
val manager_to_box : 'a Apron.Manager.t -> t Apron.Manager.t
  (** Instanciate the type of a box manager.
      Raises [Failure] if the argument manager is not a box manager *)
module Abstract0 : sig
  val is_box : 'a Apron.Abstract0.t -> bool
    (** Return [true] iff the argument value is a box value *)
  val of_box : t Apron.Abstract0.t -> 'a Apron.Abstract0.t
    (** Make a box value generic *)
  val to_box : 'a Apron.Abstract0.t -> t Apron.Abstract0.t
    (** Instanciate the type of a box value.
	Raises [Failure] if the argument value is not a box value *)
end
module Abstract1 : sig
  val is_box : 'a Apron.Abstract1.t -> bool
    (** Return [true] iff the argument value is a box value *)
  val of_box : t Apron.Abstract1.t -> 'a Apron.Abstract1.t
    (** Make a box value generic *)
  val to_box : 'a Apron.Abstract1.t -> t Apron.Abstract1.t
    (** Instanciate the type of a box value.
	Raises [Failure] if the argument value is not a box value *)
end
")

quote(ML,"
let manager_is_box man =
  let str = Apron.Manager.get_library man in
  (String.compare str \"box\")==0
let manager_of_box (man:t Apron.Manager.t) : 'a Apron.Manager.t = Obj.magic man
let manager_to_box (man:'a Apron.Manager.t) : t Apron.Manager.t =
  if manager_is_box man then
    Obj.magic man
  else
    failwith \"Box.manager_to_box: the argument manager is not a Box manager\"
module Abstract0 = struct
  let is_box abs =
    manager_is_box (Apron.Abstract0.manager abs)
  let of_box (abs: t Apron.Abstract0.t) : 'a Apron.Abstract0.t = Obj.magic abs
  let to_box (abs:'a Apron.Abstract0.t) : t Apron.Abstract0.t =
  if is_box abs then
    Obj.magic abs
  else
    failwith \"Box.Abstract0.to_box: the argument value is not a Box value\"
end
module Abstract1 = struct
  let is_box abs =
    manager_is_box (Apron.Abstract1.manager abs)
  let of_box (abs: t Apron.Abstract1.t) : 'a Apron.Abstract1.t = Obj.magic abs
  let to_box (abs:'a Apron.Abstract1.t) : t Apron.Abstract1.t =
  if is_box abs then
    Obj.magic abs
  else
    failwith \"Box.Abstract1.to_box: the argument value is not a Box value\"
end
")

quote(MLI,"\n(**
{2 Compilation information}

See {!Introduction.compilation} for complete explanations. 
We just show examples with the file [mlexample.ml].

{3 Bytecode compilation}

{[ocamlc -I $MLGMPIDL_PREFIX/lib -I $APRON_PREFIX/lib -o mlexample.byte \\
  bigarray.cma gmp.cma apron.cma boxMPQ.cma mlexample.ml]}

{[ocamlc -I $MLGMPIDL_PREFIX/lib -I $APRON_PREFIX/lib -make-runtime -o myrun \\
  bigarray.cma gmp.cma apron.cma boxMPQ.cma

ocamlc -I $MLGMPIDL_PREFIX/lib -I $APRON_PREFIX/lib -use-runtime myrun -o mlexample.byte \\
  bigarray.cma gmp.cma apron.cma boxMPQ.cma mlexample.ml ]}

{3 Native-code compilation}

{[ocamlopt -I $MLGMPIDL_PREFIX/lib -I $APRON_PREFIX/lib -o mlexample.opt \\
  bigarray.cmxa gmp.cmxa apron.cmxa boxMPQ.cmxa mlexample.ml ]}

{3 Without auto-linking feature}

{[ocamlopt -I $MLGMPIDL_PREFIX/lib -I $APRON_PREFIX/lib -noautolink -o mlexample.opt \\
  bigarray.cmxa gmp.cmxa apron.cmxa boxMPQ.cmxa mlexample.ml \\
  -cclib \"-L$MLGMPIDL_PREFIX/lib -L$APRON_PREFIX/lib \\
	  -lboxMPQ_caml_debug -lboxMPQ_debug \\
	  -lapron_caml_debug -lapron_debug \\
	  -lgmp_caml -L$MPFR_PREFIX/lib -lmpfr -L$GMP/lib_PREFIX/lib -lgmp \\
	  -L$CAMLIDL_PREFIX/lib/ocaml -lcamlidl \\
	  -lbigarray\" ]}

*)")