Introduce IVerifier interface to support various verifications, each
verification can be reused from different graph phases.
This commit also contains a skeleton of `DAGChecker`.
Part of #2247
Signed-off-by: Hanjoung Lee <hanjoung.lee@samsung.com>
file(GLOB_RECURSE SOURCES_INTERNAL "src/internal/*.cc")
file(GLOB_RECURSE SOURCES_GRAPH "src/graph/*.cc")
file(GLOB_RECURSE SOURCES_CODEGEN "src/codegen/*.cc")
+file(GLOB_RECURSE SOURCES_VERIFIER "src/verifier/*.cc")
-set(SOURCES ${SOURCES} ${SOURCES_FRONTEND} ${SOURCES_INTERNAL} ${SOURCES_GRAPH} ${SOURCES_CODEGEN})
+set(SOURCES ${SOURCES} ${SOURCES_FRONTEND} ${SOURCES_INTERNAL} ${SOURCES_GRAPH} ${SOURCES_CODEGEN} ${SOURCES_VERIFIER})
# NOTE For now ARMCompute is necessary
# TODO Remove required package below(should be optional)
--- /dev/null
+#include "IVerifier.h"
+
+#include "graph/Graph.h"
+
+namespace neurun
+{
+namespace graph
+{
+namespace verifier
+{
+
+bool DAGChecker::verify(const Graph &) const
+{
+ // TODO Implement DAG check
+ return true;
+}
+
+} // namespace verifier
+} // namespace graph
+} // namespace neurun
--- /dev/null
+#ifndef __NEURUN_GRAPH_VERIFIER_I_VERIFIER_H__
+#define __NEURUN_GRAPH_VERIFIER_I_VERIFIER_H__
+
+namespace neurun
+{
+namespace graph
+{
+class Graph;
+} // namespace graph
+} // namespace neurun
+
+namespace neurun
+{
+namespace graph
+{
+namespace verifier
+{
+
+struct IVerifier
+{
+ virtual ~IVerifier() = default;
+ virtual bool verify(const Graph &graph) const = 0;
+};
+
+} // namespace verifier
+} // namespace graph
+} // namespace neurun
+
+namespace neurun
+{
+namespace graph
+{
+namespace verifier
+{
+
+class DAGChecker : public IVerifier
+{
+public:
+ virtual bool verify(const Graph &graph) const override;
+};
+
+} // namespace verifier
+} // namespace graph
+} // namespace neurun
+
+#endif // __NEURUN_GRAPH_VERIFIER_I_VERIFIER_H__