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

namespace Google\Protobuf\Field;

/**
 * Whether a field is optional, required, or repeated.
 *
 * Protobuf type <code>google.protobuf.Field.Cardinality</code>
 */
class Cardinality
{
    /**
     * For fields with unknown cardinality.
     *
     * Generated from protobuf enum <code>CARDINALITY_UNKNOWN = 0;</code>
     */
    const CARDINALITY_UNKNOWN = 0;
    /**
     * For optional fields.
     *
     * Generated from protobuf enum <code>CARDINALITY_OPTIONAL = 1;</code>
     */
    const CARDINALITY_OPTIONAL = 1;
    /**
     * For required fields. Proto2 syntax only.
     *
     * Generated from protobuf enum <code>CARDINALITY_REQUIRED = 2;</code>
     */
    const CARDINALITY_REQUIRED = 2;
    /**
     * For repeated fields.
     *
     * Generated from protobuf enum <code>CARDINALITY_REPEATED = 3;</code>
     */
    const CARDINALITY_REPEATED = 3;
}

// Adding a class alias for backwards compatibility with the previous class name.
class_alias(Cardinality::class, \Google\Protobuf\Field_Cardinality::class);

