text: #include "caffe2/onnx/helper.h"
  
  #include "caffe2/core/logging.h"
  #include "caffe2/core/operator.h"
  
  namespace caffe2 { namespace onnx  {
  
  std::string DummyName::NewDummyName() {
    while (true) {
      const std::string name = caffe2::MakeString("OC2_DUMMY_", counter_++);
      auto ret = used_names_.insert(name);
      if (ret.second) {
        return name;
      }
    }
  }
  
  void DummyName::Reset(const std::unordered_set<std::string> &used_names) {
    used_names_ = used_names;
    counter_ = 0;
  }
  
  NodeProto MakeNode(
      const std::string& type,
      const std::vector<std::string>& inputs,
      const std::vector<std::string>& outputs,
      const std::vector<AttributeProto>& attributes,
      const std::string& name) {
    NodeProto node;
    if (!name.empty()) {
      node.set_name(name);
    }
    node.set_op_type(type);
    for (const auto& input: inputs) {
      node.add_input(input);
    }
    for (const auto& output: outputs) {
      node.add_output(output);
    }
    for (const auto& attr: attributes) {
      node.add_attribute()->CopyFrom(attr);
    }
    return node;
  }
  }}
  