Jlm
Namespaces | Classes | Enumerations | Functions | Variables
jlm::util::graph Namespace Reference

Namespaces

 Colors
 

Classes

class  GraphElement
 
class  Port
 
class  Node
 
class  InputPort
 
class  OutputPort
 
class  InOutNode
 
class  ArgumentNode
 
class  ResultNode
 
class  Edge
 
class  Graph
 
class  Writer
 

Enumerations

enum class  OutputFormat { Dot , Json , ASCII }
 
enum class  AttributeOutputFormat { SpaceSeparatedList , HTMLAttributes , JSON }
 

Functions

static bool looksLikeIdentifier (std::string_view string)
 
static void printIdentifierSafe (std::ostream &out, std::string_view string)
 
static void printStringAsHtmlText (std::ostream &out, std::string_view string, bool replaceNewlines)
 
static void printStringAsHtmlAttributeName (std::ostream &out, std::string_view string)
 
static void printJsonString (std::ostream &out, std::string_view string)
 
std::ostream & withIndent (std::ostream &out, size_t indent)
 
static void outputKeyValuePair (std::ostream &out, std::string_view name, std::string_view value, AttributeOutputFormat format)
 
static std::ostream & printNextJsonField (std::ostream &out, std::string_view name, size_t indent, bool &firstField)
 
template<typename T >
static void printJsonElementMap (std::ostream &out, size_t indent, const T &elements)
 
static void outputJsonObjectClosing (std::ostream &out, size_t indent, bool firstField)
 

Variables

static const char *const DOT_TOOLTIP_ATTRIBUTE = "tooltip"
 
static const char *const DOT_EDGE_ID_ATTRIBUTE = "id"
 
static const char *const DOT_HTML_TABLE_BGCOLOR_ATTRIBUTE = "BGCOLOR"
 
static const char *const JSON_LABEL_FIELD = "label"
 
static const char *const JSON_ATTRIBUTE_FIELD = "attr"
 
static const char *const JSON_OBJECT_POINTER_FIELD = "obj"
 
static const char *const JSON_NODE_TYPE_FIELD = "type"
 
static const char *const JSON_IN_PORTS_FIELD = "ins"
 
static const char *const JSON_OUT_PORTS_FIELD = "outs"
 
static const char *const JSON_SUBGRAPHS_FIELD = "subgraphs"
 
static const char *const JSON_HTML_TABLE_ATTRIBUTES_FIELD = "htmlTableAttr"
 
static const char *const JSON_PARENT_NODE_FIELD = "parentNode"
 
static const char *const JSON_PARENT_GRAPH_FIELD = "parentGraph"
 
static const char *const JSON_ARGUMENTS_FIELD = "arguments"
 
static const char *const JSON_NODES_FIELD = "nodes"
 
static const char *const JSON_RESULTS_FIELD = "results"
 
static const char *const JSON_EDGES_FIELD = "edges"
 

Enumeration Type Documentation

◆ AttributeOutputFormat

Enumerator
SpaceSeparatedList 
HTMLAttributes 
JSON 

Definition at line 28 of file GraphWriter.hpp.

◆ OutputFormat

Enumerator
Dot 
Json 
ASCII 

Definition at line 21 of file GraphWriter.hpp.

Function Documentation

◆ looksLikeIdentifier()

static bool jlm::util::graph::looksLikeIdentifier ( std::string_view  string)
static

Checks if the provided string looks like a regular C identifier. The string may only contain alphanumeric characters and underscore, and not start with a digit.

Returns
true if the passed string passes as a C identifier.

Definition at line 50 of file GraphWriter.cpp.

◆ outputJsonObjectClosing()

static void jlm::util::graph::outputJsonObjectClosing ( std::ostream &  out,
size_t  indent,
bool  firstField 
)
static

Definition at line 562 of file GraphWriter.cpp.

◆ outputKeyValuePair()

static void jlm::util::graph::outputKeyValuePair ( std::ostream &  out,
std::string_view  name,
std::string_view  value,
AttributeOutputFormat  format 
)
static

Outputs a single key value pair in the given format

Definition at line 399 of file GraphWriter.cpp.

◆ printIdentifierSafe()

static void jlm::util::graph::printIdentifierSafe ( std::ostream &  out,
std::string_view  string 
)
static

Prints the given string to out, while escaping special characters. Unless the string looks like a regular C / Dot identifier, it is surrounded in quotes.

Definition at line 81 of file GraphWriter.cpp.

◆ printJsonElementMap()

template<typename T >
static void jlm::util::graph::printJsonElementMap ( std::ostream &  out,
size_t  indent,
const T &  elements 
)
static

Definition at line 509 of file GraphWriter.cpp.

◆ printJsonString()

static void jlm::util::graph::printJsonString ( std::ostream &  out,
std::string_view  string 
)
static

Prints the given string as a JSON string to the out stream. The result is always quoted. quotes, backslashes and newlines get escaped.

Definition at line 160 of file GraphWriter.cpp.

◆ printNextJsonField()

