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_oper_status_t implements org.apache.thrift.TEnum {
  BF_PORT_DOWN(0),
  BF_PORT_UP(1);

  private final int value;

  private pal_oper_status_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_oper_status_t findByValue(int value) { 
    switch (value) {
      case 0:
        return BF_PORT_DOWN;
      case 1:
        return BF_PORT_UP;
      default:
        return null;
    }
  }
}
