Class: LibSL::LLUUID
- Inherits:
-
Object
- Object
- LibSL::LLUUID
- Defined in:
- lib/types.rb
Instance Attribute Summary collapse
-
#uuid ⇒ Object
readonly
Returns the value of attribute uuid.
Class Method Summary collapse
Instance Method Summary collapse
- #encode ⇒ Object
-
#initialize(uuid = nil) ⇒ LLUUID
constructor
A new instance of LLUUID.
- #to_bytes ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(uuid = nil) ⇒ LLUUID
Returns a new instance of LLUUID.
396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 |
# File 'lib/types.rb', line 396 def initialize(uuid=nil) if uuid.nil? # Generate a random UUID uuid = [ rand(0x100000000), rand(0x100000000), rand(0x100000000), rand(0x100000000), ].pack "N4" uuid[6] &= 0b00001111 uuid[6] |= 48 uuid[8] &= 0b00111111 uuid[8] |= 0b10000000 end raise "Invalid uuid format" unless uuid.is_a? String @uuid = if uuid.length == 36 and uuid.count("-") == 4 then # String representation (Guid) uuid.delete("-").scan(/../).map{|s| s.to_i(16)} else # Unpack from binary string uuid.unpack('C16') end end |
Instance Attribute Details
#uuid ⇒ Object (readonly)
Returns the value of attribute uuid.
381 382 383 |
# File 'lib/types.rb', line 381 def uuid @uuid end |
Class Method Details
.decode(data) ⇒ Object
383 384 385 386 |
# File 'lib/types.rb', line 383 def self.decode(data) data = data.unpack 'a16a*' return self.new(data[0]), data[1] end |
.null ⇒ Object
388 389 390 |
# File 'lib/types.rb', line 388 def self.null() return self.new("00000000-0000-0000-0000-000000000000") end |
Instance Method Details
#encode ⇒ Object
392 393 394 |
# File 'lib/types.rb', line 392 def encode() to_bytes end |
#to_bytes ⇒ Object
425 426 427 |
# File 'lib/types.rb', line 425 def to_bytes() @uuid.pack('C16') end |
#to_s ⇒ Object
421 422 423 |
# File 'lib/types.rb', line 421 def to_s() sprintf('%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x', *(@uuid)).upcase end |