00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef OR_TOOLS_UTIL_GRAPH_EXPORT_H_
00015 #define OR_TOOLS_UTIL_GRAPH_EXPORT_H_
00016
00017 #include <string>
00018
00019 #include "base/logging.h"
00020 #include "base/macros.h"
00021 #include "base/file.h"
00022
00023 using std::string;
00024
00025 namespace operations_research {
00026
00027
00028
00029
00030 class GraphExporter {
00031 public:
00032
00033 enum GraphFormat {
00034 DOT_FORMAT,
00035 GML_FORMAT,
00036 };
00037
00038 virtual ~GraphExporter();
00039
00040
00041 virtual void WriteHeader(const string& name) = 0;
00042
00043
00044 virtual void WriteFooter() = 0;
00045
00046
00047 virtual void WriteNode(const string& name,
00048 const string& label,
00049 const string& shape,
00050 const string& color) = 0;
00051
00052
00053 virtual void WriteLink(const string& source,
00054 const string& destination,
00055 const string& label) = 0;
00056
00057
00058 static GraphExporter* MakeFileExporter(File* const file,
00059 GraphExporter::GraphFormat format);
00060 };
00061 }
00062
00063 #endif // OR_TOOLS_UTIL_GRAPH_EXPORT_H_