class DBus::Type::Type
D-Bus type conversion class¶ ↑
Helper class for representing a D-Bus type.
Attributes
members[R]
Return contained member types.
sigtype[R]
Returns the signature type number.
Public Class Methods
new(sigtype)
click to toggle source
Create a new type instance for type number sigtype.
# File lib/dbus/type.rb, line 57 def initialize(sigtype) if !TypeMapping.keys.member?(sigtype) raise SignatureException, "Unknown key in signature: #{sigtype.chr}" end @sigtype = sigtype @members = [] end
Public Instance Methods
<<(a)
click to toggle source
Add a new member type a.
# File lib/dbus/type.rb, line 89 def <<(a) if ![STRUCT, ARRAY, DICT_ENTRY].member?(@sigtype) raise SignatureException end raise SignatureException if @sigtype == ARRAY && !@members.empty? if @sigtype == DICT_ENTRY if @members.size == 2 raise SignatureException, "Dict entries have exactly two members" end if @members.empty? if [STRUCT, ARRAY, DICT_ENTRY].member?(a.sigtype) raise SignatureException, "Dict entry keys must be basic types" end end end @members << a end
alignment()
click to toggle source
Return the required alignment for the type.
# File lib/dbus/type.rb, line 66 def alignment TypeMapping[@sigtype].last end
child()
click to toggle source
Return the first contained member type.
# File lib/dbus/type.rb, line 108 def child @members[0] end
inspect()
click to toggle source
# File lib/dbus/type.rb, line 112 def inspect s = TypeMapping[@sigtype].first if [STRUCT, ARRAY].member?(@sigtype) s += ": " + @members.inspect end s end
to_s()
click to toggle source
Return a string representation of the type according to the D-Bus specification.
# File lib/dbus/type.rb, line 72 def to_s case @sigtype when STRUCT "(" + @members.collect(&:to_s).join + ")" when ARRAY "a" + child.to_s when DICT_ENTRY "{" + @members.collect(&:to_s).join + "}" else if !TypeMapping.keys.member?(@sigtype) raise NotImplementedError end @sigtype.chr end end