der: add TagNumber
type, make Tag
structured
#464
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Adds a
TagNumber
type for representing the lower 5 bits of a Tag, where bits 8/7 identify the class and bit 6 identifies primitive vs constructed forms.Changes
Tag
from beingrepr(u8)
to a structured representation withApplication
,ContextSpecific
, andPrivate
variants, each of which includes aTagNumber
. This enables support for all of these classes for tag numbers up to 30, which is the maximum value which can be represented with a single leading identifier octet.This change enables the
ContextSpecific
struct to have public members, as the tag number invariant can now be maintained by theTagNumber
type instead.