package goblint
Static analysis framework for C
Install
dune-project
Dependency
Authors
Maintainers
Sources
goblint-2.6.0.tbz
sha256=20d5b7332a9f6072ab9ba86c4a53b898eaf681286c56a8805c41850bbf3ddf41
sha512=7c7685cfcd9aa866bc40e813df2bfcb3c79b3d40e615d8d6d0939c5798b9d70dd7f2ba87a741f5ba0ce891e9d254627207fb28057f1f2f6611e4e0d128fd6a71
doc/src/goblint.solver/selector.ml.html
Source file selector.ml
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
(** Solver, which delegates at runtime to the configured solver. *) open Batteries open Goblint_constraint.ConstrSys open Goblint_constraint.SolverTypes open GobConfig (* Registered solvers. *) let solvers = ref [] (** Register your solvers here!!! *) let add_solver (x : string * (module DemandEqIncrSolver)) = solvers := x::!solvers (** Dynamically choose the solver. *) let choose_solver solver = try List.assoc solver !solvers with Not_found -> raise @@ ConfigError ("Solver '"^solver^"' not found. Abort!") (** The solver that actually uses the implementation based of [GobConfig.get_string "solver"]. *) module Make = functor (Arg: IncrSolverArg) -> functor (S:DemandEqConstrSys) -> functor (VH:Hashtbl.S with type key = S.v) -> struct type marshal = Obj.t (* cannot use Sol.marshal because cannot unpack first-class module in applicative functor *) let copy_marshal (marshal: marshal) = let module Sol = (val choose_solver (get_string "solver") : DemandEqIncrSolver) in let module F = Sol (Arg) (S) (VH) in Obj.repr (F.copy_marshal (Obj.obj marshal)) let relift_marshal (marshal: marshal) = let module Sol = (val choose_solver (get_string "solver") : DemandEqIncrSolver) in let module F = Sol (Arg) (S) (VH) in Obj.repr (F.relift_marshal (Obj.obj marshal)) let solve xs vs (old_data: marshal option) = let module Sol = (val choose_solver (get_string "solver") : DemandEqIncrSolver) in let module F = Sol (Arg) (S) (VH) in let (vh, marshal) = F.solve xs vs (Option.map Obj.obj old_data) in (vh, Obj.repr marshal) end let _ = let module T1 : DemandEqIncrSolver = Make in ()
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>