| 634 | } |
| 635 | |
| 636 | Status OpDefBuilder::Finalize(OpRegistrationData* op_reg_data) const { |
| 637 | std::vector<string> errors = errors_; |
| 638 | *op_reg_data = op_reg_data_; |
| 639 | |
| 640 | OpDef* op_def = &op_reg_data->op_def; |
| 641 | for (StringPiece attr : attrs_) { |
| 642 | FinalizeAttr(attr, op_def, &errors); |
| 643 | } |
| 644 | for (StringPiece input : inputs_) { |
| 645 | FinalizeInputOrOutput(input, false, op_def, &errors); |
| 646 | } |
| 647 | for (StringPiece output : outputs_) { |
| 648 | FinalizeInputOrOutput(output, true, op_def, &errors); |
| 649 | } |
| 650 | for (StringPiece control_output : control_outputs_) { |
| 651 | FinalizeControlOutput(control_output, op_def, &errors); |
| 652 | } |
| 653 | FinalizeDoc(doc_, op_def, &errors); |
| 654 | |
| 655 | if (errors.empty()) return Status::OK(); |
| 656 | return errors::InvalidArgument(absl::StrJoin(errors, "\n")); |
| 657 | } |
| 658 | |
| 659 | } // namespace tensorflow |