Skip to content

Commit

Permalink
Fix: bmqp protocol Wconv warns (bloomberg#257)
Browse files Browse the repository at this point in the history
Signed-off-by: Melvin He <[email protected]>
Signed-off-by: Patrick M. Niedzielski <[email protected]>
  • Loading branch information
melvinhe authored and alexander-e1off committed Oct 24, 2024
1 parent f857157 commit c3d39bc
Show file tree
Hide file tree
Showing 3 changed files with 95 additions and 78 deletions.
8 changes: 4 additions & 4 deletions src/groups/bmq/bmqp/bmqp_protocol.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ bool PutHeaderFlags::fromAscii(PutHeaderFlags::Enum* out,
#define CHECKVALUE(M) \
if (bdlb::String::areEqualCaseless(toAscii(PutHeaderFlags::e_##M), \
str.data(), \
str.length())) { \
static_cast<int>(str.length()))) { \
*out = PutHeaderFlags::e_##M; \
return true; \
}
Expand Down Expand Up @@ -628,7 +628,7 @@ bool PushHeaderFlags::fromAscii(PushHeaderFlags::Enum* out,
#define CHECKVALUE(M) \
if (bdlb::String::areEqualCaseless(toAscii(PushHeaderFlags::e_##M), \
str.data(), \
str.length())) { \
static_cast<int>(str.length()))) { \
*out = PushHeaderFlags::e_##M; \
return true; \
}
Expand Down Expand Up @@ -833,7 +833,7 @@ bool StorageHeaderFlags::fromAscii(StorageHeaderFlags::Enum* out,
#define CHECKVALUE(M) \
if (bdlb::String::areEqualCaseless(toAscii(StorageHeaderFlags::e_##M), \
str.data(), \
str.length())) { \
static_cast<int>(str.length()))) { \
*out = StorageHeaderFlags::e_##M; \
return true; \
}
Expand Down Expand Up @@ -909,7 +909,7 @@ int StorageHeaderFlagUtil::fromString(bsl::ostream& errorDescription,
rc = -1;
}
else {
*out |= value;
*out |= static_cast<unsigned char>(value);
}
}

Expand Down
138 changes: 72 additions & 66 deletions src/groups/bmq/bmqp/bmqp_protocol.h
Original file line number Diff line number Diff line change
Expand Up @@ -3515,7 +3515,7 @@ inline bool MessagePropertiesInfo::isExtended() const
inline MessagePropertiesInfo::SchemaIdType
MessagePropertiesInfo::schemaId() const
{
return d_schemaWireId >> 1;
return static_cast<SchemaIdType>(d_schemaWireId >> 1);
}

inline bool
Expand Down Expand Up @@ -3565,7 +3565,7 @@ inline RdaInfo::RdaInfo(unsigned int internalRepresentation)
{
BSLS_ASSERT_SAFE(internalRepresentation <= k_MAX_INTERNAL_COUNTER_VALUE);

d_counter = internalRepresentation;
d_counter = static_cast<unsigned char>(internalRepresentation);
}

inline RdaInfo::RdaInfo(const RdaInfo& original)
Expand Down Expand Up @@ -3599,7 +3599,8 @@ inline RdaInfo& RdaInfo::setCounter(unsigned int counter)
{
BSLS_ASSERT_SAFE(counter <= k_MAX_COUNTER_VALUE);
// Drop e_UNLIMITED bit flag if set, but save e_POISONOUS bit
d_counter = counter | (d_counter & e_POISONOUS);
d_counter = static_cast<unsigned char>(counter |
(d_counter & e_POISONOUS));
return *this;
}

Expand Down Expand Up @@ -3665,7 +3666,7 @@ inline bsls::Types::Uint64 Protocol::combine(unsigned int upper,

inline unsigned int Protocol::getUpper(bsls::Types::Uint64 value)
{
return (value >> 32) & 0xFFFFFFFF;
return static_cast<unsigned int>((value >> 32) & 0xFFFFFFFF);
}

inline unsigned int Protocol::getLower(bsls::Types::Uint64 value)
Expand Down Expand Up @@ -3745,8 +3746,9 @@ inline EventHeader& EventHeader::setProtocolVersion(unsigned char value)
// PRECONDITIONS: protect against overflow
BSLS_ASSERT_SAFE(value <= (1 << k_PROTOCOL_VERSION_NUM_BITS) - 1);

d_protocolVersionAndType = (d_protocolVersionAndType & k_TYPE_MASK) |
(value << k_PROTOCOL_VERSION_START_IDX);
d_protocolVersionAndType = static_cast<unsigned char>(
(d_protocolVersionAndType & k_TYPE_MASK) |
(value << k_PROTOCOL_VERSION_START_IDX));

return *this;
}
Expand All @@ -3757,10 +3759,9 @@ inline EventHeader& EventHeader::setType(EventType::Enum value)
BSLS_ASSERT_SAFE(value >= 0 &&
static_cast<int>(value) <= (1 << k_TYPE_NUM_BITS) - 1);

d_protocolVersionAndType = (d_protocolVersionAndType &
k_PROTOCOL_VERSION_MASK) |
(static_cast<unsigned char>(value) &
k_TYPE_MASK);
d_protocolVersionAndType = static_cast<unsigned char>(
(d_protocolVersionAndType & k_PROTOCOL_VERSION_MASK) |
(static_cast<unsigned char>(value) & k_TYPE_MASK));

return *this;
}
Expand Down Expand Up @@ -3792,8 +3793,9 @@ inline int EventHeader::length() const

inline unsigned char EventHeader::protocolVersion() const
{
return (d_protocolVersionAndType & k_PROTOCOL_VERSION_MASK) >>
k_PROTOCOL_VERSION_START_IDX;
return static_cast<unsigned char>(
(d_protocolVersionAndType & k_PROTOCOL_VERSION_MASK) >>
k_PROTOCOL_VERSION_START_IDX);
}

inline EventType::Enum EventHeader::type() const
Expand Down Expand Up @@ -3827,10 +3829,11 @@ EventHeaderUtil::setControlEventEncodingType(EventHeader* eventHeader,
unsigned char typeSpecific = eventHeader->typeSpecific();

// Reset the bits for encoding type
typeSpecific &= ~k_CONTROL_EVENT_ENCODING_MASK;
typeSpecific &= static_cast<unsigned char>(~k_CONTROL_EVENT_ENCODING_MASK);

// Set those bits to represent 'type'
typeSpecific |= (type << k_CONTROL_EVENT_ENCODING_START_IDX);
typeSpecific |= static_cast<unsigned char>(
type << k_CONTROL_EVENT_ENCODING_START_IDX);

eventHeader->setTypeSpecific(typeSpecific);
}
Expand Down Expand Up @@ -3935,10 +3938,11 @@ inline MessagePropertiesHeader::MessagePropertiesHeader()
{
bsl::memset(this, 0, sizeof(MessagePropertiesHeader));
size_t headerSize = sizeof(MessagePropertiesHeader);
setHeaderSize(headerSize);
setHeaderSize(static_cast<int>(headerSize));

size_t roundedSize = headerSize + (headerSize % Protocol::k_WORD_SIZE);
setMessagePropertiesAreaWords(roundedSize / Protocol::k_WORD_SIZE);
setMessagePropertiesAreaWords(
static_cast<int>(roundedSize / Protocol::k_WORD_SIZE));

setMessagePropertyHeaderSize(sizeof(MessagePropertyHeader));
static_cast<void>(d_reserved);
Expand All @@ -3952,9 +3956,9 @@ MessagePropertiesHeader::setHeaderSize(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= ((1 << k_HEADER_SIZE_2X_NUM_BITS) - 1));

d_mphSize2xAndHeaderSize2x = (d_mphSize2xAndHeaderSize2x &
k_MPH_SIZE_2X_MASK) |
(value & k_HEADER_SIZE_2X_MASK);
d_mphSize2xAndHeaderSize2x = static_cast<char>(
(d_mphSize2xAndHeaderSize2x & k_MPH_SIZE_2X_MASK) |
(value & k_HEADER_SIZE_2X_MASK));
return *this;
}

Expand All @@ -3965,9 +3969,9 @@ MessagePropertiesHeader::setMessagePropertyHeaderSize(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= ((1 << k_MPH_SIZE_2X_NUM_BITS) - 1));

d_mphSize2xAndHeaderSize2x = (d_mphSize2xAndHeaderSize2x &
k_HEADER_SIZE_2X_MASK) |
(value << k_MPH_SIZE_2X_START_IDX);
d_mphSize2xAndHeaderSize2x = static_cast<unsigned char>(
(d_mphSize2xAndHeaderSize2x & k_HEADER_SIZE_2X_MASK) |
(value << k_MPH_SIZE_2X_START_IDX));
return *this;
}

Expand All @@ -3979,9 +3983,8 @@ MessagePropertiesHeader::setMessagePropertiesAreaWords(int value)
value <= ((1 << k_MSG_PROPS_AREA_WORDS_NUM_BITS) - 1));

