Class type Cil.cilPrinter


class type cilPrinter = object .. end
A printer interface for CIL trees. Create instantiations of this type by specializing the class Cil.defaultCilPrinterClass.

method setCurrentFormals : varinfo list -> unit
method setPrintInstrTerminator : string -> unit
method getPrintInstrTerminator : unit -> string
method pVDecl : unit -> varinfo -> Pretty.doc
Invoked for each variable declaration. Note that variable declarations are all the GVar, GVarDecl, GFun, all the varinfo in formals of function types, and the formals and locals for function definitions.
method pVar : varinfo -> Pretty.doc
Invoked on each variable use.
method pLval : unit -> lval -> Pretty.doc
Invoked on each lvalue occurrence
method pOffset : Pretty.doc -> offset -> Pretty.doc
Invoked on each offset occurrence. The second argument is the base.
method pInstr : unit -> instr -> Pretty.doc
Invoked on each instruction occurrence.
method pLabel : unit -> label -> Pretty.doc
Print a label.
method pStmt : unit -> stmt -> Pretty.doc
Control-flow statement. This is used by Cil.printGlobal and by Cil.dumpGlobal.
method dStmt : out_channel -> int -> stmt -> unit
Dump a control-flow statement to a file with a given indentation. This is used by Cil.dumpGlobal.
method dBlock : out_channel -> int -> block -> unit
Dump a control-flow block to a file with a given indentation. This is used by Cil.dumpGlobal.
method pBlock : unit -> block -> Pretty.doc
Print a block.
method pGlobal : unit -> global -> Pretty.doc
Global (vars, types, etc.). This can be slow and is used only by Cil.printGlobal but not by Cil.dumpGlobal.
method dGlobal : out_channel -> global -> unit
Dump a global to a file with a given indentation. This is used by Cil.dumpGlobal
method pFieldDecl : unit -> fieldinfo -> Pretty.doc
A field declaration
method pType : Pretty.doc option -> unit -> typ -> Pretty.doc
Use of some type in some declaration. The first argument is used to print the declared element, or is None if we are just printing a type with no name being declared. Note that for structure/union and enumeration types the definition of the composite type is not visited. Use vglob to visit it.
method pAttr : attribute -> Pretty.doc * bool
Attribute. Also return an indication whether this attribute must be printed inside the __attribute__ list or not.
method pAttrParam : unit -> attrparam -> Pretty.doc
Attribute parameter
method pAttrs : unit -> attributes -> Pretty.doc
Attribute lists
method pLineDirective : ?forcefile:bool -> location -> Pretty.doc
Print a line-number. This is assumed to come always on an empty line. If the forcefile argument is present and is true then the file name will be printed always. Otherwise the file name is printed only if it is different from the last time time this function is called. The last file name is stored in a private field inside the cilPrinter object.
method pStmtKind : stmt -> unit -> stmtkind -> Pretty.doc
Print a statement kind. The code to be printed is given in the Cil.stmtkind argument. The initial Cil.stmt argument records the statement which follows the one being printed; Cil.defaultCilPrinterClass uses this information to prettify statement printing in certain special cases.
method pExp : unit -> exp -> Pretty.doc
Print expressions
method pInit : unit -> init -> Pretty.doc
Print initializers. This can be slow and is used by Cil.printGlobal but not by Cil.dumpGlobal.
method dInit : out_channel -> int -> init -> unit
Dump a global to a file with a given indentation. This is used by Cil.dumpGlobal