leveldb-ruby 0.14 → 0.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/LICENSE +24 -0
  2. data/README +60 -16
  3. data/ext/leveldb/extconf.rb +1 -1
  4. data/ext/leveldb/leveldb.cc +187 -18
  5. data/leveldb/Makefile +82 -96
  6. data/leveldb/build_detect_platform +137 -51
  7. data/leveldb/db/c.cc +110 -0
  8. data/leveldb/db/db_bench.cc +105 -4
  9. data/leveldb/db/db_impl.cc +135 -45
  10. data/leveldb/db/db_impl.h +12 -10
  11. data/leveldb/db/db_test.cc +666 -431
  12. data/leveldb/db/dbformat.cc +20 -0
  13. data/leveldb/db/dbformat.h +12 -0
  14. data/leveldb/db/repair.cc +3 -1
  15. data/leveldb/db/skiplist.h +2 -1
  16. data/leveldb/db/table_cache.cc +42 -16
  17. data/leveldb/db/table_cache.h +11 -0
  18. data/leveldb/db/version_set.cc +46 -41
  19. data/leveldb/db/version_set.h +9 -0
  20. data/leveldb/db/write_batch.cc +13 -4
  21. data/leveldb/db/write_batch_internal.h +2 -0
  22. data/leveldb/db/write_batch_test.cc +31 -0
  23. data/leveldb/include/leveldb/c.h +29 -0
  24. data/leveldb/include/leveldb/db.h +2 -1
  25. data/leveldb/include/leveldb/filter_policy.h +70 -0
  26. data/leveldb/include/leveldb/options.h +8 -0
  27. data/leveldb/include/leveldb/status.h +6 -0
  28. data/leveldb/include/leveldb/table.h +15 -0
  29. data/leveldb/include/leveldb/table_builder.h +1 -0
  30. data/leveldb/port/atomic_pointer.h +13 -5
  31. data/leveldb/port/port.h +0 -2
  32. data/leveldb/port/port_example.h +10 -0
  33. data/leveldb/port/port_posix.cc +4 -0
  34. data/leveldb/port/port_posix.h +24 -9
  35. data/leveldb/table/block.cc +8 -4
  36. data/leveldb/table/block.h +3 -2
  37. data/leveldb/table/filter_block.cc +111 -0
  38. data/leveldb/table/filter_block.h +68 -0
  39. data/leveldb/table/filter_block_test.cc +128 -0
  40. data/leveldb/table/format.cc +17 -7
  41. data/leveldb/table/format.h +9 -4
  42. data/leveldb/table/table.cc +107 -6
  43. data/leveldb/table/table_builder.cc +49 -6
  44. data/leveldb/table/table_test.cc +8 -24
  45. data/leveldb/util/bloom.cc +95 -0
  46. data/leveldb/util/bloom_test.cc +159 -0
  47. data/leveldb/util/coding_test.cc +23 -0
  48. data/leveldb/util/comparator.cc +8 -3
  49. data/leveldb/util/env_posix.cc +46 -4
  50. data/leveldb/util/filter_policy.cc +11 -0
  51. data/leveldb/util/options.cc +2 -1
  52. data/lib/leveldb.rb +31 -5
  53. metadata +227 -109
  54. data/leveldb/port/port_android.cc +0 -64
  55. data/leveldb/port/port_android.h +0 -156
@@ -51,6 +51,29 @@ TEST(Coding, Fixed64) {
51
51
  }
52
52
  }
53
53
 
