В protobuf у нас есть только выбор использования 32- или 64-битного целого числа со знаком или без знака, чтобы ограничить диапазон значения.
Однако структура данных, которую я хочу определить, содержит смесь 8-битных, 16-битных и 32-битных целых чисел для экономии места на встроенных устройствах. На них структура данных также реализована несколько иначе и требует зарезервированных специальных значений для некоторых полей, поэтому максимальное число для них не является степенью двойки.
На этих встроенных устройствах определение protobuf используется только для передачи к ним и от них, а не для фактического хранения. Так что я мог бы просто ограничить числа при их чтении.
Однако я бы предпочел определить эти максимальные значения в файле .proto
или .options
, чтобы убедиться, что все клиентские приложения знают об этих ограничениях.
Есть ли способ сделать это?
Я знаю, что есть параметры поля, но перечисленные здесь не содержит такой опции. Можно создавать пользовательские параметры, но для этого, похоже, потребуется написать расширение компилятора, а это значит, что мне придется вручную реализовать эту проверку ограничений для каждого языка, на который я хочу скомпилировать, а это стоит больше времени, чем когда-либо сэкономит.