d_msgPropsAreaWordsLower = static_cast<unsigned short>(value & 0xFFFF);
d_msgPropsAreaWordsUpper = (value >>
k_MSG_PROPS_AREA_WORDS_LOWER_NUM_BITS) &
0xFF;
d_msgPropsAreaWordsUpper = static_cast<unsigned char>(
(value >> k_MSG_PROPS_AREA_WORDS_LOWER_NUM_BITS) & 0xFF);

return *this;
}
Expand All @@ -3992,7 +3995,7 @@ MessagePropertiesHeader::setNumProperties(int value)
// PRECONDITIONS
BSLS_ASSERT_SAFE(value >= 0 && value <= k_MAX_NUM_PROPERTIES);

d_numProperties = value;
d_numProperties = static_cast<unsigned char>(value);
return *this;
}

Expand Down Expand Up @@ -4039,9 +4042,9 @@ inline MessagePropertyHeader& MessagePropertyHeader::setPropertyType(int value)
// PRECONDITIONS
BSLS_ASSERT_SAFE(value >= 0 && value <= ((1 << k_PROP_TYPE_NUM_BITS) - 1));

d_propTypeAndPropValueLenUpper = (d_propTypeAndPropValueLenUpper &
k_PROP_VALUE_LEN_UPPER_MASK) |
(value << k_PROP_TYPE_START_IDX);
d_propTypeAndPropValueLenUpper = static_cast<unsigned short>(
(d_propTypeAndPropValueLenUpper & k_PROP_VALUE_LEN_UPPER_MASK) |
(static_cast<unsigned short>(value) << k_PROP_TYPE_START_IDX));