54
+ // Test that encoding routines generate little-endian encodings
55
+ TEST(Coding, EncodingOutput) {
56
+ std::string dst;
57
+ PutFixed32(&dst, 0x04030201);
58
+ ASSERT_EQ(4, dst.size());
59
+ ASSERT_EQ(0x01, static_cast<int>(dst[0]));
60
+ ASSERT_EQ(0x02, static_cast<int>(dst[1]));
61
+ ASSERT_EQ(0x03, static_cast<int>(dst[2]));
62
+ ASSERT_EQ(0x04, static_cast<int>(dst[3]));
63
+
64
+ dst.clear();
65
+ PutFixed64(&dst, 0x0807060504030201ull);
66
+ ASSERT_EQ(8, dst.size());
67
+ ASSERT_EQ(0x01, static_cast<int>(dst[0]));
68
+ ASSERT_EQ(0x02, static_cast<int>(dst[1]));
69
+ ASSERT_EQ(0x03, static_cast<int>(dst[2]));
70
+ ASSERT_EQ(0x04, static_cast<int>(dst[3]));
71
+ ASSERT_EQ(0x05, static_cast<int>(dst[4]));
72
+ ASSERT_EQ(0x06, static_cast<int>(dst[5]));
73
+ ASSERT_EQ(0x07, static_cast<int>(dst[6]));
74
+ ASSERT_EQ(0x08, static_cast<int>(dst[7]));
75
+ }
76
+
54
77
  TEST(Coding, Varint32) {
55
78
  std::string s;
56
79
  for (uint32_t i = 0; i < (32 * 32); i++) {
@@ -6,6 +6,7 @@
6
6
  #include <stdint.h>
7
7
  #include "leveldb/comparator.h"
8
8
  #include "leveldb/slice.h"
9
+ #include "port/port.h"
9
10
  #include "util/logging.h"
10
11
 
11
12
  namespace leveldb {
@@ -65,11 +66,15 @@ class BytewiseComparatorImpl : public Comparator {
65
66
  };
66
67
  } // namespace
67
68
 
68
- // Intentionally not destroyed to prevent destructor racing
69
- // with background threads.
70
- static const Comparator* bytewise = new BytewiseComparatorImpl;
69
+ static port::OnceType once = LEVELDB_ONCE_INIT;
70
+ static const Comparator* bytewise;
71
+
72
+ static void InitModule() {
73
+ bytewise = new BytewiseComparatorImpl;
74
+ }
71
75
 
72
76
  const Comparator* BytewiseComparator() {
77
+ port::InitOnce(&once, InitModule);
73
78
  return bytewise;
74
79
  }
75
80
 
@@ -66,6 +66,7 @@ class PosixSequentialFile: public SequentialFile {
66
66
  }
67
67
  };
68
68
 
69
+ // pread() based random-access
69
70
  class PosixRandomAccessFile: public RandomAccessFile {
70
71
  private:
71
72
  std::string filename_;
@@ -89,6 +90,32 @@ class PosixRandomAccessFile: public RandomAccessFile {
89
90
  }
90
91
  };
91
92
 
93
+ // mmap() based random-access
94
+ class PosixMmapReadableFile: public RandomAccessFile {
95
+ private:
96
+ std::string filename_;
97
+ void* mmapped_region_;
98
+ size_t length_;
99
+
100
+ public:
101
+ // base[0,length-1] contains the mmapped contents of the file.
102
+ PosixMmapReadableFile(const std::string& fname, void* base, size_t length)
103
+ : filename_(fname), mmapped_region_(base), length_(length) { }
104
+ virtual ~PosixMmapReadableFile() { munmap(mmapped_region_, length_); }
105
+
106
+ virtual Status Read(uint64_t offset, size_t n, Slice* result,
107
+ char* scratch) const {
108
+ Status s;
109
+ if (offset + n > length_) {
110
+ *result = Slice();
111
+ s = IOError(filename_, EINVAL);
112
+ } else {
113
+ *result = Slice(reinterpret_cast<char*>(mmapped_region_) + offset, n);
114
+ }
115
+ return s;
116
+ }
117
+ };
118
+
92
119
  // We preallocate up to an extra megabyte and use memcpy to append new
93
120
  // data to the file. This is safe since we either properly close the
94
121
  // file before reading from it, or for log files, the reading code
@@ -297,13 +324,28 @@ class PosixEnv : public Env {
297
324
 
298
325
  virtual Status NewRandomAccessFile(const std::string& fname,
299
326
  RandomAccessFile** result) {
327
+ *result = NULL;
328
+ Status s;
300
329
  int fd = open(fname.c_str(), O_RDONLY);
301
330
  if (fd < 0) {
302
- *result = NULL;
303
- return IOError(fname, errno);
331
+ s = IOError(fname, errno);
332
+ } else if (sizeof(void*) >= 8) {
333
+ // Use mmap when virtual address-space is plentiful.
334
+ uint64_t size;
335
+ s = GetFileSize(fname, &size);
336
+ if (s.ok()) {
337
+ void* base = mmap(NULL, size, PROT_READ, MAP_SHARED, fd, 0);
338
+ if (base != MAP_FAILED) {
339
+ *result = new PosixMmapReadableFile(fname, base, size);
340
+ } else {
341
+ s = IOError(fname, errno);
342
+ }
343
+ }
344
+ close(fd);
345
+ } else {
346
+ *result = new PosixRandomAccessFile(fname, fd);
304
347
  }
305
- *result = new PosixRandomAccessFile(fname, fd);
306
- return Status::OK();
348
+ return s;
307
349
  }
308
350
 
309
351
  virtual Status NewWritableFile(const std::string& fname,
@@ -0,0 +1,11 @@
1
+ // Copyright (c) 2012 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 "leveldb/filter_policy.h"
6
+
7
+ namespace leveldb {
8
+
9
+ FilterPolicy::~FilterPolicy() { }
10
+
11
+ } // namespace leveldb
@@ -21,7 +21,8 @@ Options::Options()
21
21
  block_cache(NULL),
22
22
  block_size(4096),
23
23
  block_restart_interval(16),
24
- compression(kSnappyCompression) {
24
+ compression(kSnappyCompression),
25
+ filter_policy(NULL) {
25
26
  }
26
27
 
27
28
 
@@ -6,20 +6,29 @@ class DB
6
6
  class << self
7
7
  ## Loads or creates a LevelDB database as necessary, stored on disk at
8
8
  ## +pathname+.
9
- def new pathname
10
- make path_string(pathname), true, false
9
+ ##
10
+ ## See #make for possible options.
11
+ def new pathname, options={}
12
+ make path_string(pathname),
13
+ options.merge(:create_if_missing => true,
14
+ :error_if_exists => false)
11
15
  end
12
16
 
13
17
  ## Creates a new LevelDB database stored on disk at +pathname+. Throws an
14
18
  ## exception if the database already exists.
15
- def create pathname
16
- make path_string(pathname), true, true
19
+ ##
20
+ ## See #make for possible options.
21
+ def create pathname, options={}
22
+ make path_string(pathname),
23
+ options.merge(:create_if_missing => true,
24
+ :error_if_exists => true)
17
25
  end
18
26
 
19
27
  ## Loads a LevelDB database stored on disk at +pathname+. Throws an
20
28
  ## exception unless the database already exists.
21
29
  def load pathname
22
- make path_string(pathname), false, false
30
+ make path_string(pathname),
31
+ { :create_if_missing => false, :error_if_exists => false }
23
32
  end
24
33
 
25
34
  private
@@ -31,12 +40,14 @@ class DB
31
40
  end
32
41
 
33
42
  attr_reader :pathname
43
+ attr_reader :options
34
44
 
35
45
  alias :includes? :exists?
36
46
  alias :contains? :exists?
37
47
  alias :member? :exists?
38
48
  alias :[] :get
39
49
  alias :[]= :put
50
+ alias :close! :close
40
51
 
41
52
  def each(*args, &block)
42
53
  i = iterator(*args)
@@ -73,4 +84,19 @@ class WriteBatch
73
84
  private :new
74
85
  end
75
86
  end
87
+
88
+ class Options
89
+ DEFAULT_MAX_OPEN_FILES = 1000
90
+ DEFAULT_WRITE_BUFFER_SIZE = 4 * 1024 * 1024
91
+ DEFAULT_BLOCK_SIZE = 4 * 1024
92
+ DEFAULT_BLOCK_RESTART_INTERVAL = 16
93
+ DEFAULT_COMPRESSION = LevelDB::CompressionType::SnappyCompression
94
+
95
+ attr_reader :create_if_missing, :error_if_exists,
96
+ :block_cache_size, :paranoid_checks,
97
+ :write_buffer_size, :max_open_files,
98
+ :block_size, :block_restart_interval,
99
+ :compression
100
+ end
101
+
76
102
  end # module LevelDB
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leveldb-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.14'
4
+ version: '0.15'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-12 00:00:00.000000000 Z
12
+ date: 2012-06-25 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: LevelDB-Ruby is a Ruby binding to LevelDB.
15
15
  email: wmorgan-leveldb-ruby-gemspec@masanjin.net
@@ -21,119 +21,237 @@ extra_rdoc_files:
21
21
  - ext/leveldb/leveldb.cc
22
22
  files:
23
23
  - README
24
+ - LICENSE
24
25
  - ext/leveldb/extconf.rb
25
26
  - ext/leveldb/platform.rb
26
27
  - lib/leveldb.rb
27
28
  - ext/leveldb/leveldb.cc
28
29
  - leveldb/Makefile
29
30
  - leveldb/build_detect_platform
30
- - leveldb/db/builder.cc
31
- - leveldb/db/builder.h
32
- - leveldb/db/c.cc
33
- - leveldb/db/corruption_test.cc
34
- - leveldb/db/db_bench.cc
35
- - leveldb/db/db_impl.cc
36
- - leveldb/db/db_impl.h
37
- - leveldb/db/db_iter.cc
38
- - leveldb/db/db_iter.h
39
- - leveldb/db/db_test.cc
40
- - leveldb/db/dbformat.cc
41
- - leveldb/db/dbformat.h
42
- - leveldb/db/dbformat_test.cc
43
- - leveldb/db/filename.cc
44
- - leveldb/db/filename.h
45
- - leveldb/db/filename_test.cc
46
- - leveldb/db/log_format.h
47
- - leveldb/db/log_reader.cc
48
- - leveldb/db/log_reader.h
49
- - leveldb/db/log_test.cc
50
- - leveldb/db/log_writer.cc
51
- - leveldb/db/log_writer.h
52
- - leveldb/db/memtable.cc
53
- - leveldb/db/memtable.h
54
- - leveldb/db/repair.cc
55
- - leveldb/db/skiplist.h
56
- - leveldb/db/skiplist_test.cc
57
- - leveldb/db/snapshot.h
58
- - leveldb/db/table_cache.cc
59
- - leveldb/db/table_cache.h
60
- - leveldb/db/version_edit.cc
61
- - leveldb/db/version_edit.h
62
- - leveldb/db/version_edit_test.cc
63
- - leveldb/db/version_set.cc
64
- - leveldb/db/version_set.h
65
- - leveldb/db/version_set_test.cc
66
- - leveldb/db/write_batch.cc
67
- - leveldb/db/write_batch_internal.h
68
- - leveldb/db/write_batch_test.cc
69
- - leveldb/helpers/memenv/memenv.cc
70
- - leveldb/helpers/memenv/memenv.h
71
- - leveldb/helpers/memenv/memenv_test.cc
72
- - leveldb/include/leveldb/c.h
73
- - leveldb/include/leveldb/cache.h
74
- - leveldb/include/leveldb/comparator.h
75
- - leveldb/include/leveldb/db.h
76
- - leveldb/include/leveldb/env.h
77
- - leveldb/include/leveldb/iterator.h
78
- - leveldb/include/leveldb/options.h
79
- - leveldb/include/leveldb/slice.h
80
- - leveldb/include/leveldb/status.h
81
- - leveldb/include/leveldb/table.h
82
- - leveldb/include/leveldb/table_builder.h
83
- - leveldb/include/leveldb/write_batch.h
84
- - leveldb/port/atomic_pointer.h
85
- - leveldb/port/port.h
86
- - leveldb/port/port_android.cc
87
- - leveldb/port/port_android.h
88
- - leveldb/port/port_example.h
89
- - leveldb/port/port_posix.cc
90
- - leveldb/port/port_posix.h
91
- - leveldb/port/win/stdint.h
92
- - leveldb/table/block.cc
93
- - leveldb/table/block.h
94
- - leveldb/table/block_builder.cc
95
- - leveldb/table/block_builder.h
96
- - leveldb/table/format.cc
97
- - leveldb/table/format.h
98
- - leveldb/table/iterator.cc
99
- - leveldb/table/iterator_wrapper.h
100
- - leveldb/table/merger.cc
101
- - leveldb/table/merger.h
102
- - leveldb/table/table.cc
103
- - leveldb/table/table_builder.cc
104
- - leveldb/table/table_test.cc
105
- - leveldb/table/two_level_iterator.cc
106
- - leveldb/table/two_level_iterator.h
107
- - leveldb/util/arena.cc
108
- - leveldb/util/arena.h
109
- - leveldb/util/arena_test.cc
110
- - leveldb/util/cache.cc
111
- - leveldb/util/cache_test.cc
112
- - leveldb/util/coding.cc
113
- - leveldb/util/coding.h
114
- - leveldb/util/coding_test.cc
115
- - leveldb/util/comparator.cc
116
- - leveldb/util/crc32c.cc
117
- - leveldb/util/crc32c.h
118
- - leveldb/util/crc32c_test.cc
119
- - leveldb/util/env.cc
120
- - leveldb/util/env_posix.cc
121
- - leveldb/util/env_test.cc
122
- - leveldb/util/hash.cc
123
- - leveldb/util/hash.h
124
- - leveldb/util/histogram.cc
125
- - leveldb/util/histogram.h
126
- - leveldb/util/logging.cc
127
- - leveldb/util/logging.h
128
- - leveldb/util/mutexlock.h
129
- - leveldb/util/options.cc
130
- - leveldb/util/posix_logger.h
131
- - leveldb/util/random.h
132
- - leveldb/util/status.cc
133
- - leveldb/util/testharness.cc
134
- - leveldb/util/testharness.h
135
- - leveldb/util/testutil.cc
136
- - leveldb/util/testutil.h
31
+ - !binary |-
32
+ bGV2ZWxkYi9kYi9idWlsZGVyLmNj
33
+ - !binary |-
34
+ bGV2ZWxkYi9kYi9idWlsZGVyLmg=
35
+ - !binary |-
36
+ bGV2ZWxkYi9kYi9jLmNj
37
+ - !binary |-
38
+ bGV2ZWxkYi9kYi9jb3JydXB0aW9uX3Rlc3QuY2M=
39
+ - !binary |-
40
+ bGV2ZWxkYi9kYi9kYl9iZW5jaC5jYw==
41
+ - !binary |-
42
+ bGV2ZWxkYi9kYi9kYl9pbXBsLmNj
43
+ - !binary |-
44
+ bGV2ZWxkYi9kYi9kYl9pbXBsLmg=
45
+ - !binary |-
46
+ bGV2ZWxkYi9kYi9kYl9pdGVyLmNj
47
+ - !binary |-
48
+ bGV2ZWxkYi9kYi9kYl9pdGVyLmg=
49
+ - !binary |-
50
+ bGV2ZWxkYi9kYi9kYl90ZXN0LmNj
51
+ - !binary |-
52
+ bGV2ZWxkYi9kYi9kYmZvcm1hdC5jYw==
53
+ - !binary |-
54
+ bGV2ZWxkYi9kYi9kYmZvcm1hdC5o
55
+ - !binary |-
56
+ bGV2ZWxkYi9kYi9kYmZvcm1hdF90ZXN0LmNj
57
+ - !binary |-
58
+ bGV2ZWxkYi9kYi9maWxlbmFtZS5jYw==
59
+ - !binary |-
60
+ bGV2ZWxkYi9kYi9maWxlbmFtZS5o
61
+ - !binary |-
62
+ bGV2ZWxkYi9kYi9maWxlbmFtZV90ZXN0LmNj
63
+ - !binary |-
64
+ bGV2ZWxkYi9kYi9sb2dfZm9ybWF0Lmg=
65
+ - !binary |-
66
+ bGV2ZWxkYi9kYi9sb2dfcmVhZGVyLmNj
67
+ - !binary |-
68
+ bGV2ZWxkYi9kYi9sb2dfcmVhZGVyLmg=
69
+ - !binary |-
70
+ bGV2ZWxkYi9kYi9sb2dfdGVzdC5jYw==
71
+ - !binary |-
72
+ bGV2ZWxkYi9kYi9sb2dfd3JpdGVyLmNj
73
+ - !binary |-
74
+ bGV2ZWxkYi9kYi9sb2dfd3JpdGVyLmg=
75
+ - !binary |-
76
+ bGV2ZWxkYi9kYi9tZW10YWJsZS5jYw==
77
+ - !binary |-
78
+ bGV2ZWxkYi9kYi9tZW10YWJsZS5o
79
+ - !binary |-
80
+ bGV2ZWxkYi9kYi9yZXBhaXIuY2M=
81
+ - !binary |-
82
+ bGV2ZWxkYi9kYi9za2lwbGlzdC5o
83
+ - !binary |-
84
+ bGV2ZWxkYi9kYi9za2lwbGlzdF90ZXN0LmNj
85
+ - !binary |-
86
+ bGV2ZWxkYi9kYi9zbmFwc2hvdC5o
87
+ - !binary |-
88
+ bGV2ZWxkYi9kYi90YWJsZV9jYWNoZS5jYw==
89
+ - !binary |-
90
+ bGV2ZWxkYi9kYi90YWJsZV9jYWNoZS5o
91
+ - !binary |-
92
+ bGV2ZWxkYi9kYi92ZXJzaW9uX2VkaXQuY2M=
93
+ - !binary |-
94
+ bGV2ZWxkYi9kYi92ZXJzaW9uX2VkaXQuaA==
95
+ - !binary |-
96
+ bGV2ZWxkYi9kYi92ZXJzaW9uX2VkaXRfdGVzdC5jYw==
97
+ - !binary |-
98
+ bGV2ZWxkYi9kYi92ZXJzaW9uX3NldC5jYw==
99
+ - !binary |-
100
+ bGV2ZWxkYi9kYi92ZXJzaW9uX3NldC5o
101
+ - !binary |-
102
+ bGV2ZWxkYi9kYi92ZXJzaW9uX3NldF90ZXN0LmNj
103
+ - !binary |-
104
+ bGV2ZWxkYi9kYi93cml0ZV9iYXRjaC5jYw==
105
+ - !binary |-
106
+ bGV2ZWxkYi9kYi93cml0ZV9iYXRjaF9pbnRlcm5hbC5o
107
+ - !binary |-
108
+ bGV2ZWxkYi9kYi93cml0ZV9iYXRjaF90ZXN0LmNj
109
+ - !binary |-
110
+ bGV2ZWxkYi9oZWxwZXJzL21lbWVudi9tZW1lbnYuY2M=
111
+ - !binary |-
112
+ bGV2ZWxkYi9oZWxwZXJzL21lbWVudi9tZW1lbnYuaA==
113
+ - !binary |-
114
+ bGV2ZWxkYi9oZWxwZXJzL21lbWVudi9tZW1lbnZfdGVzdC5jYw==
115
+ - !binary |-
116
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvYy5o
117
+ - !binary |-
118
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvY2FjaGUuaA==
119
+ - !binary |-
120
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvY29tcGFyYXRvci5o
121
+ - !binary |-
122
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvZGIuaA==
123
+ - !binary |-
124
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvZW52Lmg=
125
+ - !binary |-
126
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvZmlsdGVyX3BvbGljeS5o
127
+ - !binary |-
128
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvaXRlcmF0b3IuaA==
129
+ - !binary |-
130
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvb3B0aW9ucy5o
131
+ - !binary |-
132
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvc2xpY2UuaA==
133
+ - !binary |-
134
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvc3RhdHVzLmg=
135
+ - !binary |-
136
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvdGFibGUuaA==
137
+ - !binary |-
138
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvdGFibGVfYnVpbGRlci5o
139
+ - !binary |-
140
+ bGV2ZWxkYi9pbmNsdWRlL2xldmVsZGIvd3JpdGVfYmF0Y2guaA==
141
+ - !binary |-
142
+ bGV2ZWxkYi9wb3J0L2F0b21pY19wb2ludGVyLmg=
143
+ - !binary |-
144
+ bGV2ZWxkYi9wb3J0L3BvcnQuaA==
145
+ - !binary |-
146
+ bGV2ZWxkYi9wb3J0L3BvcnRfZXhhbXBsZS5o
147
+ - !binary |-
148
+ bGV2ZWxkYi9wb3J0L3BvcnRfcG9zaXguY2M=
149
+ - !binary |-
150
+ bGV2ZWxkYi9wb3J0L3BvcnRfcG9zaXguaA==
151
+ - !binary |-
152
+ bGV2ZWxkYi9wb3J0L3dpbi9zdGRpbnQuaA==
153
+ - !binary |-
154
+ bGV2ZWxkYi90YWJsZS9ibG9jay5jYw==
155
+ - !binary |-
156
+ bGV2ZWxkYi90YWJsZS9ibG9jay5o
157
+ - !binary |-
158
+ bGV2ZWxkYi90YWJsZS9ibG9ja19idWlsZGVyLmNj
159
+ - !binary |-
160
+ bGV2ZWxkYi90YWJsZS9ibG9ja19idWlsZGVyLmg=
161
+ - !binary |-
162
+ bGV2ZWxkYi90YWJsZS9maWx0ZXJfYmxvY2suY2M=
163
+ - !binary |-
164
+ bGV2ZWxkYi90YWJsZS9maWx0ZXJfYmxvY2suaA==
165
+ - !binary |-
166
+ bGV2ZWxkYi90YWJsZS9maWx0ZXJfYmxvY2tfdGVzdC5jYw==
167
+ - !binary |-
168
+ bGV2ZWxkYi90YWJsZS9mb3JtYXQuY2M=
169
+ - !binary |-
170
+ bGV2ZWxkYi90YWJsZS9mb3JtYXQuaA==
171
+ - !binary |-
172
+ bGV2ZWxkYi90YWJsZS9pdGVyYXRvci5jYw==
173
+ - !binary |-
174
+ bGV2ZWxkYi90YWJsZS9pdGVyYXRvcl93cmFwcGVyLmg=
175
+ - !binary |-
176
+ bGV2ZWxkYi90YWJsZS9tZXJnZXIuY2M=
177
+ - !binary |-
178
+ bGV2ZWxkYi90YWJsZS9tZXJnZXIuaA==
179
+ - !binary |-
180
+ bGV2ZWxkYi90YWJsZS90YWJsZS5jYw==
181
+ - !binary |-
182
+ bGV2ZWxkYi90YWJsZS90YWJsZV9idWlsZGVyLmNj
183
+ - !binary |-
184
+ bGV2ZWxkYi90YWJsZS90YWJsZV90ZXN0LmNj
185
+ - !binary |-
186
+ bGV2ZWxkYi90YWJsZS90d29fbGV2ZWxfaXRlcmF0b3IuY2M=
187
+ - !binary |-
188
+ bGV2ZWxkYi90YWJsZS90d29fbGV2ZWxfaXRlcmF0b3IuaA==
189
+ - !binary |-
190
+ bGV2ZWxkYi91dGlsL2FyZW5hLmNj
191
+ - !binary |-
192
+ bGV2ZWxkYi91dGlsL2FyZW5hLmg=
193
+ - !binary |-
194
+ bGV2ZWxkYi91dGlsL2FyZW5hX3Rlc3QuY2M=
195
+ - !binary |-
196
+ bGV2ZWxkYi91dGlsL2Jsb29tLmNj
197
+ - !binary |-
198
+ bGV2ZWxkYi91dGlsL2Jsb29tX3Rlc3QuY2M=
199
+ - !binary |-
200
+ bGV2ZWxkYi91dGlsL2NhY2hlLmNj
201
+ - !binary |-
202
+ bGV2ZWxkYi91dGlsL2NhY2hlX3Rlc3QuY2M=
203
+ - !binary |-
204
+ bGV2ZWxkYi91dGlsL2NvZGluZy5jYw==
205
+ - !binary |-
206
+ bGV2ZWxkYi91dGlsL2NvZGluZy5o
207
+ - !binary |-
208
+ bGV2ZWxkYi91dGlsL2NvZGluZ190ZXN0LmNj
209
+ - !binary |-
210
+ bGV2ZWxkYi91dGlsL2NvbXBhcmF0b3IuY2M=
211
+ - !binary |-
212
+ bGV2ZWxkYi91dGlsL2NyYzMyYy5jYw==
213
+ - !binary |-
214
+ bGV2ZWxkYi91dGlsL2NyYzMyYy5o
215
+ - !binary |-
216
+ bGV2ZWxkYi91dGlsL2NyYzMyY190ZXN0LmNj
217
+ - !binary |-
218
+ bGV2ZWxkYi91dGlsL2Vudi5jYw==
219
+ - !binary |-
220
+ bGV2ZWxkYi91dGlsL2Vudl9wb3NpeC5jYw==
221
+ - !binary |-
222
+ bGV2ZWxkYi91dGlsL2Vudl90ZXN0LmNj
223
+ - !binary |-
224
+ bGV2ZWxkYi91dGlsL2ZpbHRlcl9wb2xpY3kuY2M=
225
+ - !binary |-
226
+ bGV2ZWxkYi91dGlsL2hhc2guY2M=
227
+ - !binary |-
228
+ bGV2ZWxkYi91dGlsL2hhc2guaA==
229
+ - !binary |-
230
+ bGV2ZWxkYi91dGlsL2hpc3RvZ3JhbS5jYw==
231
+ - !binary |-
232
+ bGV2ZWxkYi91dGlsL2hpc3RvZ3JhbS5o
233
+ - !binary |-
234
+ bGV2ZWxkYi91dGlsL2xvZ2dpbmcuY2M=
235
+ - !binary |-
236
+ bGV2ZWxkYi91dGlsL2xvZ2dpbmcuaA==
237
+ - !binary |-
238
+ bGV2ZWxkYi91dGlsL211dGV4bG9jay5o
239
+ - !binary |-
240
+ bGV2ZWxkYi91dGlsL29wdGlvbnMuY2M=
241
+ - !binary |-
242
+ bGV2ZWxkYi91dGlsL3Bvc2l4X2xvZ2dlci5o
243
+ - !binary |-
244
+ bGV2ZWxkYi91dGlsL3JhbmRvbS5o
245
+ - !binary |-
246
+ bGV2ZWxkYi91dGlsL3N0YXR1cy5jYw==
247
+ - !binary |-
248
+ bGV2ZWxkYi91dGlsL3Rlc3RoYXJuZXNzLmNj
249
+ - !binary |-
250
+ bGV2ZWxkYi91dGlsL3Rlc3RoYXJuZXNzLmg=
251
+ - !binary |-
252
+ bGV2ZWxkYi91dGlsL3Rlc3R1dGlsLmNj
253
+ - !binary |-
254
+ bGV2ZWxkYi91dGlsL3Rlc3R1dGlsLmg=
137
255
  homepage: http://github.com/wmorgan/leveldb-ruby
138
256
  licenses: []
139
257
  post_install_message: