@@ -271,20 +271,20 @@ static std::string* RangeOption (napi_env env, napi_value opts, const char* name
271
271
/* *
272
272
* Converts an array containing Buffer or string keys to a vector.
273
273
*/
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) {
275
275
uint32_t length;
276
- std::vector<std::string>* result = new std::vector<std::string>() ;
276
+ std::vector<std::string> result;
277
277
278
278
if (napi_get_array_length (env, arr, &length) == napi_ok) {
279
- result-> reserve (length);
279
+ result. reserve (length);
280
280
281
281
for (uint32_t i = 0 ; i < length; i++) {
282
282
napi_value element;
283
283
284
284
if (napi_get_element (env, arr, i, &element) == napi_ok &&
285
285
StringOrBufferLength (env, element) >= 0 ) {
286
286
LD_STRING_OR_BUFFER_TO_COPY (env, element, to);
287
- result-> emplace_back (toCh_, toSz_);
287
+ result. emplace_back (toCh_, toSz_);
288
288
delete [] toCh_;
289
289
}
290
290
}
@@ -318,36 +318,36 @@ enum Mode {
318
318
* Helper struct for caching and converting a key-value pair to napi_values.
319
319
*/
320
320
struct 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()) {}
324
324
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) {
326
326
if (mode == Mode::entries) {
327
- napi_create_array_with_length (env, 2 , result);
327
+ napi_create_array_with_length (env, 2 , & result);
328
328
329
329
napi_value keyElement;
330
330
napi_value valueElement;
331
331
332
- Convert (env, &key_, keyAsBuffer, & keyElement);
333
- Convert (env, &value_, valueAsBuffer, & valueElement);
332
+ Convert (env, &key_, keyAsBuffer, keyElement);
333
+ Convert (env, &value_, valueAsBuffer, valueElement);
334
334
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);
337
337
} else if (mode == Mode::keys) {
338
338
Convert (env, &key_, keyAsBuffer, result);
339
339
} else {
340
340
Convert (env, &value_, valueAsBuffer, result);
341
341
}
342
342
}
343
343
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) {
345
345
if (s == NULL ) {
346
- napi_get_undefined (env, result);
346
+ napi_get_undefined (env, & result);
347
347
} 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);
349
349
} else {
350
- napi_create_string_utf8 (env, s->data (), s->size (), result);
350
+ napi_create_string_utf8 (env, s->data (), s->size (), & result);
351
351
}
352
352
}
353
353
@@ -874,15 +874,15 @@ struct Iterator final : public BaseIterator {
874
874
if (keys_ && values_) {
875
875
leveldb::Slice k = CurrentKey ();
876
876
leveldb::Slice v = CurrentValue ();
877
- cache_.emplace_back (& k, & v);
877
+ cache_.emplace_back (k, v);
878
878
bytesRead += k.size () + v.size ();
879
879
} else if (keys_) {
880
880
leveldb::Slice k = CurrentKey ();
881
- cache_.emplace_back (& k, & empty);
881
+ cache_.emplace_back (k, empty);
882
882
bytesRead += k.size ();
883
883
} else if (values_) {
884
884
leveldb::Slice v = CurrentValue ();
885
- cache_.emplace_back (& empty, & v);
885
+ cache_.emplace_back (empty, v);
886
886
bytesRead += v.size ();
887
887
}
888
888
@@ -1170,7 +1170,7 @@ struct GetWorker final : public PriorityWorker {
1170
1170
void HandleOKCallback (napi_env env, napi_value callback) override {
1171
1171
napi_value argv[2 ];
1172
1172
napi_get_null (env, &argv[0 ]);
1173
- Entry::Convert (env, &value_, asBuffer_, & argv[1 ]);
1173
+ Entry::Convert (env, &value_, asBuffer_, argv[1 ]);
1174
1174
CallFunction (env, callback, 2 , argv);
1175
1175
}
1176
1176
@@ -1207,24 +1207,20 @@ NAPI_METHOD(db_get) {
1207
1207
struct GetManyWorker final : public PriorityWorker {
1208
1208
GetManyWorker (napi_env env,
1209
1209
Database* database,
1210
- const std::vector<std::string>* keys,
1210
+ std::vector<std::string> keys,
1211
1211
napi_value callback,
1212
1212
const bool valueAsBuffer,
1213
1213
const bool fillCache)
1214
1214
: PriorityWorker(env, database, callback, " classic_level.get.many" ),
1215
- keys_ (keys), valueAsBuffer_(valueAsBuffer) {
1215
+ keys_ (std::move( keys) ), valueAsBuffer_(valueAsBuffer) {
1216
1216
options_.fill_cache = fillCache;
1217
1217
options_.snapshot = database->NewSnapshot ();
1218
1218
}
1219
1219
1220
- ~GetManyWorker () {
1221
- delete keys_;
1222
- }
1223
-
1224
1220
void DoExecute () override {
1225
- cache_.reserve (keys_-> size ());
1221
+ cache_.reserve (keys_. size ());
1226
1222
1227
- for (const std::string& key: * keys_) {
1223
+ for (const std::string& key: keys_) {
1228
1224
std::string* value = new std::string ();
1229
1225
leveldb::Status status = database_->Get (options_, key, *value);
1230
1226
@@ -1254,7 +1250,7 @@ struct GetManyWorker final : public PriorityWorker {
1254
1250
for (size_t idx = 0 ; idx < size; idx++) {
1255
1251
std::string* value = cache_[idx];
1256
1252
napi_value element;
1257
- Entry::Convert (env, value, valueAsBuffer_, & element);
1253
+ Entry::Convert (env, value, valueAsBuffer_, element);
1258
1254
napi_set_element (env, array, static_cast <uint32_t >(idx), element);
1259
1255
if (value != NULL ) delete value;
1260
1256
}
@@ -1267,7 +1263,7 @@ struct GetManyWorker final : public PriorityWorker {
1267
1263
1268
1264
private:
1269
1265
leveldb::ReadOptions options_;
1270
- const std::vector<std::string>* keys_;
1266
+ const std::vector<std::string> keys_;
1271
1267
const bool valueAsBuffer_;
1272
1268
std::vector<std::string*> cache_;
1273
1269
};
@@ -1279,7 +1275,7 @@ NAPI_METHOD(db_get_many) {
1279
1275
NAPI_ARGV (4 );
1280
1276
NAPI_DB_CONTEXT ();
1281
1277
1282
- const std::vector<std::string>* keys = KeyArray (env, argv[1 ]);
1278
+ const auto keys = KeyArray (env, argv[1 ]);
1283
1279
napi_value options = argv[2 ];
1284
1280
const bool asBuffer = EncodingIsBuffer (env, options, " valueEncoding" );
1285
1281
const bool fillCache = BooleanProperty (env, options, " fillCache" , true );
@@ -1766,7 +1762,7 @@ struct NextWorker final : public BaseWorker {
1766
1762
1767
1763
for (uint32_t idx = 0 ; idx < size; idx++) {
1768
1764
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);
1770
1766
napi_set_element (env, jsArray, idx, element);
1771
1767
}
1772
1768
0 commit comments