Package-level declarations

Types

Link copied to clipboard
open class Benchmark @JvmOverloads constructor(c: Class<*>, val message: String, debug: Boolean = false, holder: StatisticsHolder? = null) : MeasurementHolder

Measures the time between creating the object to calling its stop() method.

Link copied to clipboard
class BenchmarkResults(val entries: List<List<Any>>)
Link copied to clipboard
typealias Callback = (node: Node, parent: Node?) -> Unit

A type for a node visitor callback for the SubgraphWalker.

Link copied to clipboard

Class used to encapsulate functions used for the heuristic comment matching. Comments are matched to the closest AST node with priority on predecessor nodes in the same line as the comment, then successor nodes and lastly enclosing nodes.

Link copied to clipboard
object CommonPath

Find the common root path for a list of files

Link copied to clipboard
open class IdentitySet<T> : MutableSet<T>

This class implements the MutableSet interface with an underlying map and reference-equality instead of object-equality. That means, objects are only considered equal, if they are the same object. This logic is primarily implemented by the underlying IdentityHashMap.

Link copied to clipboard
abstract class LatticeElement<T>(val elements: T) : Comparable<LatticeElement<T>>

A complete lattice is an ordered structure of values of type T. T could be anything, e.g., a set, a new data structure (like a range), or anything else. T depends on the analysis and typically has to abstract the value for the specific purpose.

Link copied to clipboard
open class MeasurementHolder @JvmOverloads constructor(c: Class<*>, val message: String, debug: Boolean = false, holder: StatisticsHolder? = null)

Represents some kind of measurements, e.g., on the performance or problems.

Link copied to clipboard

Implements the LatticeElement for a lattice over a set of nodes. The lattice itself is constructed by the powerset.

Link copied to clipboard
open class State<K, V> : HashMap<K, LatticeElement<V>>

Stores the current state. I.e., it maps K (e.g. a Node or Edge) to a LatticeElement. It provides some useful functions e.g. to check if the mapping has to be updated (e.g. because there are new nodes or because a new lattice element is bigger than the old one).

Link copied to clipboard

Interface definition to hold different statistics about the translation process.

Link copied to clipboard

Helper class for graph walking: Walking through ast-, cfg-, ...- edges

Link copied to clipboard
fun interface TriConsumer<A, B, C>
Link copied to clipboard
object Util
Link copied to clipboard
class Worklist<K : Any, N : Any, V>

A worklist. Essentially, it stores mappings of nodes to the states which are available there and determines which nodes have to be analyzed.

Functions

Link copied to clipboard
fun getCodeOfSubregion(code: String, nodeRegion: Region, subRegion: Region, lineBreakSequence: CharSequence = ""): String

Returns the part of the code described by subRegion, embedded in nodeRegion. newLineType can be used to specify the type of new-line char(s) used on the platform.

Link copied to clipboard
fun <T> identitySetOf(vararg elements: T): IdentitySet<T>
Link copied to clipboard
inline fun <K : Node, V> iterateEOG(startNode: K, startState: State<K, V>, transformation: (K, State<K, V>) -> State<K, V>): State<K, V>?
inline fun <K : Node, V> iterateEOG(startNode: K, startState: State<K, V>, transformation: (K, State<K, V>, Worklist<K, K, V>) -> State<K, V>): State<K, V>?

Iterates through the worklist of the Evaluation Order Graph starting at startNode and with the State. For each node, the transformation is applied which should update the state.

inline fun <K : Edge<Node>, N : Any, V> iterateEOG(startEdges: List<K>, startState: State<N, V>, transformation: (K, State<N, V>) -> State<N, V>): State<N, V>?
inline fun <K : Edge<Node>, N : Any, V> iterateEOG(startEdges: List<K>, startState: State<N, V>, transformation: (K, State<N, V>, Worklist<K, N, V>) -> State<N, V>): State<N, V>?
Link copied to clipboard
fun printMarkdown(table: List<List<Any>>, headers: List<String>)

Prints a table of values and headers in Markdown format. Table columns are automatically adjusted to the longest column.

Link copied to clipboard
fun relativeOrAbsolute(path: Path, topLevel: File?): Path

This function will shorten / relativize the path, if it is relative to topLevel. Otherwise, the full path will be returned.

Link copied to clipboard

Tries to replace the old expression with a new one, given the parent.

Link copied to clipboard
Link copied to clipboard
infix fun <T> IdentitySet<T>.union(other: Iterable<T>): IdentitySet<T>