|
|
@ -14,6 +14,46 @@ limitations under the License. */
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <cstdint>
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
#include "paddle/fluid/platform/macros.h"
|
|
|
|
|
|
|
|
|
|
|
|
namespace paddle {
|
|
|
|
namespace paddle {
|
|
|
|
namespace framework {} // namespace framework
|
|
|
|
namespace framework {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Node {
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
enum class Type { kNone = -1, kOperation, kVariable };
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Node() {}
|
|
|
|
|
|
|
|
virtual ~Node() {}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename Subclass>
|
|
|
|
|
|
|
|
Subclass &As() {
|
|
|
|
|
|
|
|
return *dynamic_cast<Subclass *>(this);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int64_t ID() const { return id_; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::string Name() const { return name_; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual std::string ToString() const {
|
|
|
|
|
|
|
|
return Name() + "(" + std::to_string(ID()) + ")";
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Type NodeType() const { return type_; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
std::vector<Node *> inputs;
|
|
|
|
|
|
|
|
std::vector<Node *> outputs;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
protected:
|
|
|
|
|
|
|
|
int64_t id_ = 0;
|
|
|
|
|
|
|
|
std::string name_;
|
|
|
|
|
|
|
|
Type type_;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DISABLE_COPY_AND_ASSIGN(Node);
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} // namespace framework
|
|
|
|
} // namespace paddle
|
|
|
|
} // namespace paddle
|
|
|
|