ffi-radix_tree 0.1.4 → 0.1.5

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.
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