Module Feature

module Feature: sig .. end
Extending CIL with external features

type t = {
   mutable fd_enabled : bool; (*The enable flag. Set to default value*)
   fd_name : string; (*This is used to construct an option "--doxxx" and "--dontxxx" that enable and disable the feature*)
   fd_description : string; (*A longer name that can be used to document the new options*)
   fd_extraopt : (string * Arg.spec * string) list; (*Additional command line options. The description strings should usually start with a space for Arg.align to print the --help nicely.*)
   fd_doit : Cil.file -> unit; (*This performs the transformation*)
   fd_post_check : bool; (*Whether to perform a CIL consistency checking after this stage, if checking is enabled (--check is passed to cilly). Set this to true if your feature makes any changes for the program.*)
}
Description of a CIL feature.
val register : t -> unit
Register a feature to be used by CIL. Feature name must be unique.
val list_registered : unit -> t list
List registered features.
val registered : string -> bool
Check if a given feature is registered.
val find : string -> t
Find a feature by name. Raise Not_found if the feature is not registered.
val enable : string -> unit
Enable a given feature, by name. Raise Errormsg.Error if the feature is not registered.
val enabled : string -> bool
Check if a given feature is enabled. Return false if the feature is not registered.