rn-leveldb 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +92 -0
- package/android/.project +34 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
- package/android/CMakeLists.txt +69 -0
- package/android/build.gradle +125 -0
- package/android/cpp-adapter.cpp +19 -0
- package/android/gradle.properties +6 -0
- package/android/src/main/AndroidManifest.xml +4 -0
- package/android/src/main/java/com/reactnativeleveldb/LeveldbModule.java +57 -0
- package/android/src/main/java/com/reactnativeleveldb/LeveldbPackage.java +28 -0
- package/cpp/leveldb/.appveyor.yml +36 -0
- package/cpp/leveldb/.clang-format +18 -0
- package/cpp/leveldb/.travis.yml +88 -0
- package/cpp/leveldb/AUTHORS +12 -0
- package/cpp/leveldb/CMakeLists.txt +495 -0
- package/cpp/leveldb/CONTRIBUTING.md +36 -0
- package/cpp/leveldb/LICENSE +27 -0
- package/cpp/leveldb/NEWS +17 -0
- package/cpp/leveldb/README.md +231 -0
- package/cpp/leveldb/TODO +14 -0
- package/cpp/leveldb/benchmarks/db_bench.cc +990 -0
- package/cpp/leveldb/benchmarks/db_bench_sqlite3.cc +726 -0
- package/cpp/leveldb/benchmarks/db_bench_tree_db.cc +531 -0
- package/cpp/leveldb/cmake/leveldbConfig.cmake.in +9 -0
- package/cpp/leveldb/db/autocompact_test.cc +115 -0
- package/cpp/leveldb/db/builder.cc +82 -0
- package/cpp/leveldb/db/builder.h +30 -0
- package/cpp/leveldb/db/c.cc +562 -0
- package/cpp/leveldb/db/c_test.c +384 -0
- package/cpp/leveldb/db/corruption_test.cc +367 -0
- package/cpp/leveldb/db/db_impl.cc +1554 -0
- package/cpp/leveldb/db/db_impl.h +217 -0
- package/cpp/leveldb/db/db_iter.cc +318 -0
- package/cpp/leveldb/db/db_iter.h +26 -0
- package/cpp/leveldb/db/db_test.cc +2305 -0
- package/cpp/leveldb/db/dbformat.cc +136 -0
- package/cpp/leveldb/db/dbformat.h +224 -0
- package/cpp/leveldb/db/dbformat_test.cc +133 -0
- package/cpp/leveldb/db/dumpfile.cc +232 -0
- package/cpp/leveldb/db/fault_injection_test.cc +555 -0
- package/cpp/leveldb/db/filename.cc +141 -0
- package/cpp/leveldb/db/filename.h +83 -0
- package/cpp/leveldb/db/filename_test.cc +132 -0
- package/cpp/leveldb/db/leveldbutil.cc +64 -0
- package/cpp/leveldb/db/log_format.h +35 -0
- package/cpp/leveldb/db/log_reader.cc +274 -0
- package/cpp/leveldb/db/log_reader.h +112 -0
- package/cpp/leveldb/db/log_test.cc +563 -0
- package/cpp/leveldb/db/log_writer.cc +111 -0
- package/cpp/leveldb/db/log_writer.h +54 -0
- package/cpp/leveldb/db/memtable.cc +137 -0
- package/cpp/leveldb/db/memtable.h +87 -0
- package/cpp/leveldb/db/recovery_test.cc +339 -0
- package/cpp/leveldb/db/repair.cc +451 -0
- package/cpp/leveldb/db/skiplist.h +382 -0
- package/cpp/leveldb/db/skiplist_test.cc +373 -0
- package/cpp/leveldb/db/snapshot.h +95 -0
- package/cpp/leveldb/db/table_cache.cc +120 -0
- package/cpp/leveldb/db/table_cache.h +57 -0
- package/cpp/leveldb/db/version_edit.cc +257 -0
- package/cpp/leveldb/db/version_edit.h +106 -0
- package/cpp/leveldb/db/version_edit_test.cc +46 -0
- package/cpp/leveldb/db/version_set.cc +1562 -0
- package/cpp/leveldb/db/version_set.h +393 -0
- package/cpp/leveldb/db/version_set_test.cc +336 -0
- package/cpp/leveldb/db/write_batch.cc +150 -0
- package/cpp/leveldb/db/write_batch_internal.h +45 -0
- package/cpp/leveldb/db/write_batch_test.cc +137 -0
- package/cpp/leveldb/doc/benchmark.html +459 -0
- package/cpp/leveldb/doc/impl.md +172 -0
- package/cpp/leveldb/doc/index.md +523 -0
- package/cpp/leveldb/doc/log_format.md +75 -0
- package/cpp/leveldb/doc/table_format.md +107 -0
- package/cpp/leveldb/helpers/memenv/memenv.cc +390 -0
- package/cpp/leveldb/helpers/memenv/memenv.h +22 -0
- package/cpp/leveldb/helpers/memenv/memenv_test.cc +264 -0
- package/cpp/leveldb/include/leveldb/c.h +270 -0
- package/cpp/leveldb/include/leveldb/cache.h +111 -0
- package/cpp/leveldb/include/leveldb/comparator.h +64 -0
- package/cpp/leveldb/include/leveldb/db.h +167 -0
- package/cpp/leveldb/include/leveldb/dumpfile.h +28 -0
- package/cpp/leveldb/include/leveldb/env.h +417 -0
- package/cpp/leveldb/include/leveldb/export.h +33 -0
- package/cpp/leveldb/include/leveldb/filter_policy.h +72 -0
- package/cpp/leveldb/include/leveldb/iterator.h +112 -0
- package/cpp/leveldb/include/leveldb/options.h +187 -0
- package/cpp/leveldb/include/leveldb/slice.h +114 -0
- package/cpp/leveldb/include/leveldb/status.h +122 -0
- package/cpp/leveldb/include/leveldb/table.h +84 -0
- package/cpp/leveldb/include/leveldb/table_builder.h +93 -0
- package/cpp/leveldb/include/leveldb/write_batch.h +83 -0
- package/cpp/leveldb/issues/issue178_test.cc +90 -0
- package/cpp/leveldb/issues/issue200_test.cc +59 -0
- package/cpp/leveldb/issues/issue320_test.cc +131 -0
- package/cpp/leveldb/port/README.md +10 -0
- package/cpp/leveldb/port/port.h +19 -0
- package/cpp/leveldb/port/port_config.h.in +33 -0
- package/cpp/leveldb/port/port_example.h +100 -0
- package/cpp/leveldb/port/port_stdcxx.h +151 -0
- package/cpp/leveldb/port/thread_annotations.h +108 -0
- package/cpp/leveldb/table/block.cc +267 -0
- package/cpp/leveldb/table/block.h +44 -0
- package/cpp/leveldb/table/block_builder.cc +107 -0
- package/cpp/leveldb/table/block_builder.h +54 -0
- package/cpp/leveldb/table/filter_block.cc +106 -0
- package/cpp/leveldb/table/filter_block.h +68 -0
- package/cpp/leveldb/table/filter_block_test.cc +127 -0
- package/cpp/leveldb/table/format.cc +141 -0
- package/cpp/leveldb/table/format.h +99 -0
- package/cpp/leveldb/table/iterator.cc +76 -0
- package/cpp/leveldb/table/iterator_wrapper.h +92 -0
- package/cpp/leveldb/table/merger.cc +191 -0
- package/cpp/leveldb/table/merger.h +26 -0
- package/cpp/leveldb/table/table.cc +271 -0
- package/cpp/leveldb/table/table_builder.cc +265 -0
- package/cpp/leveldb/table/table_test.cc +834 -0
- package/cpp/leveldb/table/two_level_iterator.cc +171 -0
- package/cpp/leveldb/table/two_level_iterator.h +31 -0
- package/cpp/leveldb/third_party/benchmark/.clang-format +5 -0
- package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/bug_report.md +32 -0
- package/cpp/leveldb/third_party/benchmark/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- package/cpp/leveldb/third_party/benchmark/.github/workflows/build-and-test.yml +38 -0
- package/cpp/leveldb/third_party/benchmark/.github/workflows/pylint.yml +26 -0
- package/cpp/leveldb/third_party/benchmark/.github/workflows/test_bindings.yml +24 -0
- package/cpp/leveldb/third_party/benchmark/.travis-libcxx-setup.sh +28 -0
- package/cpp/leveldb/third_party/benchmark/.travis.yml +231 -0
- package/cpp/leveldb/third_party/benchmark/.ycm_extra_conf.py +115 -0
- package/cpp/leveldb/third_party/benchmark/AUTHORS +58 -0
- package/cpp/leveldb/third_party/benchmark/BUILD.bazel +44 -0
- package/cpp/leveldb/third_party/benchmark/CMakeLists.txt +287 -0
- package/cpp/leveldb/third_party/benchmark/CONTRIBUTING.md +58 -0
- package/cpp/leveldb/third_party/benchmark/CONTRIBUTORS +83 -0
- package/cpp/leveldb/third_party/benchmark/LICENSE +202 -0
- package/cpp/leveldb/third_party/benchmark/README.md +1323 -0
- package/cpp/leveldb/third_party/benchmark/WORKSPACE +51 -0
- package/cpp/leveldb/third_party/benchmark/_config.yml +1 -0
- package/cpp/leveldb/third_party/benchmark/appveyor.yml +50 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/BUILD +3 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/build_defs.bzl +25 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/BUILD +38 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/__init__.py +156 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/benchmark.cc +180 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/google_benchmark/example.py +136 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/pybind11.BUILD +20 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/python_headers.BUILD +6 -0
- package/cpp/leveldb/third_party/benchmark/bindings/python/requirements.txt +2 -0
- package/cpp/leveldb/third_party/benchmark/cmake/AddCXXCompilerFlag.cmake +74 -0
- package/cpp/leveldb/third_party/benchmark/cmake/CXXFeatureCheck.cmake +69 -0
- package/cpp/leveldb/third_party/benchmark/cmake/Config.cmake.in +1 -0
- package/cpp/leveldb/third_party/benchmark/cmake/GetGitVersion.cmake +54 -0
- package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake +41 -0
- package/cpp/leveldb/third_party/benchmark/cmake/GoogleTest.cmake.in +58 -0
- package/cpp/leveldb/third_party/benchmark/cmake/benchmark.pc.in +12 -0
- package/cpp/leveldb/third_party/benchmark/cmake/gnu_posix_regex.cpp +12 -0
- package/cpp/leveldb/third_party/benchmark/cmake/llvm-toolchain.cmake +8 -0
- package/cpp/leveldb/third_party/benchmark/cmake/posix_regex.cpp +14 -0
- package/cpp/leveldb/third_party/benchmark/cmake/split_list.cmake +3 -0
- package/cpp/leveldb/third_party/benchmark/cmake/std_regex.cpp +10 -0
- package/cpp/leveldb/third_party/benchmark/cmake/steady_clock.cpp +7 -0
- package/cpp/leveldb/third_party/benchmark/cmake/thread_safety_attributes.cpp +4 -0
- package/cpp/leveldb/third_party/benchmark/conan/CMakeLists.txt +7 -0
- package/cpp/leveldb/third_party/benchmark/conan/test_package/CMakeLists.txt +10 -0
- package/cpp/leveldb/third_party/benchmark/conan/test_package/conanfile.py +19 -0
- package/cpp/leveldb/third_party/benchmark/conan/test_package/test_package.cpp +18 -0
- package/cpp/leveldb/third_party/benchmark/conanfile.py +79 -0
- package/cpp/leveldb/third_party/benchmark/dependencies.md +18 -0
- package/cpp/leveldb/third_party/benchmark/docs/AssemblyTests.md +147 -0
- package/cpp/leveldb/third_party/benchmark/docs/_config.yml +1 -0
- package/cpp/leveldb/third_party/benchmark/docs/releasing.md +16 -0
- package/cpp/leveldb/third_party/benchmark/docs/tools.md +203 -0
- package/cpp/leveldb/third_party/benchmark/include/benchmark/benchmark.h +1604 -0
- package/cpp/leveldb/third_party/benchmark/requirements.txt +2 -0
- package/cpp/leveldb/third_party/benchmark/setup.py +140 -0
- package/cpp/leveldb/third_party/benchmark/src/CMakeLists.txt +114 -0
- package/cpp/leveldb/third_party/benchmark/src/arraysize.h +33 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark.cc +499 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.cc +15 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_api_internal.h +53 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_main.cc +17 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_name.cc +58 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_register.cc +515 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_register.h +108 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.cc +362 -0
- package/cpp/leveldb/third_party/benchmark/src/benchmark_runner.h +51 -0
- package/cpp/leveldb/third_party/benchmark/src/check.h +82 -0
- package/cpp/leveldb/third_party/benchmark/src/colorprint.cc +188 -0
- package/cpp/leveldb/third_party/benchmark/src/colorprint.h +33 -0
- package/cpp/leveldb/third_party/benchmark/src/commandlineflags.cc +228 -0
- package/cpp/leveldb/third_party/benchmark/src/commandlineflags.h +103 -0
- package/cpp/leveldb/third_party/benchmark/src/complexity.cc +238 -0
- package/cpp/leveldb/third_party/benchmark/src/complexity.h +55 -0
- package/cpp/leveldb/third_party/benchmark/src/console_reporter.cc +177 -0
- package/cpp/leveldb/third_party/benchmark/src/counter.cc +80 -0
- package/cpp/leveldb/third_party/benchmark/src/counter.h +32 -0
- package/cpp/leveldb/third_party/benchmark/src/csv_reporter.cc +154 -0
- package/cpp/leveldb/third_party/benchmark/src/cycleclock.h +211 -0
- package/cpp/leveldb/third_party/benchmark/src/internal_macros.h +102 -0
- package/cpp/leveldb/third_party/benchmark/src/json_reporter.cc +255 -0
- package/cpp/leveldb/third_party/benchmark/src/log.h +74 -0
- package/cpp/leveldb/third_party/benchmark/src/mutex.h +155 -0
- package/cpp/leveldb/third_party/benchmark/src/re.h +158 -0
- package/cpp/leveldb/third_party/benchmark/src/reporter.cc +105 -0
- package/cpp/leveldb/third_party/benchmark/src/sleep.cc +67 -0
- package/cpp/leveldb/third_party/benchmark/src/sleep.h +15 -0
- package/cpp/leveldb/third_party/benchmark/src/statistics.cc +193 -0
- package/cpp/leveldb/third_party/benchmark/src/statistics.h +37 -0
- package/cpp/leveldb/third_party/benchmark/src/string_util.cc +255 -0
- package/cpp/leveldb/third_party/benchmark/src/string_util.h +59 -0
- package/cpp/leveldb/third_party/benchmark/src/sysinfo.cc +716 -0
- package/cpp/leveldb/third_party/benchmark/src/thread_manager.h +64 -0
- package/cpp/leveldb/third_party/benchmark/src/thread_timer.h +86 -0
- package/cpp/leveldb/third_party/benchmark/src/timers.cc +245 -0
- package/cpp/leveldb/third_party/benchmark/src/timers.h +48 -0
- package/cpp/leveldb/third_party/benchmark/test/AssemblyTests.cmake +46 -0
- package/cpp/leveldb/third_party/benchmark/test/BUILD +73 -0
- package/cpp/leveldb/third_party/benchmark/test/CMakeLists.txt +263 -0
- package/cpp/leveldb/third_party/benchmark/test/args_product_test.cc +77 -0
- package/cpp/leveldb/third_party/benchmark/test/basic_test.cc +136 -0
- package/cpp/leveldb/third_party/benchmark/test/benchmark_gtest.cc +134 -0
- package/cpp/leveldb/third_party/benchmark/test/benchmark_name_gtest.cc +74 -0
- package/cpp/leveldb/third_party/benchmark/test/benchmark_test.cc +245 -0
- package/cpp/leveldb/third_party/benchmark/test/clobber_memory_assembly_test.cc +64 -0
- package/cpp/leveldb/third_party/benchmark/test/commandlineflags_gtest.cc +201 -0
- package/cpp/leveldb/third_party/benchmark/test/complexity_test.cc +213 -0
- package/cpp/leveldb/third_party/benchmark/test/cxx03_test.cc +63 -0
- package/cpp/leveldb/third_party/benchmark/test/diagnostics_test.cc +80 -0
- package/cpp/leveldb/third_party/benchmark/test/display_aggregates_only_test.cc +43 -0
- package/cpp/leveldb/third_party/benchmark/test/donotoptimize_assembly_test.cc +163 -0
- package/cpp/leveldb/third_party/benchmark/test/donotoptimize_test.cc +52 -0
- package/cpp/leveldb/third_party/benchmark/test/filter_test.cc +104 -0
- package/cpp/leveldb/third_party/benchmark/test/fixture_test.cc +51 -0
- package/cpp/leveldb/third_party/benchmark/test/internal_threading_test.cc +184 -0
- package/cpp/leveldb/third_party/benchmark/test/link_main_test.cc +8 -0
- package/cpp/leveldb/third_party/benchmark/test/map_test.cc +57 -0
- package/cpp/leveldb/third_party/benchmark/test/memory_manager_test.cc +44 -0
- package/cpp/leveldb/third_party/benchmark/test/multiple_ranges_test.cc +96 -0
- package/cpp/leveldb/third_party/benchmark/test/options_test.cc +75 -0
- package/cpp/leveldb/third_party/benchmark/test/output_test.h +213 -0
- package/cpp/leveldb/third_party/benchmark/test/output_test_helper.cc +515 -0
- package/cpp/leveldb/third_party/benchmark/test/register_benchmark_test.cc +184 -0
- package/cpp/leveldb/third_party/benchmark/test/report_aggregates_only_test.cc +39 -0
- package/cpp/leveldb/third_party/benchmark/test/reporter_output_test.cc +747 -0
- package/cpp/leveldb/third_party/benchmark/test/skip_with_error_test.cc +195 -0
- package/cpp/leveldb/third_party/benchmark/test/state_assembly_test.cc +68 -0
- package/cpp/leveldb/third_party/benchmark/test/statistics_gtest.cc +28 -0
- package/cpp/leveldb/third_party/benchmark/test/string_util_gtest.cc +153 -0
- package/cpp/leveldb/third_party/benchmark/test/templated_fixture_test.cc +28 -0
- package/cpp/leveldb/third_party/benchmark/test/user_counters_tabular_test.cc +285 -0
- package/cpp/leveldb/third_party/benchmark/test/user_counters_test.cc +531 -0
- package/cpp/leveldb/third_party/benchmark/test/user_counters_thousands_test.cc +173 -0
- package/cpp/leveldb/third_party/benchmark/tools/BUILD.bazel +19 -0
- package/cpp/leveldb/third_party/benchmark/tools/compare.py +429 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run1.json +119 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test1_run2.json +119 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test2_run.json +81 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run0.json +65 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/Inputs/test3_run1.json +65 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/__init__.py +8 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/report.py +903 -0
- package/cpp/leveldb/third_party/benchmark/tools/gbench/util.py +163 -0
- package/cpp/leveldb/third_party/benchmark/tools/requirements.txt +1 -0
- package/cpp/leveldb/third_party/benchmark/tools/strip_asm.py +151 -0
- package/cpp/leveldb/third_party/googletest/.clang-format +4 -0
- package/cpp/leveldb/third_party/googletest/.travis.yml +73 -0
- package/cpp/leveldb/third_party/googletest/BUILD.bazel +179 -0
- package/cpp/leveldb/third_party/googletest/CMakeLists.txt +36 -0
- package/cpp/leveldb/third_party/googletest/CONTRIBUTING.md +142 -0
- package/cpp/leveldb/third_party/googletest/LICENSE +28 -0
- package/cpp/leveldb/third_party/googletest/README.md +132 -0
- package/cpp/leveldb/third_party/googletest/WORKSPACE +23 -0
- package/cpp/leveldb/third_party/googletest/appveyor.yml +154 -0
- package/cpp/leveldb/third_party/googletest/ci/build-linux-bazel.sh +37 -0
- package/cpp/leveldb/third_party/googletest/ci/build-platformio.sh +2 -0
- package/cpp/leveldb/third_party/googletest/ci/env-linux.sh +41 -0
- package/cpp/leveldb/third_party/googletest/ci/env-osx.sh +47 -0
- package/cpp/leveldb/third_party/googletest/ci/get-nprocessors.sh +48 -0
- package/cpp/leveldb/third_party/googletest/ci/install-linux.sh +49 -0
- package/cpp/leveldb/third_party/googletest/ci/install-osx.sh +40 -0
- package/cpp/leveldb/third_party/googletest/ci/install-platformio.sh +5 -0
- package/cpp/leveldb/third_party/googletest/ci/log-config.sh +51 -0
- package/cpp/leveldb/third_party/googletest/ci/travis.sh +44 -0
- package/cpp/leveldb/third_party/googletest/googlemock/CMakeLists.txt +233 -0
- package/cpp/leveldb/third_party/googletest/googlemock/CONTRIBUTORS +40 -0
- package/cpp/leveldb/third_party/googletest/googlemock/LICENSE +28 -0
- package/cpp/leveldb/third_party/googletest/googlemock/README.md +44 -0
- package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock.pc.in +10 -0
- package/cpp/leveldb/third_party/googletest/googlemock/cmake/gmock_main.pc.in +10 -0
- package/cpp/leveldb/third_party/googletest/googlemock/docs/cheat_sheet.md +770 -0
- package/cpp/leveldb/third_party/googletest/googlemock/docs/cook_book.md +4270 -0
- package/cpp/leveldb/third_party/googletest/googlemock/docs/for_dummies.md +700 -0
- package/cpp/leveldb/third_party/googletest/googlemock/docs/gmock_faq.md +396 -0
- package/cpp/leveldb/third_party/googletest/googlemock/docs/pump_manual.md +187 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-actions.h +1193 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-cardinalities.h +157 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-function-mocker.h +276 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h +1884 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-actions.h.pump +627 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h +752 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-function-mockers.h.pump +227 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h +1097 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-generated-matchers.h.pump +346 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-matchers.h +4591 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-actions.h +162 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-more-matchers.h +92 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-nice-strict.h +215 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock-spec-builders.h +1985 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/gmock.h +101 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/README.md +16 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h +10 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-generated-actions.h.pump +12 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-matchers.h +36 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/custom/gmock-port.h +39 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-internal-utils.h +472 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-port.h +87 -0
- package/cpp/leveldb/third_party/googletest/googlemock/include/gmock/internal/gmock-pp.h +271 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/README.md +5 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/fuse_gmock_files.py +240 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/LICENSE +203 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README +34 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/README.cppclean +115 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/__init__.py +0 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/ast.py +1761 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class.py +248 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/gmock_class_test.py +540 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/keywords.py +56 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/tokenize.py +284 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/cpp/utils.py +37 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/generator/gmock_gen.py +30 -0
- package/cpp/leveldb/third_party/googletest/googlemock/scripts/pump.py +856 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-all.cc +46 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-cardinalities.cc +155 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-internal-utils.cc +200 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-matchers.cc +462 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock-spec-builders.cc +892 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock.cc +213 -0
- package/cpp/leveldb/third_party/googletest/googlemock/src/gmock_main.cc +72 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/BUILD.bazel +110 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-actions_test.cc +1507 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-cardinalities_test.cc +429 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc.cc +16 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_nc_test.py +43 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-function-mocker_test.cc +696 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-actions_test.cc +1064 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-function-mockers_test.cc +659 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-generated-matchers_test.cc +1323 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-internal-utils_test.cc +732 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-matchers_test.cc +6913 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-more-actions_test.cc +698 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-nice-strict_test.cc +500 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-port_test.cc +42 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp-string_test.cc +206 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-pp_test.cc +83 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock-spec-builders_test.cc +2775 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_all_test.cc +49 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_ex_test.cc +80 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test.py +104 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_leak_test_.cc +99 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link2_test.cc +39 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.cc +39 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_link_test.h +690 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test.py +183 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_.cc +309 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_output_test_golden.txt +317 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_stress_test.cc +240 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test.cc +181 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/gmock_test_utils.py +108 -0
- package/cpp/leveldb/third_party/googletest/googlemock/test/pump_test.py +182 -0
- package/cpp/leveldb/third_party/googletest/googletest/CMakeLists.txt +329 -0
- package/cpp/leveldb/third_party/googletest/googletest/CONTRIBUTORS +38 -0
- package/cpp/leveldb/third_party/googletest/googletest/LICENSE +28 -0
- package/cpp/leveldb/third_party/googletest/googletest/README.md +244 -0
- package/cpp/leveldb/third_party/googletest/googletest/cmake/Config.cmake.in +9 -0
- package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest.pc.in +9 -0
- package/cpp/leveldb/third_party/googletest/googletest/cmake/gtest_main.pc.in +10 -0
- package/cpp/leveldb/third_party/googletest/googletest/cmake/internal_utils.cmake +358 -0
- package/cpp/leveldb/third_party/googletest/googletest/cmake/libgtest.la.in +21 -0
- package/cpp/leveldb/third_party/googletest/googletest/docs/advanced.md +2567 -0
- package/cpp/leveldb/third_party/googletest/googletest/docs/faq.md +753 -0
- package/cpp/leveldb/third_party/googletest/googletest/docs/pkgconfig.md +219 -0
- package/cpp/leveldb/third_party/googletest/googletest/docs/primer.md +579 -0
- package/cpp/leveldb/third_party/googletest/googletest/docs/samples.md +22 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-death-test.h +343 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-matchers.h +750 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-message.h +219 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-param-test.h +514 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-printers.h +928 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-spi.h +238 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-test-part.h +184 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest-typed-test.h +337 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest.h +2477 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_pred_impl.h +359 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/gtest_prod.h +61 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/README.md +56 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-port.h +37 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest-printers.h +42 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/custom/gtest.h +37 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-death-test-internal.h +304 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-filepath.h +211 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-internal.h +1411 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-param-util.h +880 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port-arch.h +111 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-port.h +2227 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-string.h +171 -0
- package/cpp/leveldb/third_party/googletest/googletest/include/gtest/internal/gtest-type-util.h +183 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/prime_tables.h +126 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.cc +66 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample1.h +41 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample10_unittest.cc +139 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample1_unittest.cc +151 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.cc +54 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample2.h +81 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample2_unittest.cc +107 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample3-inl.h +172 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample3_unittest.cc +149 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.cc +54 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample4.h +53 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample4_unittest.cc +53 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample5_unittest.cc +196 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample6_unittest.cc +224 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample7_unittest.cc +117 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample8_unittest.cc +154 -0
- package/cpp/leveldb/third_party/googletest/googletest/samples/sample9_unittest.cc +156 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/README.md +5 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/common.py +83 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/fuse_gtest_files.py +253 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/gen_gtest_pred_impl.py +734 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/gtest-config.in +274 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/release_docs.py +158 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/run_with_path.py +32 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/upload.py +1402 -0
- package/cpp/leveldb/third_party/googletest/googletest/scripts/upload_gtest.py +78 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-all.cc +48 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-death-test.cc +1653 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-filepath.cc +382 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-internal-inl.h +1211 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-matchers.cc +97 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-port.cc +1399 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-printers.cc +442 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-test-part.cc +108 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest-typed-test.cc +118 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest.cc +6180 -0
- package/cpp/leveldb/third_party/googletest/googletest/src/gtest_main.cc +54 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/BUILD.bazel +529 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest.py +208 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-break-on-failure-unittest_.cc +86 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test.py +236 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-catch-exceptions-test_.cc +293 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test.py +127 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-color-test_.cc +62 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test-test.cc +1516 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-death-test_ex_test.cc +92 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test.py +117 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-env-var-test_.cc +122 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filepath-test.cc +649 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest.py +639 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-filter-unittest_.cc +137 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-outfiles-test.py +191 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-json-output-unittest.py +778 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest.py +205 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-list-tests-unittest_.cc +156 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-listener-test.cc +518 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-message-test.cc +158 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-options-test.cc +216 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test-golden-lin.txt +1137 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test.py +346 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-output-test_.cc +1149 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test.py +63 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name1-test_.cc +50 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test.py +62 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-invalid-name2-test_.cc +55 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.cc +1086 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test-test.h +51 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-param-test2-test.cc +61 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-port-test.cc +1272 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-printers-test.cc +1619 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test.py +323 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-shuffle-test_.cc +101 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test-part-test.cc +230 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-test2_test.cc +61 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test.py +168 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-throw-on-failure-test_.cc +71 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test.py +67 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/googletest-uninitialized-test_.cc +42 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test2_test.cc +44 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.cc +462 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest-typed-test_test.h +65 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest-unittest-api_test.cc +341 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_all_test.cc +46 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_assert_by_exception_test.cc +116 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_environment_test.cc +188 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test.py +170 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_help_test_.cc +45 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_json_test_utils.py +60 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest.py +141 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_list_output_unittest_.cc +51 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_main_unittest.cc +44 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_no_test_unittest.cc +54 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_pred_impl_unittest.cc +2427 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_premature_exit_test.cc +126 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_prod_test.cc +56 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_repeat_test.cc +233 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_check_output_test.py +59 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_environment_check_output_test.py +54 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_in_environment_setup_test.cc +49 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_skip_test.cc +55 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_sole_header_test.cc +56 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_stress_test.cc +248 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_macro_stack_footprint_test.cc +89 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_test_utils.py +314 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test.py +63 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_testbridge_test_.cc +43 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_throw_on_failure_ex_test.cc +90 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_unittest.cc +7496 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile1_test_.cc +43 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfile2_test_.cc +43 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_outfiles_test.py +135 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest.py +389 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_output_unittest_.cc +188 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/gtest_xml_test_utils.py +196 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/production.cc +35 -0
- package/cpp/leveldb/third_party/googletest/googletest/test/production.h +54 -0
- package/cpp/leveldb/third_party/googletest/library.json +66 -0
- package/cpp/leveldb/third_party/googletest/platformio.ini +47 -0
- package/cpp/leveldb/util/arena.cc +66 -0
- package/cpp/leveldb/util/arena.h +71 -0
- package/cpp/leveldb/util/arena_test.cc +66 -0
- package/cpp/leveldb/util/bloom.cc +92 -0
- package/cpp/leveldb/util/bloom_test.cc +159 -0
- package/cpp/leveldb/util/cache.cc +401 -0
- package/cpp/leveldb/util/cache_test.cc +229 -0
- package/cpp/leveldb/util/coding.cc +166 -0
- package/cpp/leveldb/util/coding.h +122 -0
- package/cpp/leveldb/util/coding_test.cc +198 -0
- package/cpp/leveldb/util/comparator.cc +75 -0
- package/cpp/leveldb/util/crc32c.cc +380 -0
- package/cpp/leveldb/util/crc32c.h +43 -0
- package/cpp/leveldb/util/crc32c_test.cc +61 -0
- package/cpp/leveldb/util/env.cc +108 -0
- package/cpp/leveldb/util/env_posix.cc +893 -0
- package/cpp/leveldb/util/env_posix_test.cc +353 -0
- package/cpp/leveldb/util/env_posix_test_helper.h +28 -0
- package/cpp/leveldb/util/env_test.cc +240 -0
- package/cpp/leveldb/util/env_windows.cc +796 -0
- package/cpp/leveldb/util/env_windows_test.cc +65 -0
- package/cpp/leveldb/util/env_windows_test_helper.h +25 -0
- package/cpp/leveldb/util/filter_policy.cc +11 -0
- package/cpp/leveldb/util/hash.cc +55 -0
- package/cpp/leveldb/util/hash.h +19 -0
- package/cpp/leveldb/util/hash_test.cc +46 -0
- package/cpp/leveldb/util/histogram.cc +272 -0
- package/cpp/leveldb/util/histogram.h +44 -0
- package/cpp/leveldb/util/logging.cc +82 -0
- package/cpp/leveldb/util/logging.h +44 -0
- package/cpp/leveldb/util/logging_test.cc +145 -0
- package/cpp/leveldb/util/mutexlock.h +39 -0
- package/cpp/leveldb/util/no_destructor.h +46 -0
- package/cpp/leveldb/util/no_destructor_test.cc +49 -0
- package/cpp/leveldb/util/options.cc +14 -0
- package/cpp/leveldb/util/posix_logger.h +130 -0
- package/cpp/leveldb/util/random.h +63 -0
- package/cpp/leveldb/util/status.cc +77 -0
- package/cpp/leveldb/util/status_test.cc +44 -0
- package/cpp/leveldb/util/testutil.cc +51 -0
- package/cpp/leveldb/util/testutil.h +82 -0
- package/cpp/leveldb/util/windows_logger.h +124 -0
- package/cpp/react-native-leveldb.cpp +694 -0
- package/cpp/react-native-leveldb.h +4 -0
- package/ios/Leveldb.h +9 -0
- package/ios/Leveldb.mm +35 -0
- package/ios/Leveldb.xcodeproj/project.pbxproj +288 -0
- package/lib/commonjs/fake.js +181 -0
- package/lib/commonjs/fake.js.map +1 -0
- package/lib/commonjs/fake.test.js +30 -0
- package/lib/commonjs/fake.test.js.map +1 -0
- package/lib/commonjs/index.js +172 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/module/fake.js +171 -0
- package/lib/module/fake.js.map +1 -0
- package/lib/module/fake.test.js +30 -0
- package/lib/module/fake.test.js.map +1 -0
- package/lib/module/index.js +165 -0
- package/lib/module/index.js.map +1 -0
- package/lib/typescript/fake.d.ts +34 -0
- package/lib/typescript/fake.d.ts.map +1 -0
- package/lib/typescript/fake.test.d.ts +2 -0
- package/lib/typescript/fake.test.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +72 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/package.json +157 -0
- package/rn-leveldb.podspec +30 -0
- package/src/fake.test.ts +37 -0
- package/src/fake.ts +203 -0
- package/src/index.ts +291 -0
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
4
|
+
|
|
5
|
+
#ifndef STORAGE_LEVELDB_DB_DB_IMPL_H_
|
|
6
|
+
#define STORAGE_LEVELDB_DB_DB_IMPL_H_
|
|
7
|
+
|
|
8
|
+
#include <atomic>
|
|
9
|
+
#include <deque>
|
|
10
|
+
#include <set>
|
|
11
|
+
#include <string>
|
|
12
|
+
|
|
13
|
+
#include "db/dbformat.h"
|
|
14
|
+
#include "db/log_writer.h"
|
|
15
|
+
#include "db/snapshot.h"
|
|
16
|
+
#include "leveldb/db.h"
|
|
17
|
+
#include "leveldb/env.h"
|
|
18
|
+
#include "port/port.h"
|
|
19
|
+
#include "port/thread_annotations.h"
|
|
20
|
+
|
|
21
|
+
namespace leveldb {
|
|
22
|
+
|
|
23
|
+
class MemTable;
|
|
24
|
+
class TableCache;
|
|
25
|
+
class Version;
|
|
26
|
+
class VersionEdit;
|
|
27
|
+
class VersionSet;
|
|
28
|
+
|
|
29
|
+
class DBImpl : public DB {
|
|
30
|
+
public:
|
|
31
|
+
DBImpl(const Options& options, const std::string& dbname);
|
|
32
|
+
|
|
33
|
+
DBImpl(const DBImpl&) = delete;
|
|
34
|
+
DBImpl& operator=(const DBImpl&) = delete;
|
|
35
|
+
|
|
36
|
+
~DBImpl() override;
|
|
37
|
+
|
|
38
|
+
// Implementations of the DB interface
|
|
39
|
+
Status Put(const WriteOptions&, const Slice& key,
|
|
40
|
+
const Slice& value) override;
|
|
41
|
+
Status Delete(const WriteOptions&, const Slice& key) override;
|
|
42
|
+
Status Write(const WriteOptions& options, WriteBatch* updates) override;
|
|
43
|
+
Status Get(const ReadOptions& options, const Slice& key,
|
|
44
|
+
std::string* value) override;
|
|
45
|
+
Iterator* NewIterator(const ReadOptions&) override;
|
|
46
|
+
const Snapshot* GetSnapshot() override;
|
|
47
|
+
void ReleaseSnapshot(const Snapshot* snapshot) override;
|
|
48
|
+
bool GetProperty(const Slice& property, std::string* value) override;
|
|
49
|
+
void GetApproximateSizes(const Range* range, int n, uint64_t* sizes) override;
|
|
50
|
+
void CompactRange(const Slice* begin, const Slice* end) override;
|
|
51
|
+
|
|
52
|
+
// Extra methods (for testing) that are not in the public DB interface
|
|
53
|
+
|
|
54
|
+
// Compact any files in the named level that overlap [*begin,*end]
|
|
55
|
+
void TEST_CompactRange(int level, const Slice* begin, const Slice* end);
|
|
56
|
+
|
|
57
|
+
// Force current memtable contents to be compacted.
|
|
58
|
+
Status TEST_CompactMemTable();
|
|
59
|
+
|
|
60
|
+
// Return an internal iterator over the current state of the database.
|
|
61
|
+
// The keys of this iterator are internal keys (see format.h).
|
|
62
|
+
// The returned iterator should be deleted when no longer needed.
|
|
63
|
+
Iterator* TEST_NewInternalIterator();
|
|
64
|
+
|
|
65
|
+
// Return the maximum overlapping data (in bytes) at next level for any
|
|
66
|
+
// file at a level >= 1.
|
|
67
|
+
int64_t TEST_MaxNextLevelOverlappingBytes();
|
|
68
|
+
|
|
69
|
+
// Record a sample of bytes read at the specified internal key.
|
|
70
|
+
// Samples are taken approximately once every config::kReadBytesPeriod
|
|
71
|
+
// bytes.
|
|
72
|
+
void RecordReadSample(Slice key);
|
|
73
|
+
|
|
74
|
+
private:
|
|
75
|
+
friend class DB;
|
|
76
|
+
struct CompactionState;
|
|
77
|
+
struct Writer;
|
|
78
|
+
|
|
79
|
+
// Information for a manual compaction
|
|
80
|
+
struct ManualCompaction {
|
|
81
|
+
int level;
|
|
82
|
+
bool done;
|
|
83
|
+
const InternalKey* begin; // null means beginning of key range
|
|
84
|
+
const InternalKey* end; // null means end of key range
|
|
85
|
+
InternalKey tmp_storage; // Used to keep track of compaction progress
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
// Per level compaction stats. stats_[level] stores the stats for
|
|
89
|
+
// compactions that produced data for the specified "level".
|
|
90
|
+
struct CompactionStats {
|
|
91
|
+
CompactionStats() : micros(0), bytes_read(0), bytes_written(0) {}
|
|
92
|
+
|
|
93
|
+
void Add(const CompactionStats& c) {
|
|
94
|
+
this->micros += c.micros;
|
|
95
|
+
this->bytes_read += c.bytes_read;
|
|
96
|
+
this->bytes_written += c.bytes_written;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
int64_t micros;
|
|
100
|
+
int64_t bytes_read;
|
|
101
|
+
int64_t bytes_written;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
Iterator* NewInternalIterator(const ReadOptions&,
|
|
105
|
+
SequenceNumber* latest_snapshot,
|
|
106
|
+
uint32_t* seed);
|
|
107
|
+
|
|
108
|
+
Status NewDB();
|
|
109
|
+
|
|
110
|
+
// Recover the descriptor from persistent storage. May do a significant
|
|
111
|
+
// amount of work to recover recently logged updates. Any changes to
|
|
112
|
+
// be made to the descriptor are added to *edit.
|
|
113
|
+
Status Recover(VersionEdit* edit, bool* save_manifest)
|
|
114
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
115
|
+
|
|
116
|
+
void MaybeIgnoreError(Status* s) const;
|
|
117
|
+
|
|
118
|
+
// Delete any unneeded files and stale in-memory entries.
|
|
119
|
+
void RemoveObsoleteFiles() EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
120
|
+
|
|
121
|
+
// Compact the in-memory write buffer to disk. Switches to a new
|
|
122
|
+
// log-file/memtable and writes a new descriptor iff successful.
|
|
123
|
+
// Errors are recorded in bg_error_.
|
|
124
|
+
void CompactMemTable() EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
125
|
+
|
|
126
|
+
Status RecoverLogFile(uint64_t log_number, bool last_log, bool* save_manifest,
|
|
127
|
+
VersionEdit* edit, SequenceNumber* max_sequence)
|
|
128
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
129
|
+
|
|
130
|
+
Status WriteLevel0Table(MemTable* mem, VersionEdit* edit, Version* base)
|
|
131
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
132
|
+
|
|
133
|
+
Status MakeRoomForWrite(bool force /* compact even if there is room? */)
|
|
134
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
135
|
+
WriteBatch* BuildBatchGroup(Writer** last_writer)
|
|
136
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
137
|
+
|
|
138
|
+
void RecordBackgroundError(const Status& s);
|
|
139
|
+
|
|
140
|
+
void MaybeScheduleCompaction() EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
141
|
+
static void BGWork(void* db);
|
|
142
|
+
void BackgroundCall();
|
|
143
|
+
void BackgroundCompaction() EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
144
|
+
void CleanupCompaction(CompactionState* compact)
|
|
145
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
146
|
+
Status DoCompactionWork(CompactionState* compact)
|
|
147
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
148
|
+
|
|
149
|
+
Status OpenCompactionOutputFile(CompactionState* compact);
|
|
150
|
+
Status FinishCompactionOutputFile(CompactionState* compact, Iterator* input);
|
|
151
|
+
Status InstallCompactionResults(CompactionState* compact)
|
|
152
|
+
EXCLUSIVE_LOCKS_REQUIRED(mutex_);
|
|
153
|
+
|
|
154
|
+
const Comparator* user_comparator() const {
|
|
155
|
+
return internal_comparator_.user_comparator();
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
// Constant after construction
|
|
159
|
+
Env* const env_;
|
|
160
|
+
const InternalKeyComparator internal_comparator_;
|
|
161
|
+
const InternalFilterPolicy internal_filter_policy_;
|
|
162
|
+
const Options options_; // options_.comparator == &internal_comparator_
|
|
163
|
+
const bool owns_info_log_;
|
|
164
|
+
const bool owns_cache_;
|
|
165
|
+
const std::string dbname_;
|
|
166
|
+
|
|
167
|
+
// table_cache_ provides its own synchronization
|
|
168
|
+
TableCache* const table_cache_;
|
|
169
|
+
|
|
170
|
+
// Lock over the persistent DB state. Non-null iff successfully acquired.
|
|
171
|
+
FileLock* db_lock_;
|
|
172
|
+
|
|
173
|
+
// State below is protected by mutex_
|
|
174
|
+
port::Mutex mutex_;
|
|
175
|
+
std::atomic<bool> shutting_down_;
|
|
176
|
+
port::CondVar background_work_finished_signal_ GUARDED_BY(mutex_);
|
|
177
|
+
MemTable* mem_;
|
|
178
|
+
MemTable* imm_ GUARDED_BY(mutex_); // Memtable being compacted
|
|
179
|
+
std::atomic<bool> has_imm_; // So bg thread can detect non-null imm_
|
|
180
|
+
WritableFile* logfile_;
|
|
181
|
+
uint64_t logfile_number_ GUARDED_BY(mutex_);
|
|
182
|
+
log::Writer* log_;
|
|
183
|
+
uint32_t seed_ GUARDED_BY(mutex_); // For sampling.
|
|
184
|
+
|
|
185
|
+
// Queue of writers.
|
|
186
|
+
std::deque<Writer*> writers_ GUARDED_BY(mutex_);
|
|
187
|
+
WriteBatch* tmp_batch_ GUARDED_BY(mutex_);
|
|
188
|
+
|
|
189
|
+
SnapshotList snapshots_ GUARDED_BY(mutex_);
|
|
190
|
+
|
|
191
|
+
// Set of table files to protect from deletion because they are
|
|
192
|
+
// part of ongoing compactions.
|
|
193
|
+
std::set<uint64_t> pending_outputs_ GUARDED_BY(mutex_);
|
|
194
|
+
|
|
195
|
+
// Has a background compaction been scheduled or is running?
|
|
196
|
+
bool background_compaction_scheduled_ GUARDED_BY(mutex_);
|
|
197
|
+
|
|
198
|
+
ManualCompaction* manual_compaction_ GUARDED_BY(mutex_);
|
|
199
|
+
|
|
200
|
+
VersionSet* const versions_ GUARDED_BY(mutex_);
|
|
201
|
+
|
|
202
|
+
// Have we encountered a background error in paranoid mode?
|
|
203
|
+
Status bg_error_ GUARDED_BY(mutex_);
|
|
204
|
+
|
|
205
|
+
CompactionStats stats_[config::kNumLevels] GUARDED_BY(mutex_);
|
|
206
|
+
};
|
|
207
|
+
|
|
208
|
+
// Sanitize db options. The caller should delete result.info_log if
|
|
209
|
+
// it is not equal to src.info_log.
|
|
210
|
+
Options SanitizeOptions(const std::string& db,
|
|
211
|
+
const InternalKeyComparator* icmp,
|
|
212
|
+
const InternalFilterPolicy* ipolicy,
|
|
213
|
+
const Options& src);
|
|
214
|
+
|
|
215
|
+
} // namespace leveldb
|
|
216
|
+
|
|
217
|
+
#endif // STORAGE_LEVELDB_DB_DB_IMPL_H_
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
4
|
+
|
|
5
|
+
#include "db/db_iter.h"
|
|
6
|
+
|
|
7
|
+
#include "db/db_impl.h"
|
|
8
|
+
#include "db/dbformat.h"
|
|
9
|
+
#include "db/filename.h"
|
|
10
|
+
#include "leveldb/env.h"
|
|
11
|
+
#include "leveldb/iterator.h"
|
|
12
|
+
#include "port/port.h"
|
|
13
|
+
#include "util/logging.h"
|
|
14
|
+
#include "util/mutexlock.h"
|
|
15
|
+
#include "util/random.h"
|
|
16
|
+
|
|
17
|
+
namespace leveldb {
|
|
18
|
+
|
|
19
|
+
#if 0
|
|
20
|
+
static void DumpInternalIter(Iterator* iter) {
|
|
21
|
+
for (iter->SeekToFirst(); iter->Valid(); iter->Next()) {
|
|
22
|
+
ParsedInternalKey k;
|
|
23
|
+
if (!ParseInternalKey(iter->key(), &k)) {
|
|
24
|
+
std::fprintf(stderr, "Corrupt '%s'\n", EscapeString(iter->key()).c_str());
|
|
25
|
+
} else {
|
|
26
|
+
std::fprintf(stderr, "@ '%s'\n", k.DebugString().c_str());
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
namespace {
|
|
33
|
+
|
|
34
|
+
// Memtables and sstables that make the DB representation contain
|
|
35
|
+
// (userkey,seq,type) => uservalue entries. DBIter
|
|
36
|
+
// combines multiple entries for the same userkey found in the DB
|
|
37
|
+
// representation into a single entry while accounting for sequence
|
|
38
|
+
// numbers, deletion markers, overwrites, etc.
|
|
39
|
+
class DBIter : public Iterator {
|
|
40
|
+
public:
|
|
41
|
+
// Which direction is the iterator currently moving?
|
|
42
|
+
// (1) When moving forward, the internal iterator is positioned at
|
|
43
|
+
// the exact entry that yields this->key(), this->value()
|
|
44
|
+
// (2) When moving backwards, the internal iterator is positioned
|
|
45
|
+
// just before all entries whose user key == this->key().
|
|
46
|
+
enum Direction { kForward, kReverse };
|
|
47
|
+
|
|
48
|
+
DBIter(DBImpl* db, const Comparator* cmp, Iterator* iter, SequenceNumber s,
|
|
49
|
+
uint32_t seed)
|
|
50
|
+
: db_(db),
|
|
51
|
+
user_comparator_(cmp),
|
|
52
|
+
iter_(iter),
|
|
53
|
+
sequence_(s),
|
|
54
|
+
direction_(kForward),
|
|
55
|
+
valid_(false),
|
|
56
|
+
rnd_(seed),
|
|
57
|
+
bytes_until_read_sampling_(RandomCompactionPeriod()) {}
|
|
58
|
+
|
|
59
|
+
DBIter(const DBIter&) = delete;
|
|
60
|
+
DBIter& operator=(const DBIter&) = delete;
|
|
61
|
+
|
|
62
|
+
~DBIter() override { delete iter_; }
|
|
63
|
+
bool Valid() const override { return valid_; }
|
|
64
|
+
Slice key() const override {
|
|
65
|
+
assert(valid_);
|
|
66
|
+
return (direction_ == kForward) ? ExtractUserKey(iter_->key()) : saved_key_;
|
|
67
|
+
}
|
|
68
|
+
Slice value() const override {
|
|
69
|
+
assert(valid_);
|
|
70
|
+
return (direction_ == kForward) ? iter_->value() : saved_value_;
|
|
71
|
+
}
|
|
72
|
+
Status status() const override {
|
|
73
|
+
if (status_.ok()) {
|
|
74
|
+
return iter_->status();
|
|
75
|
+
} else {
|
|
76
|
+
return status_;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
void Next() override;
|
|
81
|
+
void Prev() override;
|
|
82
|
+
void Seek(const Slice& target) override;
|
|
83
|
+
void SeekToFirst() override;
|
|
84
|
+
void SeekToLast() override;
|
|
85
|
+
|
|
86
|
+
private:
|
|
87
|
+
void FindNextUserEntry(bool skipping, std::string* skip);
|
|
88
|
+
void FindPrevUserEntry();
|
|
89
|
+
bool ParseKey(ParsedInternalKey* key);
|
|
90
|
+
|
|
91
|
+
inline void SaveKey(const Slice& k, std::string* dst) {
|
|
92
|
+
dst->assign(k.data(), k.size());
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
inline void ClearSavedValue() {
|
|
96
|
+
if (saved_value_.capacity() > 1048576) {
|
|
97
|
+
std::string empty;
|
|
98
|
+
swap(empty, saved_value_);
|
|
99
|
+
} else {
|
|
100
|
+
saved_value_.clear();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
// Picks the number of bytes that can be read until a compaction is scheduled.
|
|
105
|
+
size_t RandomCompactionPeriod() {
|
|
106
|
+
return rnd_.Uniform(2 * config::kReadBytesPeriod);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
DBImpl* db_;
|
|
110
|
+
const Comparator* const user_comparator_;
|
|
111
|
+
Iterator* const iter_;
|
|
112
|
+
SequenceNumber const sequence_;
|
|
113
|
+
Status status_;
|
|
114
|
+
std::string saved_key_; // == current key when direction_==kReverse
|
|
115
|
+
std::string saved_value_; // == current raw value when direction_==kReverse
|
|
116
|
+
Direction direction_;
|
|
117
|
+
bool valid_;
|
|
118
|
+
Random rnd_;
|
|
119
|
+
size_t bytes_until_read_sampling_;
|
|
120
|
+
};
|
|
121
|
+
|
|
122
|
+
inline bool DBIter::ParseKey(ParsedInternalKey* ikey) {
|
|
123
|
+
Slice k = iter_->key();
|
|
124
|
+
|
|
125
|
+
size_t bytes_read = k.size() + iter_->value().size();
|
|
126
|
+
while (bytes_until_read_sampling_ < bytes_read) {
|
|
127
|
+
bytes_until_read_sampling_ += RandomCompactionPeriod();
|
|
128
|
+
db_->RecordReadSample(k);
|
|
129
|
+
}
|
|
130
|
+
assert(bytes_until_read_sampling_ >= bytes_read);
|
|
131
|
+
bytes_until_read_sampling_ -= bytes_read;
|
|
132
|
+
|
|
133
|
+
if (!ParseInternalKey(k, ikey)) {
|
|
134
|
+
status_ = Status::Corruption("corrupted internal key in DBIter");
|
|
135
|
+
return false;
|
|
136
|
+
} else {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
void DBIter::Next() {
|
|
142
|
+
assert(valid_);
|
|
143
|
+
|
|
144
|
+
if (direction_ == kReverse) { // Switch directions?
|
|
145
|
+
direction_ = kForward;
|
|
146
|
+
// iter_ is pointing just before the entries for this->key(),
|
|
147
|
+
// so advance into the range of entries for this->key() and then
|
|
148
|
+
// use the normal skipping code below.
|
|
149
|
+
if (!iter_->Valid()) {
|
|
150
|
+
iter_->SeekToFirst();
|
|
151
|
+
} else {
|
|
152
|
+
iter_->Next();
|
|
153
|
+
}
|
|
154
|
+
if (!iter_->Valid()) {
|
|
155
|
+
valid_ = false;
|
|
156
|
+
saved_key_.clear();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
// saved_key_ already contains the key to skip past.
|
|
160
|
+
} else {
|
|
161
|
+
// Store in saved_key_ the current key so we skip it below.
|
|
162
|
+
SaveKey(ExtractUserKey(iter_->key()), &saved_key_);
|
|
163
|
+
|
|
164
|
+
// iter_ is pointing to current key. We can now safely move to the next to
|
|
165
|
+
// avoid checking current key.
|
|
166
|
+
iter_->Next();
|
|
167
|
+
if (!iter_->Valid()) {
|
|
168
|
+
valid_ = false;
|
|
169
|
+
saved_key_.clear();
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
FindNextUserEntry(true, &saved_key_);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
void DBIter::FindNextUserEntry(bool skipping, std::string* skip) {
|
|
178
|
+
// Loop until we hit an acceptable entry to yield
|
|
179
|
+
assert(iter_->Valid());
|
|
180
|
+
assert(direction_ == kForward);
|
|
181
|
+
do {
|
|
182
|
+
ParsedInternalKey ikey;
|
|
183
|
+
if (ParseKey(&ikey) && ikey.sequence <= sequence_) {
|
|
184
|
+
switch (ikey.type) {
|
|
185
|
+
case kTypeDeletion:
|
|
186
|
+
// Arrange to skip all upcoming entries for this key since
|
|
187
|
+
// they are hidden by this deletion.
|
|
188
|
+
SaveKey(ikey.user_key, skip);
|
|
189
|
+
skipping = true;
|
|
190
|
+
break;
|
|
191
|
+
case kTypeValue:
|
|
192
|
+
if (skipping &&
|
|
193
|
+
user_comparator_->Compare(ikey.user_key, *skip) <= 0) {
|
|
194
|
+
// Entry hidden
|
|
195
|
+
} else {
|
|
196
|
+
valid_ = true;
|
|
197
|
+
saved_key_.clear();
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
break;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
iter_->Next();
|
|
204
|
+
} while (iter_->Valid());
|
|
205
|
+
saved_key_.clear();
|
|
206
|
+
valid_ = false;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
void DBIter::Prev() {
|
|
210
|
+
assert(valid_);
|
|
211
|
+
|
|
212
|
+
if (direction_ == kForward) { // Switch directions?
|
|
213
|
+
// iter_ is pointing at the current entry. Scan backwards until
|
|
214
|
+
// the key changes so we can use the normal reverse scanning code.
|
|
215
|
+
assert(iter_->Valid()); // Otherwise valid_ would have been false
|
|
216
|
+
SaveKey(ExtractUserKey(iter_->key()), &saved_key_);
|
|
217
|
+
while (true) {
|
|
218
|
+
iter_->Prev();
|
|
219
|
+
if (!iter_->Valid()) {
|
|
220
|
+
valid_ = false;
|
|
221
|
+
saved_key_.clear();
|
|
222
|
+
ClearSavedValue();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
if (user_comparator_->Compare(ExtractUserKey(iter_->key()), saved_key_) <
|
|
226
|
+
0) {
|
|
227
|
+
break;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
direction_ = kReverse;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
FindPrevUserEntry();
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
void DBIter::FindPrevUserEntry() {
|
|
237
|
+
assert(direction_ == kReverse);
|
|
238
|
+
|
|
239
|
+
ValueType value_type = kTypeDeletion;
|
|
240
|
+
if (iter_->Valid()) {
|
|
241
|
+
do {
|
|
242
|
+
ParsedInternalKey ikey;
|
|
243
|
+
if (ParseKey(&ikey) && ikey.sequence <= sequence_) {
|
|
244
|
+
if ((value_type != kTypeDeletion) &&
|
|
245
|
+
user_comparator_->Compare(ikey.user_key, saved_key_) < 0) {
|
|
246
|
+
// We encountered a non-deleted value in entries for previous keys,
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
value_type = ikey.type;
|
|
250
|
+
if (value_type == kTypeDeletion) {
|
|
251
|
+
saved_key_.clear();
|
|
252
|
+
ClearSavedValue();
|
|
253
|
+
} else {
|
|
254
|
+
Slice raw_value = iter_->value();
|
|
255
|
+
if (saved_value_.capacity() > raw_value.size() + 1048576) {
|
|
256
|
+
std::string empty;
|
|
257
|
+
swap(empty, saved_value_);
|
|
258
|
+
}
|
|
259
|
+
SaveKey(ExtractUserKey(iter_->key()), &saved_key_);
|
|
260
|
+
saved_value_.assign(raw_value.data(), raw_value.size());
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
iter_->Prev();
|
|
264
|
+
} while (iter_->Valid());
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (value_type == kTypeDeletion) {
|
|
268
|
+
// End
|
|
269
|
+
valid_ = false;
|
|
270
|
+
saved_key_.clear();
|
|
271
|
+
ClearSavedValue();
|
|
272
|
+
direction_ = kForward;
|
|
273
|
+
} else {
|
|
274
|
+
valid_ = true;
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
void DBIter::Seek(const Slice& target) {
|
|
279
|
+
direction_ = kForward;
|
|
280
|
+
ClearSavedValue();
|
|
281
|
+
saved_key_.clear();
|
|
282
|
+
AppendInternalKey(&saved_key_,
|
|
283
|
+
ParsedInternalKey(target, sequence_, kValueTypeForSeek));
|
|
284
|
+
iter_->Seek(saved_key_);
|
|
285
|
+
if (iter_->Valid()) {
|
|
286
|
+
FindNextUserEntry(false, &saved_key_ /* temporary storage */);
|
|
287
|
+
} else {
|
|
288
|
+
valid_ = false;
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
void DBIter::SeekToFirst() {
|
|
293
|
+
direction_ = kForward;
|
|
294
|
+
ClearSavedValue();
|
|
295
|
+
iter_->SeekToFirst();
|
|
296
|
+
if (iter_->Valid()) {
|
|
297
|
+
FindNextUserEntry(false, &saved_key_ /* temporary storage */);
|
|
298
|
+
} else {
|
|
299
|
+
valid_ = false;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
void DBIter::SeekToLast() {
|
|
304
|
+
direction_ = kReverse;
|
|
305
|
+
ClearSavedValue();
|
|
306
|
+
iter_->SeekToLast();
|
|
307
|
+
FindPrevUserEntry();
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
} // anonymous namespace
|
|
311
|
+
|
|
312
|
+
Iterator* NewDBIterator(DBImpl* db, const Comparator* user_key_comparator,
|
|
313
|
+
Iterator* internal_iter, SequenceNumber sequence,
|
|
314
|
+
uint32_t seed) {
|
|
315
|
+
return new DBIter(db, user_key_comparator, internal_iter, sequence, seed);
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
} // namespace leveldb
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
// Copyright (c) 2011 The LevelDB Authors. All rights reserved.
|
|
2
|
+
// Use of this source code is governed by a BSD-style license that can be
|
|
3
|
+
// found in the LICENSE file. See the AUTHORS file for names of contributors.
|
|
4
|
+
|
|
5
|
+
#ifndef STORAGE_LEVELDB_DB_DB_ITER_H_
|
|
6
|
+
#define STORAGE_LEVELDB_DB_DB_ITER_H_
|
|
7
|
+
|
|
8
|
+
#include <cstdint>
|
|
9
|
+
|
|
10
|
+
#include "db/dbformat.h"
|
|
11
|
+
#include "leveldb/db.h"
|
|
12
|
+
|
|
13
|
+
namespace leveldb {
|
|
14
|
+
|
|
15
|
+
class DBImpl;
|
|
16
|
+
|
|
17
|
+
// Return a new iterator that converts internal keys (yielded by
|
|
18
|
+
// "*internal_iter") that were live at the specified "sequence" number
|
|
19
|
+
// into appropriate user keys.
|
|
20
|
+
Iterator* NewDBIterator(DBImpl* db, const Comparator* user_key_comparator,
|
|
21
|
+
Iterator* internal_iter, SequenceNumber sequence,
|
|
22
|
+
uint32_t seed);
|
|
23
|
+
|
|
24
|
+
} // namespace leveldb
|
|
25
|
+
|
|
26
|
+
#endif // STORAGE_LEVELDB_DB_DB_ITER_H_
|