<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/compute/v1/compute.proto

namespace Google\Cloud\Compute\V1\AllocationAggregateReservation;

use UnexpectedValueException;

/**
 * The VM family that all instances scheduled against this reservation must
 * belong to.
 *
 * Protobuf type <code>google.cloud.compute.v1.AllocationAggregateReservation.VmFamily</code>
 */
class VmFamily
{
    /**
     * A value indicating that the enum field is not set.
     *
     * Generated from protobuf enum <code>UNDEFINED_VM_FAMILY = 0;</code>
     */
    const UNDEFINED_VM_FAMILY = 0;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_DEVICE_CT3 = 42845948;</code>
     */
    const VM_FAMILY_CLOUD_TPU_DEVICE_CT3 = 42845948;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L = 108020067;</code>
     */
    const VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L = 108020067;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP = 18705267;</code>
     */
    const VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP = 18705267;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E = 398926997;</code>
     */
    const VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E = 398926997;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_POD_SLICE_CT3P = 517384376;</code>
     */
    const VM_FAMILY_CLOUD_TPU_POD_SLICE_CT3P = 517384376;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P = 517384407;</code>
     */
    const VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P = 517384407;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P = 517384438;</code>
     */
    const VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P = 517384438;
    /**
     * Generated from protobuf enum <code>VM_FAMILY_CLOUD_TPU_POD_SLICE_TPU7X = 485271888;</code>
     */
    const VM_FAMILY_CLOUD_TPU_POD_SLICE_TPU7X = 485271888;

    private static $valueToName = [
        self::UNDEFINED_VM_FAMILY => 'UNDEFINED_VM_FAMILY',
        self::VM_FAMILY_CLOUD_TPU_DEVICE_CT3 => 'VM_FAMILY_CLOUD_TPU_DEVICE_CT3',
        self::VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L => 'VM_FAMILY_CLOUD_TPU_LITE_DEVICE_CT5L',
        self::VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP => 'VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT5LP',
        self::VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E => 'VM_FAMILY_CLOUD_TPU_LITE_POD_SLICE_CT6E',
        self::VM_FAMILY_CLOUD_TPU_POD_SLICE_CT3P => 'VM_FAMILY_CLOUD_TPU_POD_SLICE_CT3P',
        self::VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P => 'VM_FAMILY_CLOUD_TPU_POD_SLICE_CT4P',
        self::VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P => 'VM_FAMILY_CLOUD_TPU_POD_SLICE_CT5P',
        self::VM_FAMILY_CLOUD_TPU_POD_SLICE_TPU7X => 'VM_FAMILY_CLOUD_TPU_POD_SLICE_TPU7X',
    ];

    public static function name($value)
    {
        if (!isset(self::$valueToName[$value])) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no name defined for value %s', __CLASS__, $value));
        }
        return self::$valueToName[$value];
    }


    public static function value($name)
    {
        $const = __CLASS__ . '::' . strtoupper($name);
        if (!defined($const)) {
            throw new UnexpectedValueException(sprintf(
                    'Enum %s has no value defined for name %s', __CLASS__, $name));
        }
        return constant($const);
    }
}

