X680 20 Enumerated類型標識

20 Enumerated類型標識

       20.1 enumerated類型應該引用EnumeratedType標識。

       Enumerated ::=

              ENUMERATED “{” Enumerations ”}”

 

       Enumerations ::=

              RootEnumeration

              | RootEnumeration “,” “…”ExceptionSpec

              | RootEnumeration “,” “…”ExceptionSpec “,” AdditionalEnumeration

 

       RootEnumeration ::= Enumeration

 

       AdditionalEnumeration ::= Enumeration

 

       Enumeration ::= EnumerationItem |EnumerationItem ”,” Enumeration

      

       EnumerationItem ::= identifier |NamedNumber

       注1- 每個EnumerationType的值使用唯一的整型值來識別。然而,值本身並不預期都是整型的。EnumerationItem使用NamedNumber選項提供了控制值展現的能力來提供兼容擴展項的靈活性。

       注2- RootEnumeration中的NamedNumber的值不排序,也不是鄰近的值;AdditionalEnumeration中的NamedNumber的值是排序的,但不一定是鄰近的值。

 

       20.2 對於每個NamedNumber,在Enumeration中,identifier和SignedNumber應該和其他的identifier和SignedNumber不同。19.2和19.4節同樣適用與每個NamedNumber。

 

       20.3 在EnumerationType中的每個EnumerationItem的identifier分配連續的非負整數。對於RootEnumeration連續的整數從0開始,但是要排除使用分配了NamedNumber的EnumerationItem。

       注- EnumerationItem分配一個整型值是爲了在編碼規則上給予協助。它不在其他ASN.1規範上使用。

 

       20.4 在類型中,每個新的EnumerationItem的值應該大於之前定義的所有AdditionalEnumeration。

 

       20.5 當AdditionalEnumeration中使用NamedNumber定義EnumerationItem,它的值應該不同與所有在這類型中之前定義的EnumertaionItem,不管之前定義的EnumerationItem是不是在根枚舉類型中。例如:

       A ::= ENUMERATED {a, b, …, c(0)} --無效,因爲a和c都等於0

       B ::= ENUMERATED {a, b, …, c, d(2) } -- 無效,因爲c和d都等於2

       C ::= ENUMERATED {a, b(3), …, c(1)} -- 有效,c=1

       D ::= ENUMERATED {a, b, …, c(2)} -- 有效,c=2

 

       20.6 當EnumerationItem不是定義在RootEnumeration中的時候,在AdditionalEnumeration中的第一個EnumerationItem的值的identifier(不是NamedNumber)應該是最小值。在AdditionalEnumeration中定義的之前的EnumerationItem應該是較小值。例如以下都是有效的:

       A ::= ENUMERATED {a, b, …, c} -- c = 2

       B ::= ENUMERATED {a, b, c(0), …, d} -- d= 3

       C ::= ENUMERATED {a, b, …, c(3), d} -- d= 4

       D ::= ENUMERATED {a, z(25), …, d} -- d = 1

 

       20.7 enumerated類型標籤是universal類型,值10.

 

       20.8 enumerated類型的值應該使用EnumeratedValue標識定義,或當使用XMLValue時候,使用XMLEnumeratedValue標識定義,表達式如下:

       EnumeratedValue ::= identifier

      

       XMLEnumeratedValue ::=

              EmptyElementEnumerated

              | TextEnumerated

 

       EmptyElementEnumerated ::= “<”&identifier ”/>”

 

       TextEnumerated ::= identifier

 

       20.9 如果EmptyElementEnumerated出現在XMLValueAssignment中,那麼TextEnumerated就不應該出現在XMLValueAssignment中。

 

       20.10 EnumeratedValue和XMLEnumeratedValue中的identifier應該和EnumeratedType序列中被選中的值的identifier相等。

 

       20.11在enumerated類型的值標識實例中,名稱應該是Enumeration的identifier,引用名稱應該和identifier有關。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章