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

namespace Google\Protobuf\Internal\FieldOptions;

/**
 * Protobuf type <code>google.protobuf.FieldOptions.CType</code>
 */
class CType
{
    /**
     * Default mode.
     *
     * Generated from protobuf enum <code>STRING = 0;</code>
     */
    const STRING = 0;
    /**
     * Generated from protobuf enum <code>CORD = 1;</code>
     */
    const CORD = 1;
    /**
     * Generated from protobuf enum <code>STRING_PIECE = 2;</code>
     */
    const STRING_PIECE = 2;
}

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

