OutputBuilder.hpp
Go to the documentation of this file.00001
00020 #ifndef OutputBuilder_H
00021 #define OutputBuilder_H
00022
00023 #include <iostream>
00024 #include <string>
00025 #include <OpenAnalysis/IRInterface/IRHandles.hpp>
00026
00027 namespace OA {
00028
00029 std::string int2string(const int& number);
00030 std::string bool2string(const bool& val);
00031
00032 class OutputBuilder {
00033 public:
00034 OutputBuilder() {}
00035 virtual ~OutputBuilder() {}
00036 OutputBuilder(OutputBuilder& other) {}
00037 OutputBuilder(std::ostream&) {}
00038
00039
00040
00041 virtual void outputString(const std::string &str) = 0;
00042
00043
00044
00045
00046 virtual void outputIRHandle(ProcHandle h, IRHandlesIRInterface& pIR) = 0;
00047 virtual void outputIRHandle(StmtHandle h, IRHandlesIRInterface& pIR) = 0;
00048 virtual void outputIRHandle(ExprHandle h, IRHandlesIRInterface& pIR) = 0;
00049 virtual void outputIRHandle(CallHandle h, IRHandlesIRInterface& pIR) = 0;
00050 virtual void outputIRHandle(OpHandle h, IRHandlesIRInterface& pIR) = 0;
00051 virtual void outputIRHandle(MemRefHandle h, IRHandlesIRInterface& pIR) = 0;
00052 virtual void outputIRHandle(SymHandle h, IRHandlesIRInterface& pIR) = 0;
00053 virtual void outputIRHandle(ConstSymHandle h, IRHandlesIRInterface& pIR)=0;
00054 virtual void outputIRHandle(ConstValHandle h, IRHandlesIRInterface& pIR)=0;
00055
00056
00057
00058
00059 virtual void objStart(const std::string& objName) = 0;
00060 virtual void objEnd(const std::string& objName) = 0;
00061
00063 virtual void field(const std::string& fieldname,
00064 const std::string& value) = 0;
00065
00067 virtual void fieldStart(const std::string& fieldname) = 0;
00068 virtual void fieldEnd(const std::string& fieldname) = 0;
00069
00070
00071
00072
00073 virtual void listStart() = 0;
00074 virtual void listEnd() = 0;
00075
00077 virtual void listItem(const std::string& value) = 0;
00078
00080 virtual void listItemStart() = 0;
00081 virtual void listItemEnd() = 0;
00082
00083
00084
00085
00086
00087
00088
00089
00090 virtual void mapStart(const std::string& label,
00091 const std::string& keyLabel,
00092 const std::string& valueLabel) = 0;
00093 virtual void mapEnd(const std::string& label) = 0;
00094
00096 virtual void mapEntry(const std::string& key, const std::string& value)=0;
00097 virtual void mapKey(const std::string& key) = 0;
00098 virtual void mapValue(const std::string& value) = 0;
00099
00101 virtual void mapEntryStart() = 0;
00102 virtual void mapEntryEnd() = 0;
00103 virtual void mapKeyStart() = 0;
00104 virtual void mapKeyEnd() = 0;
00105 virtual void mapValueStart() = 0;
00106 virtual void mapValueEnd() = 0;
00107
00108
00109
00110
00111 virtual void graphStart(const std::string &label) = 0;
00112 virtual void graphEnd(const std::string &label) = 0;
00113 virtual void graphSubStart(const std::string &label) = 0;
00114 virtual void graphSubEnd(const std::string &label) = 0;
00115
00116 virtual void graphNodeStart(int id) = 0;
00117 virtual void graphNodeLabel(const std::string &label) = 0;
00118 virtual void graphNodeLabelStart() = 0;
00119 virtual void graphNodeLabelEnd() = 0;
00120 virtual void graphNodeEnd() = 0;
00121
00122 virtual void graphEdgeStart() = 0;
00123 virtual void graphEdgeSourceNode(int id) = 0;
00124 virtual void graphEdgeSinkNode(int id) = 0;
00125 virtual void graphEdgeLabelStart() = 0;
00126 virtual void graphEdgeLabelEnd() = 0;
00127 virtual void graphEdgeEnd() = 0;
00128 };
00129
00130 }
00131
00132 #endif
00133