#import "GPBWireFormat.h"
#import "GPBUtilities_PackagePrivate.h"
enum {
GPBWireFormatTagTypeBits = 3,
GPBWireFormatTagTypeMask = 7 ,
};
uint32_t GPBWireFormatMakeTag(uint32_t fieldNumber, GPBWireFormat wireType) {
return (fieldNumber << GPBWireFormatTagTypeBits) | wireType;
}
GPBWireFormat GPBWireFormatGetTagWireType(uint32_t tag) {
return (GPBWireFormat)(tag & GPBWireFormatTagTypeMask);
}
uint32_t GPBWireFormatGetTagFieldNumber(uint32_t tag) {
return GPBLogicalRightShift32(tag, GPBWireFormatTagTypeBits);
}
BOOL GPBWireFormatIsValidTag(uint32_t tag) {
uint32_t formatBits = (tag & GPBWireFormatTagTypeMask);
BOOL result = (formatBits <= 5);
return result;
}
GPBWireFormat GPBWireFormatForType(GPBDataType type, BOOL isPacked) {
if (isPacked) {
return GPBWireFormatLengthDelimited;
}
static const GPBWireFormat format[GPBDataType_Count] = {
GPBWireFormatVarint, GPBWireFormatFixed32, GPBWireFormatFixed32, GPBWireFormatFixed32, GPBWireFormatFixed64, GPBWireFormatFixed64, GPBWireFormatFixed64, GPBWireFormatVarint, GPBWireFormatVarint, GPBWireFormatVarint, GPBWireFormatVarint, GPBWireFormatVarint, GPBWireFormatVarint, GPBWireFormatLengthDelimited, GPBWireFormatLengthDelimited, GPBWireFormatLengthDelimited, GPBWireFormatStartGroup, GPBWireFormatVarint };
return format[type];
}