ffi-radix_tree 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 244a7a454320674c40f5adb8cb897980b9d73286
4
- data.tar.gz: 28840c6a4d0678bfafce07badeab64f428090bf6
3
+ metadata.gz: 0b481cbe2fe92e746154ef5d7f640eaa360b2ad1
4
+ data.tar.gz: 2c31d231c98984ea3ac623c673fea32f3d9f49e3
5
5
  SHA512:
6
- metadata.gz: 72340475d6bf28b58071b96534a0f23f44ed912240fd15ca2ed87917e7a128fb897903143cadf3567fd553849b6cade64c743705eb930d22c01e612e7e0b8c3d
7
- data.tar.gz: 905d9ef2f2732aaf5a1e1d2c08a4dd51fa4c604b87980fe515dbc0928c06ddbbb87829626777595889ccdaaf1092ac2cac6469e7bc025cfb7a5c8859674b24f0
6
+ metadata.gz: 1569a95cd03b4dee2136b26175e83a3732572b7aaf30af692169d0831f4748fb103603de25414160b54f0a56b59c5b194e75d8ae819cdf58d3c032a5869a4c16
7
+ data.tar.gz: bdc72d457259f6fb473f0690974fefbc10fb36ff121cfc6dd75c2ae8de517caf86e27ff7107af7d028244053b2ac514c856e22d296ed06794d634815e4096c6d
data/.gitignore CHANGED
@@ -1,5 +1,6 @@
1
1
  *.ruby-*
2
2
  *.so
3
+ *.dylib
3
4
  *.o
4
5
  CMakeCache.txt
5
6
  /vendor/radixtree/CMakeFiles
@@ -86,11 +86,20 @@ module FFI
86
86
  DESTROY_METHOD = ::FFI::RadixTree.method(:destroy)
87
87
  FREE_METHOD = ::FFI::RadixTree.method(:match_free)
88
88
 
89
+ def self.destroy!(tree)
90
+ tree.destroy! unless tree.nil?
91
+ end
92
+
89
93
  def initialize
90
94
  @ptr = ::FFI::AutoPointer.new(::FFI::RadixTree.create, DESTROY_METHOD)
91
95
  @first_character_present = {}
92
96
  end
93
97
 
98
+ def destroy!
99
+ ::FFI::RadixTree.destroy(@ptr) unless @ptr.nil?
100
+ @ptr = nil
101
+ end
102
+
94
103
  def has_key?(key)
95
104
  ::FFI::RadixTree.has_key(@ptr, key)
96
105
  end
@@ -111,6 +120,8 @@ module FFI
111
120
  bytesize = byte_length.read_int
112
121
  return nil if bytesize <= 0
113
122
  ::MessagePack.unpack(byte_pointer.get_bytes(0, bytesize))
123
+ ensure
124
+ ::FFI::RadixTree.match_free(byte_pointer) unless byte_pointer.nil?
114
125
  end
115
126
 
116
127
  def longest_prefix(string)
@@ -119,6 +130,8 @@ module FFI
119
130
  p_out = ::FFI::AutoPointer.new(p_out, FREE_METHOD) unless p_out.nil?
120
131
  value.force_encoding("UTF-8") unless value.nil?
121
132
  value
133
+ ensure
134
+ ::FFI::RadixTree.match_free(p_out) unless p_out.nil?
122
135
  end
123
136
 
124
137
  def longest_prefix_value(string)
@@ -128,6 +141,8 @@ module FFI
128
141
  bytesize = byte_length.read_int
129
142
  return nil if bytesize <= 0
130
143
  ::MessagePack.unpack(byte_pointer.get_bytes(0, bytesize))
144
+ ensure
145
+ ::FFI::RadixTree.match_free(byte_pointer) unless byte_pointer.nil?
131
146
  end
132
147
  end
133
148
  end
@@ -1,5 +1,5 @@
1
1
  module FFI
2
2
  module RadixTree
3
- VERSION = "0.1.4"
3
+ VERSION = "0.1.5"
4
4
  end
5
5
  end
@@ -34,6 +34,7 @@ bool has_key(radix_tree<std::string, std::vector<char>>* map_pointer, const char
34
34
  void match_free(const char* match) {
35
35
  if (match != NULL) {
36
36
  delete[] match;
37
+ match = NULL;
37
38
  }
38
39
  }
39
40
 
@@ -97,5 +98,6 @@ void insert(radix_tree<std::string, std::vector<char>>* map_pointer, const char*
97
98
 
98
99
  void destroy(radix_tree<std::string, std::vector<char>>* map_pointer) {
99
100
  delete map_pointer;
101
+ map_pointer = NULL;
100
102
  }
101
103
  EXTERN_C_END
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ffi-radix_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Dewitt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-14 00:00:00.000000000 Z
11
+ date: 2017-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  requirements: []
128
128
  rubyforge_project:
129
- rubygems_version: 2.6.13
129
+ rubygems_version: 2.5.1
130
130
  signing_key:
131
131
  specification_version: 4
132
132
  summary: radix tree implementation in c++ with FFI bindings