# 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
    57 def initialize(sigtype)
    58   if !TypeMapping.keys.member?(sigtype)
    59     raise SignatureException, "Unknown key in signature: #{sigtype.chr}"
    60   end
    61   @sigtype = sigtype
    62   @members = []
    63 end

### Public Instance Methods

<<(a) click to toggle source

Add a new member type a.

        # File lib/dbus/type.rb
     89 def <<(a)
     90   if ![STRUCT, ARRAY, DICT_ENTRY].member?(@sigtype)
     91     raise SignatureException
     92   end
     93   raise SignatureException if @sigtype == ARRAY && !@members.empty?
     94   if @sigtype == DICT_ENTRY
     95     if @members.size == 2
     96       raise SignatureException, "Dict entries have exactly two members"
     97     end
     98     if @members.empty?
     99       if [STRUCT, ARRAY, DICT_ENTRY].member?(a.sigtype)
    100         raise SignatureException, "Dict entry keys must be basic types"
    101       end
    102     end
    103   end
    104   @members << a
    105 end

alignment() click to toggle source

Return the required alignment for the type.

       # File lib/dbus/type.rb
    66 def alignment
    67   TypeMapping[@sigtype].last
    68 end

child() click to toggle source

Return the first contained member type.

        # File lib/dbus/type.rb
    108 def child
    109   @members[0]
    110 end

inspect() click to toggle source

        # File lib/dbus/type.rb
    112 def inspect
    113   s = TypeMapping[@sigtype].first
    114   if [STRUCT, ARRAY].member?(@sigtype)
    115     s += ": " + @members.inspect
    116   end
    117   s
    118 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
    72 def to_s
    73   case @sigtype
    74   when STRUCT
    75     "(" + @members.collect(&:to_s).join + ")"
    76   when ARRAY
    77     "a" + child.to_s
    78   when DICT_ENTRY
    79     "{" + @members.collect(&:to_s).join + "}"
    80   else
    81     if !TypeMapping.keys.member?(@sigtype)
    82       raise NotImplementedError
    83     end
    84     @sigtype.chr
    85   end
    86 end