code: def unmarshal( compoundSignature, data, offset = 0, lendian = True ):
      
      values       = list()
      start_offset = offset
  
      for ct in genCompleteTypes( compoundSignature ):
          tcode   = ct[0]
          offset += len(pad[tcode]( offset ))
                  
          nbytes, value = unmarshallers[ tcode ]( ct, data, offset, lendian )
  
          offset += nbytes
          values.append( value )
  
  
      return offset - start_offset, values
docs: Unmarshals DBus encoded data.
  
      @type compoundSignature: C{string}
      @param compoundSignature: DBus signature specifying the encoded value types
  
      @type data: C{string}
      @param data: Binary data
  
      @type offset: C{int}
      @param offset: Offset within data at which data for compoundSignature
                     starts (used during recursion)
  
      @type lendian: C{bool}
      @param lendian: True if data is encoded in little-endian format
      
      @returns: (number_of_bytes_decoded, list_of_values)