Remove own for add_op

* add_op could take a unique_ptr or a const reference. If unique_ptr is
  taken, the NetOp will take care of that operator's life cycle. If a
  const reference is taken, that op will be Cloned.
revert-3824-remove_grad_op_type
Yu Yang 8 years ago
parent 4932f7529f
commit 225579b9d9

@ -89,33 +89,18 @@ class NetOp : public framework::OperatorBase {
/**
* @brief Add an operator by ptr
*/
void AddOp(framework::OperatorBase* op, bool own) {
void AddOp(std::unique_ptr<framework::OperatorBase>&& op) {
PADDLE_ENFORCE(!add_op_done_, "Cannot AddOp when this network is sealed");
PADDLE_ENFORCE_NOT_NULL(op, "Cannot Insert Null op");
if (!own) {
op = op->Clone().release();
}
ops_.emplace_back(op);
}
void AddOp(std::unique_ptr<framework::OperatorBase>&& op) {
AddOp(op.release(), true);
ops_.push_back(std::move(op));
}
void InsertOp(size_t pos, framework::OperatorBase* op, bool own) {
void InsertOp(size_t pos, std::unique_ptr<framework::OperatorBase>&& op) {
PADDLE_ENFORCE(!add_op_done_,
"Cannot InsertOp when this network is sealed");
PADDLE_ENFORCE_NOT_NULL(op, "Cannot Insert Null op");
PADDLE_ENFORCE_LE(pos, ops_.size(), "Out of range");
if (!own) {
op = op->Clone().release();
}
ops_.insert(ops_.begin() + pos,
std::unique_ptr<framework::OperatorBase>(op));
}
void InsertOp(size_t pos, std::unique_ptr<framework::OperatorBase>&& op) {
InsertOp(pos, op.release(), true);
ops_.insert(ops_.begin() + pos, std::move(op));
}
void InsertOp(size_t pos, const framework::OperatorBase& op) {

Loading…
Cancel
Save