static std::ostream& jlm::util::graph::printNextJsonField ( std::ostream &  out,
std::string_view  name,
size_t  indent,
bool &  firstField 
)
static

Helper for starting a new field on a new line in a Json object. If firstField is false, a comma is printed before the newline.

Postcondition
firstField is always set to false after this function.

Definition at line 495 of file GraphWriter.cpp.

◆ printStringAsHtmlAttributeName()

static void jlm::util::graph::printStringAsHtmlAttributeName ( std::ostream &  out,
std::string_view  string 
)
static

Prints the given string to out, replacing chars that are not allowed in html attribute names by '-'

Definition at line 143 of file GraphWriter.cpp.

◆ printStringAsHtmlText()

static void jlm::util::graph::printStringAsHtmlText ( std::ostream &  out,
std::string_view  string,
bool  replaceNewlines 
)
static

Prints the given string to out with HTML special chars escaped. If replaceNewlines is true, newlines are replaced by
, otherwise they are kept as is. Newlines are allowed inside HTML attributes, but are ignored in HTML text.

Definition at line 119 of file GraphWriter.cpp.

◆ withIndent()

std::ostream& jlm::util::graph::withIndent ( std::ostream &  out,
size_t  indent 
)

Prints the given number of spaces to the output stream, and returns the output stream.

Definition at line 184 of file GraphWriter.cpp.

Variable Documentation

◆ DOT_EDGE_ID_ATTRIBUTE

const char* const jlm::util::graph::DOT_EDGE_ID_ATTRIBUTE = "id"
static

Definition at line 17 of file GraphWriter.cpp.

◆ DOT_HTML_TABLE_BGCOLOR_ATTRIBUTE

const char* const jlm::util::graph::DOT_HTML_TABLE_BGCOLOR_ATTRIBUTE = "BGCOLOR"
static

Definition at line 19 of file GraphWriter.cpp.

◆ DOT_TOOLTIP_ATTRIBUTE

const char* const jlm::util::graph::DOT_TOOLTIP_ATTRIBUTE = "tooltip"
static

Definition at line 15 of file GraphWriter.cpp.

◆ JSON_ARGUMENTS_FIELD

const char* const jlm::util::graph::JSON_ARGUMENTS_FIELD = "arguments"
static

Definition at line 39 of file GraphWriter.cpp.

◆ JSON_ATTRIBUTE_FIELD

const char* const jlm::util::graph::JSON_ATTRIBUTE_FIELD = "attr"
static

Definition at line 24 of file GraphWriter.cpp.

◆ JSON_EDGES_FIELD

const char* const jlm::util::graph::JSON_EDGES_FIELD = "edges"
static

Definition at line 42 of file GraphWriter.cpp.

◆ JSON_HTML_TABLE_ATTRIBUTES_FIELD

const char* const jlm::util::graph::JSON_HTML_TABLE_ATTRIBUTES_FIELD = "htmlTableAttr"
static

Definition at line 34 of file GraphWriter.cpp.

◆ JSON_IN_PORTS_FIELD

const char* const jlm::util::graph::JSON_IN_PORTS_FIELD = "ins"
static

Definition at line 31 of file GraphWriter.cpp.

◆ JSON_LABEL_FIELD

const char* const jlm::util::graph::JSON_LABEL_FIELD = "label"
static

Definition at line 22 of file GraphWriter.cpp.

◆ JSON_NODE_TYPE_FIELD

const char* const jlm::util::graph::JSON_NODE_TYPE_FIELD = "type"
static

Definition at line 28 of file GraphWriter.cpp.

◆ JSON_NODES_FIELD

const char* const jlm::util::graph::JSON_NODES_FIELD = "nodes"
static

Definition at line 40 of file GraphWriter.cpp.

◆ JSON_OBJECT_POINTER_FIELD

const char* const jlm::util::graph::JSON_OBJECT_POINTER_FIELD = "obj"
static

Definition at line 26 of file GraphWriter.cpp.

◆ JSON_OUT_PORTS_FIELD

const char* const jlm::util::graph::JSON_OUT_PORTS_FIELD = "outs"
static

Definition at line 32 of file GraphWriter.cpp.

◆ JSON_PARENT_GRAPH_FIELD

const char* const jlm::util::graph::JSON_PARENT_GRAPH_FIELD = "parentGraph"
static

Definition at line 38 of file GraphWriter.cpp.

◆ JSON_PARENT_NODE_FIELD

const char* const jlm::util::graph::JSON_PARENT_NODE_FIELD = "parentNode"
static

Definition at line 37 of file GraphWriter.cpp.

◆ JSON_RESULTS_FIELD

const char* const jlm::util::graph::JSON_RESULTS_FIELD = "results"
static

Definition at line 41 of file GraphWriter.cpp.

◆ JSON_SUBGRAPHS_FIELD

const char* const jlm::util::graph::JSON_SUBGRAPHS_FIELD = "subgraphs"
static

Definition at line 33 of file GraphWriter.cpp.