Merge pull request #400 from CopernicaMarketingSoftware/fix/make-shared

Prefer make_shared over calling std::shared_ptr constructor
This commit is contained in:
Emiel Bruijntjes 2021-07-01 12:53:03 +02:00 committed by GitHub
commit 7532f5769d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 28 additions and 28 deletions

View File

@ -40,9 +40,9 @@ protected:
* Decode a field by fetching a type and full field from a frame * Decode a field by fetching a type and full field from a frame
* The returned field is allocated on the heap! * The returned field is allocated on the heap!
* @param frame * @param frame
* @return Field* * @return std::shared_ptr<Field>
*/ */
static Field *decode(InBuffer &frame); static std::shared_ptr<Field> decode(InBuffer &frame);
public: public:
/** /**

View File

@ -25,14 +25,14 @@ Array::Array(InBuffer &frame)
charsToRead -= 1; charsToRead -= 1;
// read the field type and construct the field // read the field type and construct the field
Field *field = Field::decode(frame); auto field = Field::decode(frame);
if (!field) continue; if (!field) continue;
// less bytes to read // less bytes to read
charsToRead -= (uint32_t)field->size(); charsToRead -= (uint32_t)field->size();
// add the additional field // add the additional field
_fields.push_back(std::shared_ptr<Field>(field)); _fields.push_back(std::move(field));
} }
} }
@ -46,7 +46,7 @@ Array::Array(const Array &array)
for (auto iter = array._fields.begin(); iter != array._fields.end(); iter++) for (auto iter = array._fields.begin(); iter != array._fields.end(); iter++)
{ {
// add to this vector // add to this vector
_fields.push_back(std::shared_ptr<Field>((*iter)->clone())); _fields.push_back((*iter)->clone());
} }
} }
@ -93,7 +93,7 @@ void Array::pop_back()
*/ */
void Array::push_back(const Field& value) void Array::push_back(const Field& value)
{ {
_fields.push_back(std::shared_ptr<Field>(value.clone())); _fields.push_back(value.clone());
} }
/** /**

View File

@ -14,9 +14,9 @@ namespace AMQP {
* Decode a field by fetching a type and full field from a frame * Decode a field by fetching a type and full field from a frame
* The returned field is allocated on the heap! * The returned field is allocated on the heap!
* @param frame * @param frame
* @return Field* * @return std::shared_ptr<Field>
*/ */
Field *Field::decode(InBuffer &frame) std::shared_ptr<Field> Field::decode(InBuffer &frame)
{ {
// get the type // get the type
uint8_t type = frame.nextUint8(); uint8_t type = frame.nextUint8();
@ -24,24 +24,24 @@ Field *Field::decode(InBuffer &frame)
// create field based on type // create field based on type
switch (type) switch (type)
{ {
case 't': return new BooleanSet(frame); case 't': return std::make_shared<BooleanSet>(frame);
case 'b': return new Octet(frame); case 'b': return std::make_shared<Octet>(frame);
case 'B': return new UOctet(frame); case 'B': return std::make_shared<UOctet>(frame);
case 'U': return new Short(frame); case 'U': return std::make_shared<Short>(frame);
case 'u': return new UShort(frame); case 'u': return std::make_shared<UShort>(frame);
case 'I': return new Long(frame); case 'I': return std::make_shared<Long>(frame);
case 'i': return new ULong(frame); case 'i': return std::make_shared<ULong>(frame);
case 'L': return new LongLong(frame); case 'L': return std::make_shared<LongLong>(frame);
case 'l': return new ULongLong(frame); case 'l': return std::make_shared<ULongLong>(frame);
case 'f': return new Float(frame); case 'f': return std::make_shared<Float>(frame);
case 'd': return new Double(frame); case 'd': return std::make_shared<Double>(frame);
case 'D': return new DecimalField(frame); case 'D': return std::make_shared<DecimalField>(frame);
case 's': return new ShortString(frame); case 's': return std::make_shared<ShortString>(frame);
case 'S': return new LongString(frame); case 'S': return std::make_shared<LongString>(frame);
case 'A': return new Array(frame); case 'A': return std::make_shared<Array>(frame);
case 'T': return new Timestamp(frame); case 'T': return std::make_shared<Timestamp>(frame);
case 'F': return new Table(frame); case 'F': return std::make_shared<Table>(frame);
case 'V': return new VoidField(frame); case 'V': return std::make_shared<VoidField>(frame);
default: return nullptr; default: return nullptr;
} }
} }

View File

@ -24,11 +24,11 @@ Table::Table(InBuffer &frame)
bytesToRead -= (uint32_t)(name.size() + 1); bytesToRead -= (uint32_t)(name.size() + 1);
// get the field // get the field
Field *field = Field::decode(frame); auto field = Field::decode(frame);
if (!field) continue; if (!field) continue;
// add field // add field
_fields[name] = std::shared_ptr<Field>(field); _fields[name] = std::move(field);
// subtract size // subtract size
bytesToRead -= (uint32_t)field->size(); bytesToRead -= (uint32_t)field->size();