package org.onosproject.drivers.barefoot.pro.pal;

/**
 * Autogenerated by Thrift Compiler (0.11.0)
 *
 * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
 *  @generated
 */

public enum pal_autoneg_policy_t implements org.apache.thrift.TEnum {
  BF_AN_DEFAULT(0),
  BF_AN_FORCE_ENABLE(1),
  BF_AN_FORCE_DISABLE(2);

  private final int value;

  private pal_autoneg_policy_t(int value) {
    this.value = value;
  }

  /**
   * Get the integer value of this enum value, as defined in the Thrift IDL.
   */
  public int getValue() {
    return value;
  }

  /**
   * Find a the enum type by its integer value, as defined in the Thrift IDL.
   * @return null if the value is not found.
   */
  public static pal_autoneg_policy_t findByValue(int value) { 
    switch (value) {
      case 0:
        return BF_AN_DEFAULT;
      case 1:
        return BF_AN_FORCE_ENABLE;
      case 2:
        return BF_AN_FORCE_DISABLE;
      default:
        return null;
    }
  }
}