return *this;
}
Expand All @@ -4054,10 +4057,11 @@ MessagePropertyHeader::setPropertyValueLength(int value)

d_propValueLenLower = static_cast<unsigned short>(value & 0xFFFF);

d_propTypeAndPropValueLenUpper =
d_propTypeAndPropValueLenUpper = static_cast<unsigned short>(
(d_propTypeAndPropValueLenUpper & k_PROP_TYPE_MASK) |
((value >> k_PROP_VALUE_LEN_LOWER_NUM_BITS) &
k_PROP_VALUE_LEN_UPPER_MASK);
(static_cast<unsigned short>(value >>
k_PROP_VALUE_LEN_LOWER_NUM_BITS) &
k_PROP_VALUE_LEN_UPPER_MASK));

return *this;
}
Expand All @@ -4068,7 +4072,8 @@ MessagePropertyHeader::setPropertyNameLength(int value)
// PRECONDITIONS
BSLS_ASSERT_SAFE(value >= 0 && value <= k_MAX_PROPERTY_NAME_LENGTH);

d_reservedAndPropNameLen = value & k_PROP_NAME_LEN_MASK;
d_reservedAndPropNameLen = static_cast<unsigned short>(
value & k_PROP_NAME_LEN_MASK);

return *this;
}
Expand Down Expand Up @@ -4127,12 +4132,13 @@ inline SchemaWireId::SchemaWireId()
// PUBLIC MODIFIERS
inline void SchemaWireId::set(unsigned value)
{
d_value = value;
// Include precondition check or adjust function signature?
d_value = static_cast<short unsigned int>(value);
}

inline unsigned SchemaWireId::value() const
{
return d_value;
return static_cast<short unsigned int>(d_value);
}

// ---------------
Expand Down Expand Up @@ -4341,9 +4347,9 @@ inline AckHeader& AckHeader::setHeaderWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_HEADER_WORDS_NUM_BITS) - 1);

d_headerWordsAndPerMsgWords = (d_headerWordsAndPerMsgWords &
k_PER_MSG_WORDS_MASK) |
(value << k_HEADER_WORDS_START_IDX);
d_headerWordsAndPerMsgWords = static_cast<unsigned char>(
(d_headerWordsAndPerMsgWords & k_PER_MSG_WORDS_MASK) |
(value << k_HEADER_WORDS_START_IDX));
return *this;
}

Expand All @@ -4353,9 +4359,9 @@ inline AckHeader& AckHeader::setPerMessageWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_PER_MSG_WORDS_NUM_BITS) - 1);

d_headerWordsAndPerMsgWords = (d_headerWordsAndPerMsgWords &
k_HEADER_WORDS_MASK) |
(value & k_PER_MSG_WORDS_MASK);
d_headerWordsAndPerMsgWords = static_cast<unsigned char>(
(d_headerWordsAndPerMsgWords & k_HEADER_WORDS_MASK) |
(value & k_PER_MSG_WORDS_MASK));
return *this;
}

Expand Down Expand Up @@ -4647,9 +4653,9 @@ inline ConfirmHeader& ConfirmHeader::setHeaderWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_HEADER_WORDS_NUM_BITS) - 1);

d_headerWordsAndPerMsgWords = (d_headerWordsAndPerMsgWords &
k_PER_MSG_WORDS_MASK) |
(value << k_HEADER_WORDS_START_IDX);
d_headerWordsAndPerMsgWords = static_cast<unsigned char>(
(d_headerWordsAndPerMsgWords & k_PER_MSG_WORDS_MASK) |
(value << k_HEADER_WORDS_START_IDX));
return *this;
}

