Use scoped enum for TTokenKind / TDataType #182
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.
This pull request converts the token kind constants into a TTokenKind enumeration, providing local names and type safety (as opposed to everything being BYTE. For now, TDataType is defined as a synonym for TTokenKind to already improve the readability of the source. Later, TDataType shall only contain the constants that are really data types.
Some additional functions were added to encapsulate access to GetDataSize, GetIdentifierFullName, and GetIdentifierDataSize, and to activate tracing for the computation of data sizes. This was done because the original version relied on the accidental result DataSize[0]=0, which was not guaranteed by the code.
The change is logically simple (prefixing all constants with the correct type prefix, using the proper type for variables/parameters), but it of course affects most of the code. Therefore, I kept it separate for semantic changes. I have retested the results using my tests, and the result is identical.