Class: Expanse::StrMap

Inherits:
Object
  • Object
show all
Defined in:
lib/expanse.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeStrMap

Returns a new instance of StrMap.



288
289
290
291
# File 'lib/expanse.rb', line 288

def initialize
  @ptr = Native.expanse_strmap_new
  ObjectSpace.define_finalizer(self, self.class.finalize(@ptr))
end

Class Method Details

.finalize(ptr) ⇒ Object



293
294
295
# File 'lib/expanse.rb', line 293

def self.finalize(ptr)
  proc { Native.expanse_strmap_free(ptr) if ptr && !ptr.null? }
end

Instance Method Details

#[](key) ⇒ Object Also known as: get



304
305
306
307
308
309
310
# File 'lib/expanse.rb', line 304

def [](key)
  s = key.to_s
  buf = Fiddle::Pointer.malloc(8)
  if Native.expanse_strmap_get(@ptr, s, buf) != 0
    buf.to_str(8).unpack1("Q<")
  end
end

#[]=(key, val) ⇒ Object Also known as: set



297
298
299
300
301
# File 'lib/expanse.rb', line 297

def []=(key, val)
  s = key.to_s
  Native.expanse_strmap_insert(@ptr, s, val, nil)
  val
end

#clearObject



329
330
331
332
# File 'lib/expanse.rb', line 329

def clear
  Native.expanse_strmap_clear(@ptr)
  self
end

#delete(key) ⇒ Object



313
314
315
316
317
318
319
# File 'lib/expanse.rb', line 313

def delete(key)
  s = key.to_s
  buf = Fiddle::Pointer.malloc(8)
  if Native.expanse_strmap_remove(@ptr, s, buf) != 0
    buf.to_str(8).unpack1("Q<")
  end
end

#key?(key) ⇒ Boolean

Returns:

  • (Boolean)


321
322
323
# File 'lib/expanse.rb', line 321

def key?(key)
  !self[key].nil?
end

#sizeObject



325
326
327
# File 'lib/expanse.rb', line 325

def size
  Native.expanse_strmap_len(@ptr)
end