/*
  Copyright 2021 The TensorFlow Authors. All Rights Reserved.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 ==============================================================================
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: tensorflow/core/framework/op_def.proto

package org.tensorflow.proto.framework;

/**
 * <pre>
 * A collection of OpDefs
 * </pre>
 *
 * Protobuf type {@code tensorflow.OpList}
 */
public  final class OpList extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:tensorflow.OpList)
    OpListOrBuilder {
private static final long serialVersionUID = 0L;

  // Use OpList.newBuilder() to construct.
  private OpList(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }

  private OpList() {
    op_ = java.util.Collections.emptyList();
  }

  @Override
  @SuppressWarnings({"unused"})
  protected Object newInstance(
      UnusedPrivateParameter unused) {
    return new OpList();
  }

  @Override
  public final com.google.protobuf.UnknownFieldSet
  getUnknownFields() {
    return this.unknownFields;
  }

  private OpList(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    this();
    if (extensionRegistry == null) {
      throw new NullPointerException();
    }
    int mutable_bitField0_ = 0;
    com.google.protobuf.UnknownFieldSet.Builder unknownFields =
        com.google.protobuf.UnknownFieldSet.newBuilder();
    try {
      boolean done = false;
      while (!done) {
        int tag = input.readTag();
        switch (tag) {
          case 0:
            done = true;
            break;
          case 10: {
            if (!((mutable_bitField0_ & 0x00000001) != 0)) {
              op_ = new java.util.ArrayList<OpDef>();
              mutable_bitField0_ |= 0x00000001;
            }
            op_.add(
                input.readMessage(OpDef.parser(), extensionRegistry));
            break;
          }
          default: {
            if (!parseUnknownField(
                input, unknownFields, extensionRegistry, tag)) {
              done = true;
            }
            break;
          }
        }
      }
    } catch (com.google.protobuf.InvalidProtocolBufferException e) {
      throw e.setUnfinishedMessage(this);
    } catch (java.io.IOException e) {
      throw new com.google.protobuf.InvalidProtocolBufferException(
          e).setUnfinishedMessage(this);
    } finally {
      if (((mutable_bitField0_ & 0x00000001) != 0)) {
        op_ = java.util.Collections.unmodifiableList(op_);
      }
      this.unknownFields = unknownFields.build();
      makeExtensionsImmutable();
    }
  }

  public static final com.google.protobuf.Descriptors.Descriptor
  getDescriptor() {
    return OpDefProtos.internal_static_tensorflow_OpList_descriptor;
  }

  @Override
  protected FieldAccessorTable
  internalGetFieldAccessorTable() {
    return OpDefProtos.internal_static_tensorflow_OpList_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            OpList.class, Builder.class);
  }

  public static final int OP_FIELD_NUMBER = 1;
  private java.util.List<OpDef> op_;

  /**
   * <code>repeated .tensorflow.OpDef op = 1;</code>
   */
  public java.util.List<OpDef> getOpList() {
    return op_;
  }

  /**
   * <code>repeated .tensorflow.OpDef op = 1;</code>
   */
  public java.util.List<? extends OpDefOrBuilder>
  getOpOrBuilderList() {
    return op_;
  }

  /**
   * <code>repeated .tensorflow.OpDef op = 1;</code>
   */
  public int getOpCount() {
    return op_.size();
  }

  /**
   * <code>repeated .tensorflow.OpDef op = 1;</code>
   */
  public OpDef getOp(int index) {
    return op_.get(index);
  }

  /**
   * <code>repeated .tensorflow.OpDef op = 1;</code>
   */
  public OpDefOrBuilder getOpOrBuilder(
      int index) {
    return op_.get(index);
  }

  private byte memoizedIsInitialized = -1;

  @Override
  public final boolean isInitialized() {
    byte isInitialized = memoizedIsInitialized;
    if (isInitialized == 1) return true;
    if (isInitialized == 0) return false;

    memoizedIsInitialized = 1;
    return true;
  }

  @Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
      throws java.io.IOException {
    for (int i = 0; i < op_.size(); i++) {
      output.writeMessage(1, op_.get(i));
    }
    unknownFields.writeTo(output);
  }

  @Override
  public int getSerializedSize() {
    int size = memoizedSize;
    if (size != -1) return size;

    size = 0;
    for (int i = 0; i < op_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, op_.get(i));
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @Override
  public boolean equals(final Object obj) {
    if (obj == this) {
      return true;
    }
    if (!(obj instanceof OpList)) {
      return super.equals(obj);
    }
    OpList other = (OpList) obj;

    if (!getOpList()
        .equals(other.getOpList())) {
      return false;
    }
    if (!unknownFields.equals(other.unknownFields)) return false;
    return true;
  }

  @Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    if (getOpCount() > 0) {
      hash = (37 * hash) + OP_FIELD_NUMBER;
      hash = (53 * hash) + getOpList().hashCode();
    }
    hash = (29 * hash) + unknownFields.hashCode();
    memoizedHashCode = hash;
    return hash;
  }

  public static OpList parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static OpList parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static OpList parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static OpList parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static OpList parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }

  public static OpList parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }

  public static OpList parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }

  public static OpList parseFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  public static OpList parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }

  public static OpList parseDelimitedFrom(
      java.io.InputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
  }

  public static OpList parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }

  public static OpList parseFrom(
      com.google.protobuf.CodedInputStream input,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input, extensionRegistry);
  }

  @Override
  public Builder newBuilderForType() { return newBuilder(); }

  public static Builder newBuilder() {
    return DEFAULT_INSTANCE.toBuilder();
  }

  public static Builder newBuilder(OpList prototype) {
    return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
  }

  @Override
  public Builder toBuilder() {
    return this == DEFAULT_INSTANCE
        ? new Builder() : new Builder().mergeFrom(this);
  }

  @Override
  protected Builder newBuilderForType(
      BuilderParent parent) {
    Builder builder = new Builder(parent);
    return builder;
  }

  /**
   * <pre>
   * A collection of OpDefs
   * </pre>
   *
   * Protobuf type {@code tensorflow.OpList}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:tensorflow.OpList)
      OpListOrBuilder {

    public static final com.google.protobuf.Descriptors.Descriptor
    getDescriptor() {
      return OpDefProtos.internal_static_tensorflow_OpList_descriptor;
    }

    @Override
    protected FieldAccessorTable
    internalGetFieldAccessorTable() {
      return OpDefProtos.internal_static_tensorflow_OpList_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              OpList.class, Builder.class);
    }

    // Construct using org.tensorflow.proto.framework.OpList.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

    private Builder(
        BuilderParent parent) {
      super(parent);
      maybeForceBuilderInitialization();
    }

    private void maybeForceBuilderInitialization() {
      if (com.google.protobuf.GeneratedMessageV3
          .alwaysUseFieldBuilders) {
        getOpFieldBuilder();
      }
    }

    @Override
    public Builder clear() {
      super.clear();
      if (opBuilder_ == null) {
        op_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
      } else {
        opBuilder_.clear();
      }
      return this;
    }

    @Override
    public com.google.protobuf.Descriptors.Descriptor
    getDescriptorForType() {
      return OpDefProtos.internal_static_tensorflow_OpList_descriptor;
    }

    @Override
    public OpList getDefaultInstanceForType() {
      return OpList.getDefaultInstance();
    }

    @Override
    public OpList build() {
      OpList result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @Override
    public OpList buildPartial() {
      OpList result = new OpList(this);
      int from_bitField0_ = bitField0_;
      if (opBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)) {
          op_ = java.util.Collections.unmodifiableList(op_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.op_ = op_;
      } else {
        result.op_ = opBuilder_.build();
      }
      onBuilt();
      return result;
    }

    @Override
    public Builder clone() {
      return super.clone();
    }

    @Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.setField(field, value);
    }

    @Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }

    @Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }

    @Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, Object value) {
      return super.setRepeatedField(field, index, value);
    }

    @Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        Object value) {
      return super.addRepeatedField(field, value);
    }

    @Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof OpList) {
        return mergeFrom((OpList) other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(OpList other) {
      if (other == OpList.getDefaultInstance()) {
        return this;
      }
      if (opBuilder_ == null) {
        if (!other.op_.isEmpty()) {
          if (op_.isEmpty()) {
            op_ = other.op_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureOpIsMutable();
            op_.addAll(other.op_);
          }
          onChanged();
        }
      } else {
        if (!other.op_.isEmpty()) {
          if (opBuilder_.isEmpty()) {
            opBuilder_.dispose();
            opBuilder_ = null;
            op_ = other.op_;
            bitField0_ = (bitField0_ & ~0x00000001);
            opBuilder_ =
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                    getOpFieldBuilder() : null;
          } else {
            opBuilder_.addAllMessages(other.op_);
          }
        }
      }
      this.mergeUnknownFields(other.unknownFields);
      onChanged();
      return this;
    }

    @Override
    public final boolean isInitialized() {
      return true;
    }

    @Override
    public Builder mergeFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      OpList parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (OpList) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }

    private int bitField0_;

    private java.util.List<OpDef> op_ =
        java.util.Collections.emptyList();

    private void ensureOpIsMutable() {
      if (!((bitField0_ & 0x00000001) != 0)) {
        op_ = new java.util.ArrayList<OpDef>(op_);
        bitField0_ |= 0x00000001;
      }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        OpDef, OpDef.Builder, OpDefOrBuilder> opBuilder_;

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public java.util.List<OpDef> getOpList() {
      if (opBuilder_ == null) {
        return java.util.Collections.unmodifiableList(op_);
      } else {
        return opBuilder_.getMessageList();
      }
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public int getOpCount() {
      if (opBuilder_ == null) {
        return op_.size();
      } else {
        return opBuilder_.getCount();
      }
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public OpDef getOp(int index) {
      if (opBuilder_ == null) {
        return op_.get(index);
      } else {
        return opBuilder_.getMessage(index);
      }
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder setOp(
        int index, OpDef value) {
      if (opBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOpIsMutable();
        op_.set(index, value);
        onChanged();
      } else {
        opBuilder_.setMessage(index, value);
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder setOp(
        int index, OpDef.Builder builderForValue) {
      if (opBuilder_ == null) {
        ensureOpIsMutable();
        op_.set(index, builderForValue.build());
        onChanged();
      } else {
        opBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder addOp(OpDef value) {
      if (opBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOpIsMutable();
        op_.add(value);
        onChanged();
      } else {
        opBuilder_.addMessage(value);
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder addOp(
        int index, OpDef value) {
      if (opBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureOpIsMutable();
        op_.add(index, value);
        onChanged();
      } else {
        opBuilder_.addMessage(index, value);
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder addOp(
        OpDef.Builder builderForValue) {
      if (opBuilder_ == null) {
        ensureOpIsMutable();
        op_.add(builderForValue.build());
        onChanged();
      } else {
        opBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder addOp(
        int index, OpDef.Builder builderForValue) {
      if (opBuilder_ == null) {
        ensureOpIsMutable();
        op_.add(index, builderForValue.build());
        onChanged();
      } else {
        opBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder addAllOp(
        Iterable<? extends OpDef> values) {
      if (opBuilder_ == null) {
        ensureOpIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, op_);
        onChanged();
      } else {
        opBuilder_.addAllMessages(values);
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder clearOp() {
      if (opBuilder_ == null) {
        op_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
      } else {
        opBuilder_.clear();
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public Builder removeOp(int index) {
      if (opBuilder_ == null) {
        ensureOpIsMutable();
        op_.remove(index);
        onChanged();
      } else {
        opBuilder_.remove(index);
      }
      return this;
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public OpDef.Builder getOpBuilder(
        int index) {
      return getOpFieldBuilder().getBuilder(index);
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public OpDefOrBuilder getOpOrBuilder(
        int index) {
      if (opBuilder_ == null) {
        return op_.get(index);
      } else {
        return opBuilder_.getMessageOrBuilder(index);
      }
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public java.util.List<? extends OpDefOrBuilder>
    getOpOrBuilderList() {
      if (opBuilder_ != null) {
        return opBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(op_);
      }
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public OpDef.Builder addOpBuilder() {
      return getOpFieldBuilder().addBuilder(
          OpDef.getDefaultInstance());
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public OpDef.Builder addOpBuilder(
        int index) {
      return getOpFieldBuilder().addBuilder(
          index, OpDef.getDefaultInstance());
    }

    /**
     * <code>repeated .tensorflow.OpDef op = 1;</code>
     */
    public java.util.List<OpDef.Builder>
    getOpBuilderList() {
      return getOpFieldBuilder().getBuilderList();
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        OpDef, OpDef.Builder, OpDefOrBuilder>
    getOpFieldBuilder() {
      if (opBuilder_ == null) {
        opBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            OpDef, OpDef.Builder, OpDefOrBuilder>(
            op_,
            ((bitField0_ & 0x00000001) != 0),
            getParentForChildren(),
            isClean());
        op_ = null;
      }
      return opBuilder_;
    }

    @Override
    public final Builder setUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.setUnknownFields(unknownFields);
    }

    @Override
    public final Builder mergeUnknownFields(
        final com.google.protobuf.UnknownFieldSet unknownFields) {
      return super.mergeUnknownFields(unknownFields);
    }

    // @@protoc_insertion_point(builder_scope:tensorflow.OpList)
  }

  // @@protoc_insertion_point(class_scope:tensorflow.OpList)
  private static final OpList DEFAULT_INSTANCE;

  static {
    DEFAULT_INSTANCE = new OpList();
  }

  public static OpList getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

  private static final com.google.protobuf.Parser<OpList>
      PARSER = new com.google.protobuf.AbstractParser<OpList>() {
    @Override
    public OpList parsePartialFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return new OpList(input, extensionRegistry);
    }
  };

  public static com.google.protobuf.Parser<OpList> parser() {
    return PARSER;
  }

  @Override
  public com.google.protobuf.Parser<OpList> getParserForType() {
    return PARSER;
  }

  @Override
  public OpList getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

