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     //virtual void configStream(ostream&) = 0;
00040 
00041     virtual void outputString(const std::string &str) = 0;
00042 
00043     //*****************************************************************
00044     // IRHandles
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     // Object
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     // Lists
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     // a separator between list items
00084     //FIXME: deprecated
00085     //virtual void listItemDelimit() = 0;
00086 
00087     //*****************************************************************
00088     // Maps
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     // Graphs
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 } // end of OA namespace
00131 
00132 #endif
00133 

Generated on Sat Oct 31 05:21:25 2009 for OpenAnalysis by  doxygen 1.6.1