1ffe3c632Sopenharmony_ci<?php 2ffe3c632Sopenharmony_ci 3ffe3c632Sopenharmony_cinamespace Google\Protobuf\Internal; 4ffe3c632Sopenharmony_ci 5ffe3c632Sopenharmony_ciuse Google\Protobuf\EnumValueDescriptor; 6ffe3c632Sopenharmony_ci 7ffe3c632Sopenharmony_ciclass EnumDescriptor 8ffe3c632Sopenharmony_ci{ 9ffe3c632Sopenharmony_ci use HasPublicDescriptorTrait; 10ffe3c632Sopenharmony_ci 11ffe3c632Sopenharmony_ci private $klass; 12ffe3c632Sopenharmony_ci private $legacy_klass; 13ffe3c632Sopenharmony_ci private $full_name; 14ffe3c632Sopenharmony_ci private $value; 15ffe3c632Sopenharmony_ci private $name_to_value; 16ffe3c632Sopenharmony_ci private $value_descriptor = []; 17ffe3c632Sopenharmony_ci 18ffe3c632Sopenharmony_ci public function __construct() 19ffe3c632Sopenharmony_ci { 20ffe3c632Sopenharmony_ci $this->public_desc = new \Google\Protobuf\EnumDescriptor($this); 21ffe3c632Sopenharmony_ci } 22ffe3c632Sopenharmony_ci 23ffe3c632Sopenharmony_ci public function setFullName($full_name) 24ffe3c632Sopenharmony_ci { 25ffe3c632Sopenharmony_ci $this->full_name = $full_name; 26ffe3c632Sopenharmony_ci } 27ffe3c632Sopenharmony_ci 28ffe3c632Sopenharmony_ci public function getFullName() 29ffe3c632Sopenharmony_ci { 30ffe3c632Sopenharmony_ci return $this->full_name; 31ffe3c632Sopenharmony_ci } 32ffe3c632Sopenharmony_ci 33ffe3c632Sopenharmony_ci public function addValue($number, $value) 34ffe3c632Sopenharmony_ci { 35ffe3c632Sopenharmony_ci $this->value[$number] = $value; 36ffe3c632Sopenharmony_ci $this->name_to_value[$value->getName()] = $value; 37ffe3c632Sopenharmony_ci $this->value_descriptor[] = new EnumValueDescriptor($value->getName(), $number); 38ffe3c632Sopenharmony_ci } 39ffe3c632Sopenharmony_ci 40ffe3c632Sopenharmony_ci public function getValueByNumber($number) 41ffe3c632Sopenharmony_ci { 42ffe3c632Sopenharmony_ci if (isset($this->value[$number])) { 43ffe3c632Sopenharmony_ci return $this->value[$number]; 44ffe3c632Sopenharmony_ci } 45ffe3c632Sopenharmony_ci return null; 46ffe3c632Sopenharmony_ci } 47ffe3c632Sopenharmony_ci 48ffe3c632Sopenharmony_ci public function getValueByName($name) 49ffe3c632Sopenharmony_ci { 50ffe3c632Sopenharmony_ci if (isset($this->name_to_value[$name])) { 51ffe3c632Sopenharmony_ci return $this->name_to_value[$name]; 52ffe3c632Sopenharmony_ci } 53ffe3c632Sopenharmony_ci return null; 54ffe3c632Sopenharmony_ci } 55ffe3c632Sopenharmony_ci 56ffe3c632Sopenharmony_ci public function getValueDescriptorByIndex($index) 57ffe3c632Sopenharmony_ci { 58ffe3c632Sopenharmony_ci if (isset($this->value_descriptor[$index])) { 59ffe3c632Sopenharmony_ci return $this->value_descriptor[$index]; 60ffe3c632Sopenharmony_ci } 61ffe3c632Sopenharmony_ci return null; 62ffe3c632Sopenharmony_ci } 63ffe3c632Sopenharmony_ci 64ffe3c632Sopenharmony_ci public function getValueCount() 65ffe3c632Sopenharmony_ci { 66ffe3c632Sopenharmony_ci return count($this->value); 67ffe3c632Sopenharmony_ci } 68ffe3c632Sopenharmony_ci 69ffe3c632Sopenharmony_ci public function setClass($klass) 70ffe3c632Sopenharmony_ci { 71ffe3c632Sopenharmony_ci $this->klass = $klass; 72ffe3c632Sopenharmony_ci } 73ffe3c632Sopenharmony_ci 74ffe3c632Sopenharmony_ci public function getClass() 75ffe3c632Sopenharmony_ci { 76ffe3c632Sopenharmony_ci return $this->klass; 77ffe3c632Sopenharmony_ci } 78ffe3c632Sopenharmony_ci 79ffe3c632Sopenharmony_ci public function setLegacyClass($klass) 80ffe3c632Sopenharmony_ci { 81ffe3c632Sopenharmony_ci $this->legacy_klass = $klass; 82ffe3c632Sopenharmony_ci } 83ffe3c632Sopenharmony_ci 84ffe3c632Sopenharmony_ci public function getLegacyClass() 85ffe3c632Sopenharmony_ci { 86ffe3c632Sopenharmony_ci return $this->legacy_klass; 87ffe3c632Sopenharmony_ci } 88ffe3c632Sopenharmony_ci 89ffe3c632Sopenharmony_ci public static function buildFromProto($proto, $file_proto, $containing) 90ffe3c632Sopenharmony_ci { 91ffe3c632Sopenharmony_ci $desc = new EnumDescriptor(); 92ffe3c632Sopenharmony_ci 93ffe3c632Sopenharmony_ci $enum_name_without_package = ""; 94ffe3c632Sopenharmony_ci $classname = ""; 95ffe3c632Sopenharmony_ci $legacy_classname = ""; 96ffe3c632Sopenharmony_ci $fullname = ""; 97ffe3c632Sopenharmony_ci GPBUtil::getFullClassName( 98ffe3c632Sopenharmony_ci $proto, 99ffe3c632Sopenharmony_ci $containing, 100ffe3c632Sopenharmony_ci $file_proto, 101ffe3c632Sopenharmony_ci $enum_name_without_package, 102ffe3c632Sopenharmony_ci $classname, 103ffe3c632Sopenharmony_ci $legacy_classname, 104ffe3c632Sopenharmony_ci $fullname); 105ffe3c632Sopenharmony_ci $desc->setFullName($fullname); 106ffe3c632Sopenharmony_ci $desc->setClass($classname); 107ffe3c632Sopenharmony_ci $desc->setLegacyClass($legacy_classname); 108ffe3c632Sopenharmony_ci $values = $proto->getValue(); 109ffe3c632Sopenharmony_ci foreach ($values as $value) { 110ffe3c632Sopenharmony_ci $desc->addValue($value->getNumber(), $value); 111ffe3c632Sopenharmony_ci } 112ffe3c632Sopenharmony_ci 113ffe3c632Sopenharmony_ci return $desc; 114ffe3c632Sopenharmony_ci } 115ffe3c632Sopenharmony_ci} 116