fix-simple-binary-encoding icon indicating copy to clipboard operation
fix-simple-binary-encoding copied to clipboard

Clarify offset and length related types

Open OleksandrKvl opened this issue 2 years ago • 5 comments

Currently, offset and message.blockLength are specified as unsignedInt (32-bit) while type.length is nonNegativeInteger which is by spec "unbounded" which I guess can be treated as "at least 64-bit". In this way offset is unable to represent the full range of potential sizes. I think:

  1. They should have the same type.
  2. Maybe it makes sense to use unsignedLong (64-bit) to make it more specific rather than vague nonNegativeInteger which doesn't impose any limitation.

OleksandrKvl avatar Apr 25 '22 09:04 OleksandrKvl

You didn't specify which version of SBE you are referencing. In the latest schema for SBE v2.0 RC3, blockLength and length are of the same type, nonNegativeInteger.

donmendelson avatar Apr 25 '22 13:04 donmendelson

Oh, I checked only the Markdown version, here it still says unsingedInt. In the XSD it's nonNegativeInteger as you said. What do you think about offset type?

OleksandrKvl avatar Apr 25 '22 13:04 OleksandrKvl

The XSD is normative. The documentation needs to be made consistent.

donmendelson avatar Apr 25 '22 13:04 donmendelson

Oh, I checked only the Markdown version, here it still says unsingedInt. In the XSD it's nonNegativeInteger as you said. What do you think about offset type?

@OleksandrKvl, thanks for catching that issue!

kleihan avatar Apr 25 '22 13:04 kleihan

Just want to clarify that it's not only about documentation, the main points are that 1. offset should have the same type as length and 2. probably it's better not to use unbounded types anywhere in specification. For example, in Python3 there's no limit for integers which is not true for C++, can I be sure that SBE implementations in both of them are compatible?

OleksandrKvl avatar May 09 '22 16:05 OleksandrKvl