blob: a93caf9b2ba9e4091e6c477f001276cd13f6ab07 [file] [log] [blame] [edit]
goog.module('jspb.BinaryConstants');
goog.module.declareLegacyNamespace();
/**
* Field type codes, taken from proto2/public/wire_format_lite.h.
* @enum {number}
* @package
*/
const FieldType = {
INVALID: -1,
DOUBLE: 1,
FLOAT: 2,
INT64: 3,
UINT64: 4,
INT32: 5,
FIXED64: 6,
FIXED32: 7,
BOOL: 8,
STRING: 9,
GROUP: 10,
MESSAGE: 11,
BYTES: 12,
UINT32: 13,
ENUM: 14,
SFIXED32: 15,
SFIXED64: 16,
SINT32: 17,
SINT64: 18,
};
/**
* Wire-format type codes, taken from proto2/public/wire_format_lite.h.
* @enum {number}
*/
const WireType = {
INVALID: -1,
VARINT: 0,
FIXED64: 1,
DELIMITED: 2,
START_GROUP: 3,
END_GROUP: 4,
FIXED32: 5
};
/** @return {boolean} */
function isValidWireType(/** number */ wireType) {
return wireType >= 0 && wireType <= 5;
}
/**
* Translates field type to wire type.
* @param {!FieldType} fieldType
* @return {!WireType}
*/
function FieldTypeToWireType(fieldType) {
switch (fieldType) {
case FieldType.INT32:
case FieldType.INT64:
case FieldType.UINT32:
case FieldType.UINT64:
case FieldType.SINT32:
case FieldType.SINT64:
case FieldType.BOOL:
case FieldType.ENUM:
return WireType.VARINT;
case FieldType.DOUBLE:
case FieldType.FIXED64:
case FieldType.SFIXED64:
return WireType.FIXED64;
case FieldType.STRING:
case FieldType.MESSAGE:
case FieldType.BYTES:
return WireType.DELIMITED;
case FieldType.FLOAT:
case FieldType.FIXED32:
case FieldType.SFIXED32:
return WireType.FIXED32;
case FieldType.INVALID:
case FieldType.GROUP:
default:
return WireType.INVALID;
}
}
/**
* Flag to indicate a missing field.
* @const {number}
*/
const INVALID_FIELD_NUMBER = -1;
/**
* Flag to indicate a missing tag.
* @const {number}
*/
const INVALID_TAG = -1;
/**
* The smallest denormal float32 value.
* @const {number}
*/
const FLOAT32_EPS = 1.401298464324817e-45;
/**
* The smallest normal float64 value.
* @const {number}
*/
const FLOAT32_MIN = 1.1754943508222875e-38;
/**
* The largest finite float32 value.
* @const {number}
*/
const FLOAT32_MAX = 3.4028234663852886e+38;
/**
* The smallest denormal float64 value.
* @const {number}
*/
const FLOAT64_EPS = 5e-324;
/**
* The smallest normal float64 value.
* @const {number}
*/
const FLOAT64_MIN = 2.2250738585072014e-308;
/**
* The largest finite float64 value.
* @const {number}
*/
const FLOAT64_MAX = 1.7976931348623157e+308;
/**
* Convenience constant equal to 2^20.
* @const {number}
*/
const TWO_TO_20 = 1048576;
/**
* Convenience constant equal to 2^23.
* @const {number}
*/
const TWO_TO_23 = 8388608;
/**
* Convenience constant equal to 2^31.
* @const {number}
*/
const TWO_TO_31 = 2147483648;
/**
* Convenience constant equal to 2^32.
* @const {number}
*/
const TWO_TO_32 = 4294967296;
/**
* Convenience constant equal to 2^52.
* @const {number}
*/
const TWO_TO_52 = 4503599627370496;
/**
* Convenience constant equal to 2^63.
* @const {number}
*/
const TWO_TO_63 = 9223372036854775808;
/**
* Convenience constant equal to 2^64.
* @const {number}
*/
const TWO_TO_64 = 18446744073709551616;
/**
* Eight-character string of zeros, used as the default 64-bit hash value.
* @const {string}
*/
const ZERO_HASH = '\0\0\0\0\0\0\0\0';
// See MessageSet wire format: https://github.com/protocolbuffers/protobuf/blob/735621f7d720fcacc0a05114f407c3817411f296/src/google/protobuf/descriptor.proto#L600
// message MessageSet {
// repeated group Item = 1 {
// required uint32 type_id = 2;
// required bytes message = 3;
// };
// };
const /** number */ MESSAGE_SET_GROUP_NUMBER = 1;
const /** number */ MESSAGE_SET_TYPE_ID_FIELD_NUMBER = 2;
const /** number */ MESSAGE_SET_MESSAGE_FIELD_NUMBER = 3;
const /** number */ MESSAGE_SET_MAX_TYPE_ID = 0xFFFFFFFE;
exports = {
FieldType,
FieldTypeToWireType,
FLOAT32_EPS,
FLOAT32_MIN,
FLOAT32_MAX,
FLOAT64_EPS,
FLOAT64_MIN,
FLOAT64_MAX,
INVALID_FIELD_NUMBER,
INVALID_TAG,
MESSAGE_SET_GROUP_NUMBER,
MESSAGE_SET_MAX_TYPE_ID,
MESSAGE_SET_MESSAGE_FIELD_NUMBER,
MESSAGE_SET_TYPE_ID_FIELD_NUMBER,
TWO_TO_20,
TWO_TO_23,
TWO_TO_31,
TWO_TO_32,
TWO_TO_52,
TWO_TO_63,
TWO_TO_64,
WireType,
ZERO_HASH,
isValidWireType,
};