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

package org.tensorflow.proto.framework;

public interface FunctionDefOrBuilder extends
    // @@protoc_insertion_point(interface_extends:tensorflow.FunctionDef)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <pre>
   * The definition of the function's name, arguments, return values,
   * attrs etc.
   * </pre>
   *
   * <code>.tensorflow.OpDef signature = 1;</code>
   */
  boolean hasSignature();
  /**
   * <pre>
   * The definition of the function's name, arguments, return values,
   * attrs etc.
   * </pre>
   *
   * <code>.tensorflow.OpDef signature = 1;</code>
   */
  org.tensorflow.proto.framework.OpDef getSignature();
  /**
   * <pre>
   * The definition of the function's name, arguments, return values,
   * attrs etc.
   * </pre>
   *
   * <code>.tensorflow.OpDef signature = 1;</code>
   */
  org.tensorflow.proto.framework.OpDefOrBuilder getSignatureOrBuilder();

  /**
   * <pre>
   * Attributes specific to this function definition.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.AttrValue&gt; attr = 5;</code>
   */
  int getAttrCount();
  /**
   * <pre>
   * Attributes specific to this function definition.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.AttrValue&gt; attr = 5;</code>
   */
  boolean containsAttr(
      java.lang.String key);
  /**
   * Use {@link #getAttrMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, org.tensorflow.proto.framework.AttrValue>
  getAttr();
  /**
   * <pre>
   * Attributes specific to this function definition.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.AttrValue&gt; attr = 5;</code>
   */
  java.util.Map<java.lang.String, org.tensorflow.proto.framework.AttrValue>
  getAttrMap();
  /**
   * <pre>
   * Attributes specific to this function definition.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.AttrValue&gt; attr = 5;</code>
   */

  org.tensorflow.proto.framework.AttrValue getAttrOrDefault(
      java.lang.String key,
      org.tensorflow.proto.framework.AttrValue defaultValue);
  /**
   * <pre>
   * Attributes specific to this function definition.
   * </pre>
   *
   * <code>map&lt;string, .tensorflow.AttrValue&gt; attr = 5;</code>
   */

  org.tensorflow.proto.framework.AttrValue getAttrOrThrow(
      java.lang.String key);

  /**
   * <code>map&lt;uint32, .tensorflow.FunctionDef.ArgAttrs&gt; arg_attr = 7;</code>
   */
  int getArgAttrCount();
  /**
   * <code>map&lt;uint32, .tensorflow.FunctionDef.ArgAttrs&gt; arg_attr = 7;</code>
   */
  boolean containsArgAttr(
      int key);
  /**
   * Use {@link #getArgAttrMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.Integer, org.tensorflow.proto.framework.FunctionDef.ArgAttrs>
  getArgAttr();
  /**
   * <code>map&lt;uint32, .tensorflow.FunctionDef.ArgAttrs&gt; arg_attr = 7;</code>
   */
  java.util.Map<java.lang.Integer, org.tensorflow.proto.framework.FunctionDef.ArgAttrs>
  getArgAttrMap();
  /**
   * <code>map&lt;uint32, .tensorflow.FunctionDef.ArgAttrs&gt; arg_attr = 7;</code>
   */

  org.tensorflow.proto.framework.FunctionDef.ArgAttrs getArgAttrOrDefault(
      int key,
      org.tensorflow.proto.framework.FunctionDef.ArgAttrs defaultValue);
  /**
   * <code>map&lt;uint32, .tensorflow.FunctionDef.ArgAttrs&gt; arg_attr = 7;</code>
   */

  org.tensorflow.proto.framework.FunctionDef.ArgAttrs getArgAttrOrThrow(
      int key);

  /**
   * <pre>
   * Unique IDs for each resource argument, used to track aliasing resources. If
   * Argument A and Argument B alias each other, then
   * resource_arg_unique_ids[A.index] == resource_arg_unique_ids[B.index].
   * If this field is empty, none of the arguments could alias; otherwise, every
   * resource argument should have an entry in this field.
   * When instantiated, the unique IDs will be attached to the _Arg nodes'
   * "_resource_arg_unique_id" attribute.
   * </pre>
   *
   * <code>map&lt;uint32, uint32&gt; resource_arg_unique_id = 8;</code>
   */
  int getResourceArgUniqueIdCount();
  /**
   * <pre>
   * Unique IDs for each resource argument, used to track aliasing resources. If
   * Argument A and Argument B alias each other, then
   * resource_arg_unique_ids[A.index] == resource_arg_unique_ids[B.index].
   * If this field is empty, none of the arguments could alias; otherwise, every
   * resource argument should have an entry in this field.
   * When instantiated, the unique IDs will be attached to the _Arg nodes'
   * "_resource_arg_unique_id" attribute.
   * </pre>
   *
   * <code>map&lt;uint32, uint32&gt; resource_arg_unique_id = 8;</code>
   */
  boolean containsResourceArgUniqueId(
      int key);
  /**
   * Use {@link #getResourceArgUniqueIdMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.Integer, java.lang.Integer>
  getResourceArgUniqueId();
  /**
   * <pre>
   * Unique IDs for each resource argument, used to track aliasing resources. If
   * Argument A and Argument B alias each other, then
   * resource_arg_unique_ids[A.index] == resource_arg_unique_ids[B.index].
   * If this field is empty, none of the arguments could alias; otherwise, every
   * resource argument should have an entry in this field.
   * When instantiated, the unique IDs will be attached to the _Arg nodes'
   * "_resource_arg_unique_id" attribute.
   * </pre>
   *
   * <code>map&lt;uint32, uint32&gt; resource_arg_unique_id = 8;</code>
   */
  java.util.Map<java.lang.Integer, java.lang.Integer>
  getResourceArgUniqueIdMap();
  /**
   * <pre>
   * Unique IDs for each resource argument, used to track aliasing resources. If
   * Argument A and Argument B alias each other, then
   * resource_arg_unique_ids[A.index] == resource_arg_unique_ids[B.index].
   * If this field is empty, none of the arguments could alias; otherwise, every
   * resource argument should have an entry in this field.
   * When instantiated, the unique IDs will be attached to the _Arg nodes'
   * "_resource_arg_unique_id" attribute.
   * </pre>
   *
   * <code>map&lt;uint32, uint32&gt; resource_arg_unique_id = 8;</code>
   */

  int getResourceArgUniqueIdOrDefault(
      int key,
      int defaultValue);
  /**
   * <pre>
   * Unique IDs for each resource argument, used to track aliasing resources. If
   * Argument A and Argument B alias each other, then
   * resource_arg_unique_ids[A.index] == resource_arg_unique_ids[B.index].
   * If this field is empty, none of the arguments could alias; otherwise, every
   * resource argument should have an entry in this field.
   * When instantiated, the unique IDs will be attached to the _Arg nodes'
   * "_resource_arg_unique_id" attribute.
   * </pre>
   *
   * <code>map&lt;uint32, uint32&gt; resource_arg_unique_id = 8;</code>
   */

  int getResourceArgUniqueIdOrThrow(
      int key);

  /**
   * <pre>
   * By convention, "op" in node_def is resolved by consulting with a
   * user-defined library first. If not resolved, "func" is assumed to
   * be a builtin op.
   * </pre>
   *
   * <code>repeated .tensorflow.NodeDef node_def = 3;</code>
   */
  java.util.List<org.tensorflow.proto.framework.NodeDef> 
      getNodeDefList();
  /**
   * <pre>
   * By convention, "op" in node_def is resolved by consulting with a
   * user-defined library first. If not resolved, "func" is assumed to
   * be a builtin op.
   * </pre>
   *
   * <code>repeated .tensorflow.NodeDef node_def = 3;</code>
   */
  org.tensorflow.proto.framework.NodeDef getNodeDef(int index);
  /**
   * <pre>
   * By convention, "op" in node_def is resolved by consulting with a
   * user-defined library first. If not resolved, "func" is assumed to
   * be a builtin op.
   * </pre>
   *
   * <code>repeated .tensorflow.NodeDef node_def = 3;</code>
   */
  int getNodeDefCount();
  /**
   * <pre>
   * By convention, "op" in node_def is resolved by consulting with a
   * user-defined library first. If not resolved, "func" is assumed to
   * be a builtin op.
   * </pre>
   *
   * <code>repeated .tensorflow.NodeDef node_def = 3;</code>
   */
  java.util.List<? extends org.tensorflow.proto.framework.NodeDefOrBuilder> 
      getNodeDefOrBuilderList();
  /**
   * <pre>
   * By convention, "op" in node_def is resolved by consulting with a
   * user-defined library first. If not resolved, "func" is assumed to
   * be a builtin op.
   * </pre>
   *
   * <code>repeated .tensorflow.NodeDef node_def = 3;</code>
   */
  org.tensorflow.proto.framework.NodeDefOrBuilder getNodeDefOrBuilder(
      int index);

  /**
   * <pre>
   * A mapping from the output arg names from `signature` to the
   * outputs from `node_def` that should be returned by the function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; ret = 4;</code>
   */
  int getRetCount();
  /**
   * <pre>
   * A mapping from the output arg names from `signature` to the
   * outputs from `node_def` that should be returned by the function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; ret = 4;</code>
   */
  boolean containsRet(
      java.lang.String key);
  /**
   * Use {@link #getRetMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String>
  getRet();
  /**
   * <pre>
   * A mapping from the output arg names from `signature` to the
   * outputs from `node_def` that should be returned by the function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; ret = 4;</code>
   */
  java.util.Map<java.lang.String, java.lang.String>
  getRetMap();
  /**
   * <pre>
   * A mapping from the output arg names from `signature` to the
   * outputs from `node_def` that should be returned by the function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; ret = 4;</code>
   */

  java.lang.String getRetOrDefault(
      java.lang.String key,
      java.lang.String defaultValue);
  /**
   * <pre>
   * A mapping from the output arg names from `signature` to the
   * outputs from `node_def` that should be returned by the function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; ret = 4;</code>
   */

  java.lang.String getRetOrThrow(
      java.lang.String key);

  /**
   * <pre>
   * A mapping from control output names from `signature` to node names in
   * `node_def` which should be control outputs of this function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; control_ret = 6;</code>
   */
  int getControlRetCount();
  /**
   * <pre>
   * A mapping from control output names from `signature` to node names in
   * `node_def` which should be control outputs of this function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; control_ret = 6;</code>
   */
  boolean containsControlRet(
      java.lang.String key);
  /**
   * Use {@link #getControlRetMap()} instead.
   */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String>
  getControlRet();
  /**
   * <pre>
   * A mapping from control output names from `signature` to node names in
   * `node_def` which should be control outputs of this function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; control_ret = 6;</code>
   */
  java.util.Map<java.lang.String, java.lang.String>
  getControlRetMap();
  /**
   * <pre>
   * A mapping from control output names from `signature` to node names in
   * `node_def` which should be control outputs of this function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; control_ret = 6;</code>
   */

  java.lang.String getControlRetOrDefault(
      java.lang.String key,
      java.lang.String defaultValue);
  /**
   * <pre>
   * A mapping from control output names from `signature` to node names in
   * `node_def` which should be control outputs of this function.
   * </pre>
   *
   * <code>map&lt;string, string&gt; control_ret = 6;</code>
   */

  java.lang.String getControlRetOrThrow(
      java.lang.String key);
}
