@@ -271,20 +271,20 @@ static std::string* RangeOption (napi_env env, napi_value opts, const char* name
271271/* *
272272 * Converts an array containing Buffer or string keys to a vector.
273273 */
274- static std::vector<std::string>* KeyArray (napi_env env, napi_value arr) {
274+ static std::vector<std::string> KeyArray (napi_env env, napi_value arr) {
275275 uint32_t length;
276- std::vector<std::string>* result = new std::vector<std::string>() ;
276+ std::vector<std::string> result;
277277
278278 if (napi_get_array_length (env, arr, &length) == napi_ok) {
279- result-> reserve (length);
279+ result. reserve (length);
280280
281281 for (uint32_t i = 0 ; i < length; i++) {
282282 napi_value element;
283283
284284 if (napi_get_element (env, arr, i, &element) == napi_ok &&
285285 StringOrBufferLength (env, element) >= 0 ) {
286286 LD_STRING_OR_BUFFER_TO_COPY (env, element, to);
287- result-> emplace_back (toCh_, toSz_);
287+ result. emplace_back (toCh_, toSz_);
288288 delete [] toCh_;
289289 }
290290 }
@@ -318,36 +318,36 @@ enum Mode {
318318 * Helper struct for caching and converting a key-value pair to napi_values.
319319 */
320320struct Entry {
321- Entry (const leveldb::Slice* key, const leveldb::Slice* value)
322- : key_(key-> data (), key-> size()),
323- value_(value-> data (), value-> size()) {}
321+ Entry (const leveldb::Slice& key, const leveldb::Slice& value)
322+ : key_(key. data(), key. size()),
323+ value_ (value. data(), value. size()) {}
324324
325- void ConvertByMode (napi_env env, Mode mode, const bool keyAsBuffer, const bool valueAsBuffer, napi_value* result) {
325+ void ConvertByMode (napi_env env, Mode mode, const bool keyAsBuffer, const bool valueAsBuffer, napi_value& result) {
326326 if (mode == Mode::entries) {
327- napi_create_array_with_length (env, 2 , result);
327+ napi_create_array_with_length (env, 2 , & result);
328328
329329 napi_value keyElement;
330330 napi_value valueElement;
331331
332- Convert (env, &key_, keyAsBuffer, & keyElement);
333- Convert (env, &value_, valueAsBuffer, & valueElement);
332+ Convert (env, &key_, keyAsBuffer, keyElement);
333+ Convert (env, &value_, valueAsBuffer, valueElement);
334334
335- napi_set_element (env, * result, 0 , keyElement);
336- napi_set_element (env, * result, 1 , valueElement);
335+ napi_set_element (env, result, 0 , keyElement);
336+ napi_set_element (env, result, 1 , valueElement);
337337 } else if (mode == Mode::keys) {
338338 Convert (env, &key_, keyAsBuffer, result);
339339 } else {
340340 Convert (env, &value_, valueAsBuffer, result);
341341 }
342342 }
343343
344- static void Convert (napi_env env, const std::string* s, const bool asBuffer, napi_value* result) {
344+ static void Convert (napi_env env, const std::string* s, const bool asBuffer, napi_value& result) {
345345 if (s == NULL ) {
346- napi_get_undefined (env, result);
346+ napi_get_undefined (env, & result);
347347 } else if (asBuffer) {
348- napi_create_buffer_copy (env, s->size (), s->data (), NULL , result);
348+ napi_create_buffer_copy (env, s->size (), s->data (), NULL , & result);
349349 } else {
350- napi_create_string_utf8 (env, s->data (), s->size (), result);
350+ napi_create_string_utf8 (env, s->data (), s->size (), & result);
351351 }
352352 }
353353
@@ -874,15 +874,15 @@ struct Iterator final : public BaseIterator {
874874 if (keys_ && values_) {
875875 leveldb::Slice k = CurrentKey ();
876876 leveldb::Slice v = CurrentValue ();
877- cache_.emplace_back (& k, & v);
877+ cache_.emplace_back (k, v);
878878 bytesRead += k.size () + v.size ();
879879 } else if (keys_) {
880880 leveldb::Slice k = CurrentKey ();
881- cache_.emplace_back (& k, & empty);
881+ cache_.emplace_back (k, empty);
882882 bytesRead += k.size ();
883883 } else if (values_) {
884884 leveldb::Slice v = CurrentValue ();
885- cache_.emplace_back (& empty, & v);
885+ cache_.emplace_back (empty, v);
886886 bytesRead += v.size ();
887887 }
888888
@@ -1170,7 +1170,7 @@ struct GetWorker final : public PriorityWorker {
11701170 void HandleOKCallback (napi_env env, napi_value callback) override {
11711171 napi_value argv[2 ];
11721172 napi_get_null (env, &argv[0 ]);
1173- Entry::Convert (env, &value_, asBuffer_, & argv[1 ]);
1173+ Entry::Convert (env, &value_, asBuffer_, argv[1 ]);
11741174 CallFunction (env, callback, 2 , argv);
11751175 }
11761176
@@ -1207,24 +1207,20 @@ NAPI_METHOD(db_get) {
12071207struct GetManyWorker final : public PriorityWorker {
12081208 GetManyWorker (napi_env env,
12091209 Database* database,
1210- const std::vector<std::string>* keys,
1210+ std::vector<std::string> keys,
12111211 napi_value callback,
12121212 const bool valueAsBuffer,
12131213 const bool fillCache)
12141214 : PriorityWorker(env, database, callback, " classic_level.get.many" ),
1215- keys_ (keys), valueAsBuffer_(valueAsBuffer) {
1215+ keys_ (std::move( keys) ), valueAsBuffer_(valueAsBuffer) {
12161216 options_.fill_cache = fillCache;
12171217 options_.snapshot = database->NewSnapshot ();
12181218 }
12191219
1220- ~GetManyWorker () {
1221- delete keys_;
1222- }
1223-
12241220 void DoExecute () override {
1225- cache_.reserve (keys_-> size ());
1221+ cache_.reserve (keys_. size ());
12261222
1227- for (const std::string& key: * keys_) {
1223+ for (const std::string& key: keys_) {
12281224 std::string* value = new std::string ();
12291225 leveldb::Status status = database_->Get (options_, key, *value);
12301226
@@ -1254,7 +1250,7 @@ struct GetManyWorker final : public PriorityWorker {
12541250 for (size_t idx = 0 ; idx < size; idx++) {
12551251 std::string* value = cache_[idx];
12561252 napi_value element;
1257- Entry::Convert (env, value, valueAsBuffer_, & element);
1253+ Entry::Convert (env, value, valueAsBuffer_, element);
12581254 napi_set_element (env, array, static_cast <uint32_t >(idx), element);
12591255 if (value != NULL ) delete value;
12601256 }
@@ -1267,7 +1263,7 @@ struct GetManyWorker final : public PriorityWorker {
12671263
12681264private:
12691265 leveldb::ReadOptions options_;
1270- const std::vector<std::string>* keys_;
1266+ const std::vector<std::string> keys_;
12711267 const bool valueAsBuffer_;
12721268 std::vector<std::string*> cache_;
12731269};
@@ -1279,7 +1275,7 @@ NAPI_METHOD(db_get_many) {
12791275 NAPI_ARGV (4 );
12801276 NAPI_DB_CONTEXT ();
12811277
1282- const std::vector<std::string>* keys = KeyArray (env, argv[1 ]);
1278+ const auto keys = KeyArray (env, argv[1 ]);
12831279 napi_value options = argv[2 ];
12841280 const bool asBuffer = EncodingIsBuffer (env, options, " valueEncoding" );
12851281 const bool fillCache = BooleanProperty (env, options, " fillCache" , true );
@@ -1766,7 +1762,7 @@ struct NextWorker final : public BaseWorker {
17661762
17671763 for (uint32_t idx = 0 ; idx < size; idx++) {
17681764 napi_value element;
1769- iterator_->cache_ [idx].ConvertByMode (env, Mode::entries, kab, vab, & element);
1765+ iterator_->cache_ [idx].ConvertByMode (env, Mode::entries, kab, vab, element);
17701766 napi_set_element (env, jsArray, idx, element);
17711767 }
17721768
0 commit comments