Class: Expanse::Map
Class Method Summary collapse
Instance Method Summary collapse
- #[](key) ⇒ Object (also: #get)
- #[]=(key, val) ⇒ Object (also: #set)
- #clear ⇒ Object
- #delete(key) ⇒ Object
- #each ⇒ Object
- #first ⇒ Object
-
#initialize ⇒ Map
constructor
A new instance of Map.
- #key?(key) ⇒ Boolean (also: #include?)
- #next(key) ⇒ Object
- #size ⇒ Object (also: #length)
Constructor Details
Class Method Details
.finalize(ptr) ⇒ Object
209 210 211 |
# File 'lib/expanse.rb', line 209 def self.finalize(ptr) proc { Native.expanse_map_free(ptr) if ptr && !ptr.null? } end |
Instance Method Details
#[](key) ⇒ Object Also known as: get
219 220 221 222 223 224 |
# File 'lib/expanse.rb', line 219 def [](key) buf = Fiddle::Pointer.malloc(8) if Native.expanse_map_get(@ptr, key, buf) != 0 buf.to_str(8).unpack1("Q<") end end |
#[]=(key, val) ⇒ Object Also known as: set
213 214 215 216 |
# File 'lib/expanse.rb', line 213 def []=(key, val) Native.expanse_map_insert(@ptr, key, val, nil) val end |
#clear ⇒ Object
244 245 246 247 |
# File 'lib/expanse.rb', line 244 def clear Native.expanse_map_clear(@ptr) self end |
#delete(key) ⇒ Object
227 228 229 230 231 232 |
# File 'lib/expanse.rb', line 227 def delete(key) buf = Fiddle::Pointer.malloc(8) if Native.expanse_map_remove(@ptr, key, buf) != 0 buf.to_str(8).unpack1("Q<") end end |
#each ⇒ Object
265 266 267 268 269 270 271 272 |
# File 'lib/expanse.rb', line 265 def each return enum_for(:each) unless block_given? pair = first while pair yield pair[0], pair[1] pair = self.next(pair[0]) end end |
#first ⇒ Object
249 250 251 252 253 254 255 |
# File 'lib/expanse.rb', line 249 def first k_buf = Fiddle::Pointer.malloc(8) v_buf = Fiddle::Pointer.malloc(8) if Native.expanse_map_first(@ptr, k_buf, v_buf) != 0 [k_buf.to_str(8).unpack1("Q<"), v_buf.to_str(8).unpack1("Q<")] end end |
#key?(key) ⇒ Boolean Also known as: include?
234 235 236 |
# File 'lib/expanse.rb', line 234 def key?(key) !self[key].nil? end |
#next(key) ⇒ Object
257 258 259 260 261 262 263 |
# File 'lib/expanse.rb', line 257 def next(key) k_buf = Fiddle::Pointer.malloc(8) v_buf = Fiddle::Pointer.malloc(8) if Native.expanse_map_next_after(@ptr, key, k_buf, v_buf) != 0 [k_buf.to_str(8).unpack1("Q<"), v_buf.to_str(8).unpack1("Q<")] end end |
#size ⇒ Object Also known as: length
239 240 241 |
# File 'lib/expanse.rb', line 239 def size Native.expanse_map_len(@ptr) end |