From c474c687512c5100c3a7aafdc72d813544904020 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Wed, 30 Jun 2021 16:58:50 +0000 Subject: Allow presizing of arrays in slime. --- vespalib/src/vespa/vespalib/data/slime/array_value.cpp | 12 ++++++++++-- vespalib/src/vespa/vespalib/data/slime/array_value.h | 7 ++++--- vespalib/src/vespa/vespalib/data/slime/cursor.h | 16 +++++++++++++--- .../vespa/vespalib/data/slime/empty_value_factory.cpp | 4 +++- .../src/vespa/vespalib/data/slime/empty_value_factory.h | 3 ++- vespalib/src/vespa/vespalib/data/slime/inserter.cpp | 8 ++++---- vespalib/src/vespa/vespalib/data/slime/inserter.h | 16 ++++++++++------ vespalib/src/vespa/vespalib/data/slime/object_value.cpp | 8 ++++---- vespalib/src/vespa/vespalib/data/slime/object_value.h | 4 ++-- vespalib/src/vespa/vespalib/data/slime/slime.h | 5 ++++- vespalib/src/vespa/vespalib/data/slime/value.cpp | 6 +++--- vespalib/src/vespa/vespalib/data/slime/value.h | 8 ++++---- 12 files changed, 63 insertions(+), 34 deletions(-) (limited to 'vespalib') diff --git a/vespalib/src/vespa/vespalib/data/slime/array_value.cpp b/vespalib/src/vespa/vespalib/data/slime/array_value.cpp index edcc5a8eb85..e34c352b4fd 100644 --- a/vespalib/src/vespa/vespalib/data/slime/array_value.cpp +++ b/vespalib/src/vespa/vespalib/data/slime/array_value.cpp @@ -7,6 +7,14 @@ namespace vespalib::slime { +ArrayValue::ArrayValue(SymbolTable &table, Stash & stash) + : _symbolTable(table), + _stash(stash), + _values() +{} + +ArrayValue::~ArrayValue() = default; + void ArrayValue::traverse(ArrayTraverser &at) const { for (size_t i = 0; i < _values.size(); ++i) { @@ -16,8 +24,8 @@ ArrayValue::traverse(ArrayTraverser &at) const { Cursor & -ArrayValue::addArray() { - return addLeaf(ArrayValueFactory(_symbolTable)); +ArrayValue::addArray(size_t reserve) { + return addLeaf(ArrayValueFactory(_symbolTable, reserve)); } Cursor & diff --git a/vespalib/src/vespa/vespalib/data/slime/array_value.h b/vespalib/src/vespa/vespalib/data/slime/array_value.h index 19f93c3eeec..02bd730275b 100644 --- a/vespalib/src/vespa/vespalib/data/slime/array_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/array_value.h @@ -28,7 +28,7 @@ protected: } public: - ArrayValue(SymbolTable &table, Stash & stash) : _symbolTable(table), _stash(stash), _values() {} + ArrayValue(SymbolTable &table, Stash & stash); ArrayValue(const ArrayValue &) = delete; ArrayValue &operator=(const ArrayValue &) = delete; @@ -36,6 +36,7 @@ public: size_t children() const override { return _values.size(); } size_t entries() const override { return _values.size(); } void traverse(ArrayTraverser &at) const override; + void reserve(size_t sz) { _values.reserve(sz); } Cursor &operator[](size_t idx) const override { if (idx < _values.size()) { @@ -44,11 +45,11 @@ public: return *NixValue::invalid(); } - Cursor &addArray() override; + Cursor &addArray(size_t reserve) override; Cursor &addObject() override; Symbol resolve(Memory symbol_name) override; - ~ArrayValue() override = default; + ~ArrayValue() override; }; } // namespace vespalib::slime diff --git a/vespalib/src/vespa/vespalib/data/slime/cursor.h b/vespalib/src/vespa/vespalib/data/slime/cursor.h index 34d7028a027..6f926de85b6 100644 --- a/vespalib/src/vespa/vespalib/data/slime/cursor.h +++ b/vespalib/src/vespa/vespalib/data/slime/cursor.h @@ -19,7 +19,7 @@ struct Cursor : public Inspector { virtual Cursor &addString(Memory str) = 0; virtual Cursor &addData(Memory data) = 0; virtual Cursor &addData(ExternalMemory::UP data) = 0; - virtual Cursor &addArray() = 0; + virtual Cursor &addArray(size_t reserved_size) = 0; virtual Cursor &addObject() = 0; virtual Cursor &setNix(Symbol sym) = 0; @@ -29,7 +29,7 @@ struct Cursor : public Inspector { virtual Cursor &setString(Symbol sym, Memory str) = 0; virtual Cursor &setData(Symbol sym, Memory data) = 0; virtual Cursor &setData(Symbol sym, ExternalMemory::UP data) = 0; - virtual Cursor &setArray(Symbol sym) = 0; + virtual Cursor &setArray(Symbol sym, size_t reserved_size) = 0; virtual Cursor &setObject(Symbol sym) = 0; virtual Cursor &setNix(Memory name) = 0; @@ -39,10 +39,20 @@ struct Cursor : public Inspector { virtual Cursor &setString(Memory name, Memory str) = 0; virtual Cursor &setData(Memory name, Memory data) = 0; virtual Cursor &setData(Memory name, ExternalMemory::UP data) = 0; - virtual Cursor &setArray(Memory name) = 0; + virtual Cursor &setArray(Memory name, size_t reserved_size) = 0; virtual Cursor &setObject(Memory name) = 0; virtual Symbol resolve(Memory symbol_name) = 0; + + Cursor &addArray() { + return addArray(0); + } + Cursor &setArray(Memory name) { + return setArray(name, 0); + } + Cursor &setArray(Symbol sym) { + return setArray(sym, 0); + } }; } diff --git a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp index 95be18f57ae..f6573ad26c4 100644 --- a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp +++ b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.cpp @@ -9,7 +9,9 @@ namespace vespalib::slime { Value * ArrayValueFactory::create(Stash & stash) const { - return & stash.create(symbolTable, stash); + ArrayValue & arr = stash.create(symbolTable, stash); + arr.reserve(_reserve); + return &arr; } Value * diff --git a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h index 4046a838ef3..ab50aad0709 100644 --- a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h +++ b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h @@ -13,7 +13,8 @@ struct NixValueFactory : public ValueFactory { struct ArrayValueFactory : public ValueFactory { SymbolTable &symbolTable; - ArrayValueFactory(SymbolTable &table) : symbolTable(table) {} + size_t _reserve; + ArrayValueFactory(SymbolTable &table, size_t reserve) : symbolTable(table), _reserve(reserve) {} Value *create(Stash & stash) const override; }; diff --git a/vespalib/src/vespa/vespalib/data/slime/inserter.cpp b/vespalib/src/vespa/vespalib/data/slime/inserter.cpp index 0042319d8a1..7e64800eefc 100644 --- a/vespalib/src/vespa/vespalib/data/slime/inserter.cpp +++ b/vespalib/src/vespa/vespalib/data/slime/inserter.cpp @@ -14,7 +14,7 @@ Cursor &SlimeInserter::insertDouble(double value) const { return slime.setDouble Cursor &SlimeInserter::insertString(Memory value) const { return slime.setString(value); } Cursor &SlimeInserter::insertData(Memory value) const { return slime.setData(value); } Cursor &SlimeInserter::insertData(ExtMemUP value) const { return slime.setData(std::move(value)); } -Cursor &SlimeInserter::insertArray() const { return slime.setArray(); } +Cursor &SlimeInserter::insertArray(size_t resv) const { return slime.setArray(resv); } Cursor &SlimeInserter::insertObject() const { return slime.setObject(); } Cursor &ArrayInserter::insertNix() const { return cursor.addNix(); } @@ -24,7 +24,7 @@ Cursor &ArrayInserter::insertDouble(double value) const { return cursor.addDoubl Cursor &ArrayInserter::insertString(Memory value) const { return cursor.addString(value); } Cursor &ArrayInserter::insertData(Memory value) const { return cursor.addData(value); } Cursor &ArrayInserter::insertData(ExtMemUP value) const { return cursor.addData(std::move(value)); } -Cursor &ArrayInserter::insertArray() const { return cursor.addArray(); } +Cursor &ArrayInserter::insertArray(size_t resv) const { return cursor.addArray(resv); } Cursor &ArrayInserter::insertObject() const { return cursor.addObject(); } Cursor &ObjectSymbolInserter::insertNix() const { return cursor.setNix(symbol); } @@ -34,7 +34,7 @@ Cursor &ObjectSymbolInserter::insertDouble(double value) const { return cursor.s Cursor &ObjectSymbolInserter::insertString(Memory value) const { return cursor.setString(symbol, value); } Cursor &ObjectSymbolInserter::insertData(Memory value) const { return cursor.setData(symbol, value); } Cursor &ObjectSymbolInserter::insertData(ExtMemUP value) const { return cursor.setData(symbol, std::move(value)); } -Cursor &ObjectSymbolInserter::insertArray() const { return cursor.setArray(symbol); } +Cursor &ObjectSymbolInserter::insertArray(size_t resv) const { return cursor.setArray(symbol, resv); } Cursor &ObjectSymbolInserter::insertObject() const { return cursor.setObject(symbol); } Cursor &ObjectInserter::insertNix() const { return cursor.setNix(name); } @@ -44,7 +44,7 @@ Cursor &ObjectInserter::insertDouble(double value) const { return cursor.setDoub Cursor &ObjectInserter::insertString(Memory value) const { return cursor.setString(name, value); } Cursor &ObjectInserter::insertData(Memory value) const { return cursor.setData(name, value); } Cursor &ObjectInserter::insertData(ExtMemUP value) const { return cursor.setData(name, std::move(value)); } -Cursor &ObjectInserter::insertArray() const { return cursor.setArray(name); } +Cursor &ObjectInserter::insertArray(size_t resv) const { return cursor.setArray(name, resv); } Cursor &ObjectInserter::insertObject() const { return cursor.setObject(name); } } // namespace vespalib::slime diff --git a/vespalib/src/vespa/vespalib/data/slime/inserter.h b/vespalib/src/vespa/vespalib/data/slime/inserter.h index 8206e67a79a..deddb5671c3 100644 --- a/vespalib/src/vespa/vespalib/data/slime/inserter.h +++ b/vespalib/src/vespa/vespalib/data/slime/inserter.h @@ -27,9 +27,13 @@ struct Inserter { virtual Cursor &insertString(Memory value) const = 0; virtual Cursor &insertData(Memory value) const = 0; virtual Cursor &insertData(ExternalMemory::UP value) const = 0; - virtual Cursor &insertArray() const = 0; + virtual Cursor &insertArray(size_t reserved) const = 0; virtual Cursor &insertObject() const = 0; - virtual ~Inserter() {} + virtual ~Inserter() = default; + + Cursor &insertArray() const { + return insertArray(0); + } }; //----------------------------------------------------------------------------- @@ -45,7 +49,7 @@ struct SlimeInserter : Inserter { Cursor &insertString(Memory value) const override; Cursor &insertData(Memory value) const override; Cursor &insertData(ExternalMemory::UP value) const override; - Cursor &insertArray() const override; + Cursor &insertArray(size_t reserved) const override; Cursor &insertObject() const override; }; @@ -60,7 +64,7 @@ struct ArrayInserter : Inserter { Cursor &insertString(Memory value) const override; Cursor &insertData(Memory value) const override; Cursor &insertData(ExternalMemory::UP value) const override; - Cursor &insertArray() const override; + Cursor &insertArray(size_t reserved) const override; Cursor &insertObject() const override; }; @@ -76,7 +80,7 @@ struct ObjectSymbolInserter : Inserter { Cursor &insertString(Memory value) const override; Cursor &insertData(Memory value) const override; Cursor &insertData(ExternalMemory::UP value) const override; - Cursor &insertArray() const override; + Cursor &insertArray(size_t reserved) const override; Cursor &insertObject() const override; }; @@ -92,7 +96,7 @@ struct ObjectInserter : Inserter { Cursor &insertString(Memory value) const override; Cursor &insertData(Memory value) const override; Cursor &insertData(ExternalMemory::UP value) const override; - Cursor &insertArray() const override; + Cursor &insertArray(size_t reserved) const override; Cursor &insertObject() const override; }; diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.cpp b/vespalib/src/vespa/vespalib/data/slime/object_value.cpp index f3436ac0978..094869f36ad 100644 --- a/vespalib/src/vespa/vespalib/data/slime/object_value.cpp +++ b/vespalib/src/vespa/vespalib/data/slime/object_value.cpp @@ -53,8 +53,8 @@ ObjectValue::operator[](Memory name) const { Cursor & -ObjectValue::setArray(Symbol symbol) { - return setLeaf(symbol, ArrayValueFactory(_symbolTable)); +ObjectValue::setArray(Symbol symbol, size_t reserve) { + return setLeaf(symbol, ArrayValueFactory(_symbolTable, reserve)); } Cursor & @@ -63,8 +63,8 @@ ObjectValue::setObject(Symbol symbol) { } Cursor & -ObjectValue::setArray(Memory name) { - return setLeaf(name, ArrayValueFactory(_symbolTable)); +ObjectValue::setArray(Memory name, size_t reserve) { + return setLeaf(name, ArrayValueFactory(_symbolTable, reserve)); } Cursor & diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.h b/vespalib/src/vespa/vespalib/data/slime/object_value.h index 7f8a809a482..159a1431d29 100644 --- a/vespalib/src/vespa/vespalib/data/slime/object_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/object_value.h @@ -72,10 +72,10 @@ public: Cursor &operator[](Symbol sym) const override; Cursor &operator[](Memory name) const override; - Cursor &setArray(Symbol sym) override; + Cursor &setArray(Symbol sym, size_t reserve) override; Cursor &setObject(Symbol sym) override; - Cursor &setArray(Memory name) override; + Cursor &setArray(Memory name, size_t reserve) override; Cursor &setObject(Memory name) override; Symbol resolve(Memory symbol_name) override; diff --git a/vespalib/src/vespa/vespalib/data/slime/slime.h b/vespalib/src/vespa/vespalib/data/slime/slime.h index 9959d8e7fc8..ee3222b2e8d 100644 --- a/vespalib/src/vespa/vespalib/data/slime/slime.h +++ b/vespalib/src/vespa/vespalib/data/slime/slime.h @@ -155,7 +155,10 @@ public: return _root.set(slime::ExternalDataValueFactory(std::move(data))); } Cursor &setArray() { - return _root.set(slime::ArrayValueFactory(*_names)); + return setArray(0); + } + Cursor &setArray(size_t reserve) { + return _root.set(slime::ArrayValueFactory(*_names, reserve)); } Cursor &setObject() { return _root.set(slime::ObjectValueFactory(*_names)); diff --git a/vespalib/src/vespa/vespalib/data/slime/value.cpp b/vespalib/src/vespa/vespalib/data/slime/value.cpp index 300eeba47e5..f7c37d73652 100644 --- a/vespalib/src/vespa/vespalib/data/slime/value.cpp +++ b/vespalib/src/vespa/vespalib/data/slime/value.cpp @@ -130,16 +130,16 @@ Value::setData(Memory name, ExternalMemory::UP data) { return setLeaf(name, Exte // nop defaults for array/objects Cursor & -Value::addArray() { return *NixValue::invalid(); } +Value::addArray(size_t) { return *NixValue::invalid(); } Cursor & Value::addObject() { return *NixValue::invalid(); } Cursor & -Value::setArray(Symbol) { return *NixValue::invalid(); } +Value::setArray(Symbol, size_t) { return *NixValue::invalid(); } Cursor & Value::setObject(Symbol) { return *NixValue::invalid(); } Cursor & -Value::setArray(Memory) { return *NixValue::invalid(); } +Value::setArray(Memory, size_t) { return *NixValue::invalid(); } Cursor & Value::setObject(Memory) { return *NixValue::invalid(); } diff --git a/vespalib/src/vespa/vespalib/data/slime/value.h b/vespalib/src/vespa/vespalib/data/slime/value.h index 786f2bede91..930c182924e 100644 --- a/vespalib/src/vespa/vespalib/data/slime/value.h +++ b/vespalib/src/vespa/vespalib/data/slime/value.h @@ -21,7 +21,7 @@ struct ObjectTraverser; class Value : public Cursor { protected: - virtual ~Value() {} + virtual ~Value() = default; virtual Cursor &addLeaf(const ValueFactory &input); virtual Cursor &setLeaf(Symbol symbol, const ValueFactory &input); @@ -57,7 +57,7 @@ public: Cursor &addString(Memory str) override; Cursor &addData(Memory data) override; Cursor &addData(ExternalMemory::UP data) override; - Cursor &addArray() override; + Cursor &addArray(size_t reserved_size) override; Cursor &addObject() override; Cursor &setNix(Symbol sym) override; @@ -67,7 +67,7 @@ public: Cursor &setString(Symbol sym, Memory str) override; Cursor &setData(Symbol sym, Memory data) override; Cursor &setData(Symbol sym, ExternalMemory::UP data) override; - Cursor &setArray(Symbol sym) override; + Cursor &setArray(Symbol sym, size_t reserved_size) override; Cursor &setObject(Symbol sym) override; Cursor &setNix(Memory name) override; @@ -77,7 +77,7 @@ public: Cursor &setString(Memory name, Memory str) override; Cursor &setData(Memory name, Memory str) override; Cursor &setData(Memory name, ExternalMemory::UP data) override; - Cursor &setArray(Memory name) override; + Cursor &setArray(Memory name, size_t reserved_size) override; Cursor &setObject(Memory name) override; Symbol resolve(Memory symbol_name) override; -- cgit v1.2.3 From a27dedb61be36844466f7a56710d7600ba224622 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 1 Jul 2021 10:39:35 +0000 Subject: Add final and noexcept --- vespalib/src/vespa/vespalib/data/slime/array_value.h | 2 +- vespalib/src/vespa/vespalib/data/slime/basic_value.h | 16 ++++++++-------- .../vespa/vespalib/data/slime/basic_value_factory.h | 20 ++++++++++---------- .../vespa/vespalib/data/slime/empty_value_factory.h | 10 +++++----- .../vespalib/data/slime/named_symbol_inserter.h | 4 ++-- .../src/vespa/vespalib/data/slime/object_value.cpp | 12 +++++------- .../src/vespa/vespalib/data/slime/object_value.h | 2 +- .../src/vespa/vespalib/data/slime/resolved_symbol.h | 6 +++--- 8 files changed, 35 insertions(+), 37 deletions(-) (limited to 'vespalib') diff --git a/vespalib/src/vespa/vespalib/data/slime/array_value.h b/vespalib/src/vespa/vespalib/data/slime/array_value.h index 02bd730275b..0509c8e7414 100644 --- a/vespalib/src/vespa/vespalib/data/slime/array_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/array_value.h @@ -13,7 +13,7 @@ namespace vespalib::slime { * Class representing a collection of ordered values that can be * looked up by index. **/ -class ArrayValue : public Value +class ArrayValue final : public Value { private: SymbolTable &_symbolTable; diff --git a/vespalib/src/vespa/vespalib/data/slime/basic_value.h b/vespalib/src/vespa/vespalib/data/slime/basic_value.h index 3768523ada0..20183999d8f 100644 --- a/vespalib/src/vespa/vespalib/data/slime/basic_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/basic_value.h @@ -13,33 +13,33 @@ namespace vespalib::slime { /** * Classes representing a single basic value. **/ -class BasicBoolValue : public Value { +class BasicBoolValue final : public Value { bool _value; public: - BasicBoolValue(bool bit) : _value(bit) {} + BasicBoolValue(bool bit) noexcept : _value(bit) {} bool asBool() const override { return _value; } Type type() const override { return BOOL::instance; } }; -class BasicLongValue : public Value { +class BasicLongValue final : public Value { int64_t _value; public: - BasicLongValue(int64_t l) : _value(l) {} + BasicLongValue(int64_t l) noexcept : _value(l) {} int64_t asLong() const override { return _value; } double asDouble() const override { return _value; } Type type() const override { return LONG::instance; } }; -class BasicDoubleValue : public Value { +class BasicDoubleValue final : public Value { double _value; public: - BasicDoubleValue(double d) : _value(d) {} + BasicDoubleValue(double d) noexcept : _value(d) {} double asDouble() const override { return _value; } int64_t asLong() const override { return _value; } Type type() const override { return DOUBLE::instance; } }; -class BasicStringValue : public Value { +class BasicStringValue final : public Value { Memory _value; public: BasicStringValue(Memory str, Stash & stash); @@ -49,7 +49,7 @@ public: Type type() const override { return STRING::instance; } }; -class BasicDataValue : public Value { +class BasicDataValue final : public Value { Memory _value; public: BasicDataValue(Memory data, Stash & stash); diff --git a/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h b/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h index 5562415e33e..e7b2a9dd806 100644 --- a/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h +++ b/vespalib/src/vespa/vespalib/data/slime/basic_value_factory.h @@ -8,33 +8,33 @@ namespace vespalib::slime { -struct BoolValueFactory : public ValueFactory { +struct BoolValueFactory final : public ValueFactory { bool input; - BoolValueFactory(bool in) : input(in) {} + BoolValueFactory(bool in) noexcept : input(in) {} Value *create(Stash & stash) const override { return & stash.create(input); } }; -struct LongValueFactory : public ValueFactory { +struct LongValueFactory final : public ValueFactory { int64_t input; - LongValueFactory(int64_t in) : input(in) {} + LongValueFactory(int64_t in) noexcept : input(in) {} Value *create(Stash & stash) const override { return & stash.create(input); } }; -struct DoubleValueFactory : public ValueFactory { +struct DoubleValueFactory final : public ValueFactory { double input; - DoubleValueFactory(double in) : input(in) {} + DoubleValueFactory(double in) noexcept : input(in) {} Value *create(Stash & stash) const override { return & stash.create(input); } }; -struct StringValueFactory : public ValueFactory { +struct StringValueFactory final : public ValueFactory { Memory input; - StringValueFactory(Memory in) : input(in) {} + StringValueFactory(Memory in) noexcept : input(in) {} Value *create(Stash & stash) const override { return & stash.create(input, stash); } }; -struct DataValueFactory : public ValueFactory { +struct DataValueFactory final : public ValueFactory { Memory input; - DataValueFactory(Memory in) : input(in) {} + DataValueFactory(Memory in) noexcept : input(in) {} Value *create(Stash & stash) const override { return & stash.create(input, stash); } }; diff --git a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h index ab50aad0709..c92b7ed1c68 100644 --- a/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h +++ b/vespalib/src/vespa/vespalib/data/slime/empty_value_factory.h @@ -7,20 +7,20 @@ namespace vespalib::slime { -struct NixValueFactory : public ValueFactory { +struct NixValueFactory final : public ValueFactory { Value *create(Stash &) const override { return NixValue::instance(); } }; -struct ArrayValueFactory : public ValueFactory { +struct ArrayValueFactory final : public ValueFactory { SymbolTable &symbolTable; size_t _reserve; - ArrayValueFactory(SymbolTable &table, size_t reserve) : symbolTable(table), _reserve(reserve) {} + ArrayValueFactory(SymbolTable &table, size_t reserve) noexcept : symbolTable(table), _reserve(reserve) {} Value *create(Stash & stash) const override; }; -struct ObjectValueFactory : public ValueFactory { +struct ObjectValueFactory final : public ValueFactory { SymbolTable &symbolTable; - ObjectValueFactory(SymbolTable &table) : symbolTable(table) {} + ObjectValueFactory(SymbolTable &table) noexcept : symbolTable(table) {} Value *create(Stash & stash) const override; }; diff --git a/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h b/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h index aac35b2e386..9752040d3e8 100644 --- a/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h +++ b/vespalib/src/vespa/vespalib/data/slime/named_symbol_inserter.h @@ -10,14 +10,14 @@ namespace vespalib::slime { /** * Class used to insert the name of a field into a symbol table. **/ -class NamedSymbolInserter : public SymbolInserter +class NamedSymbolInserter final : public SymbolInserter { private: SymbolTable &_table; const Memory &_name; public: - NamedSymbolInserter(SymbolTable &table, const Memory &name) + NamedSymbolInserter(SymbolTable &table, const Memory &name) noexcept : _table(table), _name(name) {} Symbol insert() override { return _table.insert(_name); diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.cpp b/vespalib/src/vespa/vespalib/data/slime/object_value.cpp index 094869f36ad..25a5d762825 100644 --- a/vespalib/src/vespa/vespalib/data/slime/object_value.cpp +++ b/vespalib/src/vespa/vespalib/data/slime/object_value.cpp @@ -24,18 +24,16 @@ ObjectValue::setLeaf(Memory name, const ValueFactory &input) { void ObjectValue::traverse(ObjectSymbolTraverser &ot) const { - typedef SymbolValueMap::const_iterator ITR; - for (ITR pos = _fields.begin(); pos != _fields.end(); ++pos) { - ot.field(pos->first, *pos->second); + for (const auto & field : _fields) { + ot.field(field.first, *field.second); } } void ObjectValue::traverse(ObjectTraverser &ot) const { - typedef SymbolValueMap::const_iterator ITR; - for (ITR pos = _fields.begin(); pos != _fields.end(); ++pos) { - Memory symbol = _symbolTable.inspect(pos->first); - ot.field(symbol, *pos->second); + for (const auto & field : _fields) { + Memory symbol = _symbolTable.inspect(field.first); + ot.field(symbol, *field.second); } } diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.h b/vespalib/src/vespa/vespalib/data/slime/object_value.h index 159a1431d29..4e9bc92c646 100644 --- a/vespalib/src/vespa/vespalib/data/slime/object_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/object_value.h @@ -17,7 +17,7 @@ namespace vespalib::slime { * Class representing a collection of unordered values that can be * looked up by symbol. **/ -class ObjectValue : public Value +class ObjectValue final : public Value { private: struct hasher { diff --git a/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h b/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h index 2b8c39708c9..714230bdf94 100644 --- a/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h +++ b/vespalib/src/vespa/vespalib/data/slime/resolved_symbol.h @@ -13,14 +13,14 @@ namespace vespalib::slime { * appropriate symbol table. Thus, this class can satisfy both the * symbol lookup and inserter interfaces. **/ -class ResolvedSymbol : public SymbolLookup, - public SymbolInserter +class ResolvedSymbol final : public SymbolLookup, + public SymbolInserter { private: Symbol _symbol; public: - ResolvedSymbol(const Symbol &symbol) : _symbol(symbol) {} + ResolvedSymbol(const Symbol &symbol) noexcept : _symbol(symbol) {} Symbol lookup() const override { return _symbol; } -- cgit v1.2.3 From c6bdd7d9a780b8834c8fa079daf751c0ca9745af Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 1 Jul 2021 13:59:33 +0000 Subject: typedef -> using --- vespalib/src/vespa/vespalib/data/slime/object_value.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'vespalib') diff --git a/vespalib/src/vespa/vespalib/data/slime/object_value.h b/vespalib/src/vespa/vespalib/data/slime/object_value.h index 4e9bc92c646..a26027f9e0d 100644 --- a/vespalib/src/vespa/vespalib/data/slime/object_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/object_value.h @@ -23,7 +23,7 @@ private: struct hasher { size_t operator () (const Symbol & s) const { return s.getValue(); } }; - typedef vector_map SymbolValueMap; + using SymbolValueMap = vector_map; SymbolTable &_symbolTable; Stash &_stash; SymbolValueMap _fields; -- cgit v1.2.3 From 9298bdfb0a7e719c7f4ca05e43e9553646a01386 Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Thu, 1 Jul 2021 21:34:14 +0000 Subject: Move reserve method out the of the Value interface implementation. --- vespalib/src/vespa/vespalib/data/slime/array_value.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'vespalib') diff --git a/vespalib/src/vespa/vespalib/data/slime/array_value.h b/vespalib/src/vespa/vespalib/data/slime/array_value.h index 0509c8e7414..99b00b884b0 100644 --- a/vespalib/src/vespa/vespalib/data/slime/array_value.h +++ b/vespalib/src/vespa/vespalib/data/slime/array_value.h @@ -31,12 +31,12 @@ public: ArrayValue(SymbolTable &table, Stash & stash); ArrayValue(const ArrayValue &) = delete; ArrayValue &operator=(const ArrayValue &) = delete; + void reserve(size_t sz) { _values.reserve(sz); } Type type() const override { return ARRAY::instance; } size_t children() const override { return _values.size(); } size_t entries() const override { return _values.size(); } void traverse(ArrayTraverser &at) const override; - void reserve(size_t sz) { _values.reserve(sz); } Cursor &operator[](size_t idx) const override { if (idx < _values.size()) { -- cgit v1.2.3