Expand All @@ -4659,9 +4665,9 @@ inline ConfirmHeader& ConfirmHeader::setPerMessageWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_PER_MSG_WORDS_NUM_BITS) - 1);

d_headerWordsAndPerMsgWords = (d_headerWordsAndPerMsgWords &
k_HEADER_WORDS_MASK) |
(value & k_PER_MSG_WORDS_MASK);
d_headerWordsAndPerMsgWords = static_cast<unsigned char>(
(d_headerWordsAndPerMsgWords & k_HEADER_WORDS_MASK) |
(value & k_PER_MSG_WORDS_MASK));
return *this;
}

Expand Down Expand Up @@ -4742,9 +4748,9 @@ inline RejectHeader& RejectHeader::setHeaderWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_HEADER_WORDS_NUM_BITS) - 1);

d_headerWordsAndPerMsgWords = (d_headerWordsAndPerMsgWords &
k_PER_MSG_WORDS_MASK) |
(value << k_HEADER_WORDS_START_IDX);
d_headerWordsAndPerMsgWords = static_cast<unsigned char>(
(d_headerWordsAndPerMsgWords & k_PER_MSG_WORDS_MASK) |
(value << k_HEADER_WORDS_START_IDX));
return *this;
}

Expand All @@ -4754,9 +4760,9 @@ inline RejectHeader& RejectHeader::setPerMessageWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_PER_MSG_WORDS_NUM_BITS) - 1);

d_headerWordsAndPerMsgWords = (d_headerWordsAndPerMsgWords &
k_HEADER_WORDS_MASK) |
(value & k_PER_MSG_WORDS_MASK);
d_headerWordsAndPerMsgWords = static_cast<unsigned char>(
(d_headerWordsAndPerMsgWords & k_HEADER_WORDS_MASK) |
(value & k_PER_MSG_WORDS_MASK));
return *this;
}

Expand Down Expand Up @@ -4907,9 +4913,9 @@ inline StorageHeader& StorageHeader::setStorageProtocolVersion(int value)
// PRECONDITIONS: protect against overflow
BSLS_ASSERT_SAFE(value >= 0 && value <= (1 << k_SPV_NUM_BITS) - 1);

d_reservedAndSpvAndHeaderWords = (d_reservedAndSpvAndHeaderWords &
k_HEADER_WORDS_MASK) |
(value << k_SPV_START_IDX);
d_reservedAndSpvAndHeaderWords = static_cast<unsigned char>(
(d_reservedAndSpvAndHeaderWords & k_HEADER_WORDS_MASK) |
(value << k_SPV_START_IDX));
return *this;
}

Expand All @@ -4918,9 +4924,9 @@ inline StorageHeader& StorageHeader::setHeaderWords(unsigned int value)
// PRECONDITIONS: protect against overflow
BSLS_ASSERT_SAFE(value <= (1 << k_HEADER_WORDS_NUM_BITS) - 1);

d_reservedAndSpvAndHeaderWords = (d_reservedAndSpvAndHeaderWords &
k_SPV_MASK) |
(value & k_HEADER_WORDS_MASK);
d_reservedAndSpvAndHeaderWords = static_cast<unsigned char>(
(d_reservedAndSpvAndHeaderWords & k_SPV_MASK) |
(value & k_HEADER_WORDS_MASK));
return *this;
}

Expand Down Expand Up @@ -5041,25 +5047,25 @@ inline RecoveryHeader& RecoveryHeader::setHeaderWords(int value)
BSLS_ASSERT_SAFE(value >= 0 &&
value <= (1 << k_HEADER_WORDS_NUM_BITS) - 1);

d_headerWordsAndFileChunkType = (d_headerWordsAndFileChunkType &
k_FILE_CHUNK_TYPE_MASK) |
(value << k_HEADER_WORDS_START_IDX);
d_headerWordsAndFileChunkType = static_cast<unsigned char>(
(d_headerWordsAndFileChunkType & k_FILE_CHUNK_TYPE_MASK) |
(value << k_HEADER_WORDS_START_IDX));

return *this;
}

inline RecoveryHeader&
RecoveryHeader::setFileChunkType(RecoveryFileChunkType::Enum value)
{
d_headerWordsAndFileChunkType = (d_headerWordsAndFileChunkType &
k_HEADER_WORDS_MASK) |
(value & k_FILE_CHUNK_TYPE_MASK);
d_headerWordsAndFileChunkType = static_cast<unsigned char>(
(d_headerWordsAndFileChunkType & k_HEADER_WORDS_MASK) |
(value & k_FILE_CHUNK_TYPE_MASK));
return *this;
}

inline RecoveryHeader& RecoveryHeader::setPartitionId(unsigned int value)
{
d_partitionId = value;
d_partitionId = static_cast<short unsigned int>(value);
return *this;
}

Expand Down
Loading

0 comments on commit c3d39bc

Please sign in to comment.