b0VIM 7.2      [LA_g  mjj29                                   ianthe                                  ~mjj29/scm/dbus-java/org/freedesktop/dbus/Message.java                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       utf-8 3210    #"! U                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 tp           \                            l       ]                     b                            f       +                    Y                                                      A                                  8                           F                    6       J                                                                          8                           g                           T       E             	       H                    
       d                           1       E                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     ad          \               i                T  S  3            }  g  N  M  *          P  O  K            g  C    
  
  
  r
  9
  
  	  	  	  v	  F	  	          b  $        y  J            Z  #        Z  '        Y  %        Q        ~  I                                       public static final String DICT_ENTRY1_STRING="{";       public static final String DICT_ENTRY_STRING="e";       public static final String STRUCT2_STRING=")";       public static final String STRUCT1_STRING="(";       public static final String STRUCT_STRING="r";       public static final String VARIANT_STRING="v";       public static final String ARRAY_STRING="a";       public static final String SIGNATURE_STRING="g";       public static final String OBJECT_PATH_STRING="o";       public static final String STRING_STRING="s";       public static final String FLOAT_STRING="f";       public static final String DOUBLE_STRING="d";       public static final String UINT64_STRING="t";       public static final String INT64_STRING="x";       public static final String UINT32_STRING="u";       public static final String INT32_STRING="i";       public static final String UINT16_STRING="q";       public static final String INT16_STRING="n";       public static final String BOOLEAN_STRING="b";       public static final String BYTE_STRING="y";    public static interface ArgumentType {     * as a byte or as a String (the _STRING version) */     * There are two constants for each argument type,     /** Defines constants for each argument type.    }       public static final byte SIGNATURE = 8;       public static final byte SENDER = 7;       public static final byte DESTINATION = 6;       public static final byte REPLY_SERIAL = 5;       public static final byte ERROR_NAME = 4;       public static final byte MEMBER = 3;       public static final byte INTERFACE = 2;       public static final byte PATH = 1;    public static interface HeaderField {    /** Defines constants for each valid header field type. */    public static final byte PROTOCOL = 1;    /** The current protocol major version. */    }       public static final byte SIGNAL = 4;       public static final byte ERROR = 3;       public static final byte METHOD_RETURN = 2;       public static final byte METHOD_CALL = 1;    public static interface MessageType {    /** Defines constants for each message type. */    }       public static final byte ASYNC = 0x40;       public static final byte NO_AUTO_START = 0x02;       public static final byte NO_REPLY_EXPECTED = 0x01;    public static interface Flags {    /** Defines constants representing the flags which can be set on a message. */    }       public static final byte LITTLE = 'l';       public static final byte BIG = 'B';    public static interface Endian {    /** Defines constants representing the endianness of the message. */ { public class Message  */  * This class deals with all the marshalling to/from the wire format.  * Superclass of all messages which are sent over the Bus. /**  import org.freedesktop.dbus.exceptions.UnknownTypeCodeException; import org.freedesktop.dbus.exceptions.MarshallingException; import org.freedesktop.dbus.exceptions.DBusException;  import cx.ath.matthew.utils.Hexdump; import cx.ath.matthew.debug.Debug;  import java.util.Vector; import java.util.Map; import java.util.List; import java.util.HashMap; import java.util.Arrays; import java.text.MessageFormat; import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.lang.reflect.Array;  import static org.freedesktop.dbus.Gettext._;  package org.freedesktop.dbus; */    Full licence texts are included in the COPYING file with this program.     Academic Free Licence Version 2.1.    under the terms of either the GNU Lesser General Public License Version 2 or the    This program is free software; you can redistribute it and/or modify it     Copyright (c) 2005-2006 Matthew Johnson    D-Bus Java Implementation /* ad    	     1           ~  ]  W              {  B  <        u  O  G  3  .          S  N  4          R     
  
  
  ~
  _
  3
  "
  
  	  	  	  	  	  	  	                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          }    }       }          appendBytes(body);          pad((byte) 8);          append("a(yv)", (Object) newhead);          }             i++;             newhead[i][1] = headers.get(b);             newhead[i][0] = b;             newhead[i] = new Object[2];          for (Byte b: headers.keySet()) {          int i = 0;          Object[][] newhead = new Object[headers.size()][];          headers.put(HeaderField.SENDER, source);          append("yyyyuu", big ? Endian.BIG : Endian.LITTLE, type, flags, protover, bodylen, serial);          preallocate(12);          bytecounter = 0;          bufferuse = 0;          wiredata = new byte[BUFFERINCREMENT][];       if (null != body) {    {    public void setSource(String source) throws DBusException     */     * Warning, do not use this method unless you really know what you are doing.    /**    protected void setArgs(Object[] args) { this.args = args; }    }       return args;        }          } else args = new Object[0];             args = extract(sig, body, 0);          if (null != sig && 0 != body.length) {          String sig = (String) headers.get(HeaderField.SIGNATURE);       if (null == args && null != body) {    {     public Object[] getParameters() throws DBusException      */     * Parses and returns the parameters to this message as an Object array.    /**    }       return l.longValue();       if (null == l) return 0;       Number l = (Number) headers.get(HeaderField.REPLY_SERIAL);     {     public long getReplySerial()      */     * @return The reply serial, or 0 if it is not a reply.     * If this is a reply to a message, this returns its serial. ad  
  8                ~  b  J          `  D  3      v  O          F  2        x  ?  8  
  
  
  /
  
  	  ~	  		      S	  :	          j  1        W        V        X               U          D  =          I                l               appendBytes(padding[a]);       } else          preallocated -= a;          paofs += a;       if (preallocated > 0) {       a = (a-b);       if (0 == b) return;       int b = (int) ((bytecounter-preallocated)%a);       if (Debug.debug) Debug.print(Debug.VERBOSE, preallocated+" "+paofs+" "+bytecounter+" "+a);       int a = getAlignment(type);       if (Debug.debug) Debug.print(Debug.VERBOSE, "padding for "+(char)type);    {    public void pad(byte type)     */     * Pad the message to the proper alignment for the given type.    /**    }       }          throw new MarshallingException(MessageFormat.format(_("Trying to marshall to unconvertable type (from {0} to {1})."), new Object[] { data.getClass().getName(), sigb[sigofs] }));          if (AbstractConnection.EXCEPTION_DEBUG && Debug.debug) Debug.print(Debug.ERR, CCe);       } catch (ClassCastException CCe) {          return i;          }                break;                }                   appendone((sig).getBytes(), 0, data);                   appendone(new byte[] {ArgumentType.SIGNATURE}, 0, sig);                   String sig = Marshalling.getDBusType(data.getClass())[0];                } else {                   appendone(((String) contents[0]).getBytes(), 0, contents[1]);                   appendone(new byte[] {ArgumentType.SIGNATURE}, 0, contents[0]);                   contents = (Object[]) data;                } else if (data instanceof Object[]) {                   appendone((var.getSig()).getBytes(), 0, var.getValue());                   appendone(new byte[] {ArgumentType.SIGNATURE}, 0, var.getSig());                   Variant var = (Variant) data;                if (data instanceof Variant) {                // followed by the value.                // Variants are marshalled as a signature             case ArgumentType.VARIANT:                break;                }                      i = appendone(							Syste					System.err.println("end"); 							System.err.println("end"); 					} 						System.err.println("after: i="+i+", sig[i]="+((char) sigb[i])+", j="+j+"					System.err.println("end"); 					} 						System.err.println("after: i="+i+", sig[i]="+((char) sigb[i])+", j="+j+					System.err.println("end"); 					}                   i = 					}                   i = appendone(sigb, i, contents[j++]);                for (i++					}      					}                   i = appendone(sigb, i, contents[j++]);                for (i++; sigb[i] !					}                   i = appendone(sigb, i, contents[j++]);     					}                   i = appendone(sigb, i, contents[j++]);                for (i++; sigb[i] != ArgumentType.STRUCT2; i++) {                int j = 0;                ensureBuffers(contents.length*4);                   contents = (Object[]) data;                else                   contents = ((Container) data).getParameters();                if (data instanceof Container)                 Object[] contents;                // and simply contain each element marshalled in order                // Structs are aligned to 8 bytes             case ArgumentType.STRUCT1:                break;                marshallint(bytecounter-c, alen, 0, 4); 					if (Debug.debug) Debug.print(Debug.VERBOSE, "start: "+c+" end: "+bytecounter+" length: "+(bytecounter-c));                }                   i = diff;                      diff = appendone(sigb, i, o);                   for (Object o: contents)                    int diff = i;                   ensureBuffers(contents.length*4);                   Object[] contents = (Object[]) data;                } else {                   i = diff;                   }                      diff += temp4;                      int temp4 = Marshalling.getJavaType(temp3, temp, 1); ad  Y  U     8             W  @          j  <  #        z  S          @        ?  
  
  
  A
  	
  	  	  	  	  	  >	    {  v  o  -  &          2              w  U  N  '                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           appendBytes(padding[a]);       } else          prea         appendBytes(padding[a]);                                 appendBytes(padding[a]);               appendBytes(padding[a]);                      appendBytes(padding[a]);       } else          preallocated -= a;          paofs += a;       if (preallocated > 0) {       a = (a-b);       if (0 == b) return;       int b = (int) ((bytecounter-preallocated)%a);       if (Debug.debug) Debug.print(Debug.VERBOSE, preallocated+" "+paofs+" "+bytecounter+" "+a);       int a = getAlignment(type);       if (Debug.debug) Debug.print(Debug.VERBOSE, "padding for "+(char)type);    {    public void pad(byte type)     */     * Pad the message to the proper alignment for the given type.    /**    }       }          throw new MarshallingException(MessageFormat.format(_("Trying to marshall to unconvertable type (from {0} to {1})."), new Object[] { data.getClass().getName(), sigb[sigofs] }));          if (AbstractConnection.EXCEPTION_DEBUG && Debug.debug) Debug.print(Debug.ERR, CCe);       } catch (ClassCastException CCe) {          return i;          }                break;                }                   appendone((sig).getBytes(), 0, data);                   appendone(new byte[] {ArgumentType.SIGNATURE}, 0, sig);                   String sig = Marshalling.getDBusType(data.getClass())[0];                } else {                   appendone(((String) contents[0]).getBytes(), 0, contents[1]);                   appendone(new byte[] {ArgumentType.SIGNATURE}, 0, contents[0]);                   contents = (Object[]) data;                } else if (data instanceof Object[]) {                   appendone((var.getSig()).getBytes(), 0, var.getValue());                   appendone(new byte[] {ArgumentType.SIGNATURE}, 0, var.getSig());                   Variant var = (Variant) data;                if (data instanceof Variant) {                // followed by the value.                // Variants are marshalled as a signature             case ArgumentType.VARIANT:                break;                }                      i = appendone(sigb, i, contents[j++]);                   for (i++; sigb[i] != ArgumentType.DICT_ENTRY2; i++)                   j = 0;                   contents = (Object[]) data;                } else {                   i++;                   i = appendone(sigb, i, ((Map.Entry) data).getValue());                   i++;                   i = appendone(sigb, i, ((Map.Entry) data).getKey());                   i++;                if (data instanceof Map.Entry) {                // Dict entries are the same as structs.             case ArgumentType.DICT_ENTRY1:                break; ad          l             q  G          r  G          j  >          \  ,  '          r  Y  @  '    
  
  
  
  
  [
  Z
  B
  "
  
  	  	  	  ~	  e	  I	  /	  	                N  G            Y        o  6    
            e  ?  8          f  O  *           u  _  "                S  <  7  0               * @param msg D-Bus serialized data of type yyyuu     * Create a message from wire-format data.    /**    }       bytecounter = 0;       headers = new HashMap<Byte, Object>();       wiredata = new byte[BUFFERINCREMENT][];    {    protected Message()     */     * Create a blank message. Only to be used when calling populate.    /**    }       append("yyyy", endian, type, flags, Message.PROTOCOL);       preallocate(4);       this.flags = flags;       this.type = type;       if (Debug.debug) Debug.print(Debug.DEBUG, "Creating message with serial "+serial);       }          serial = ++globalserial;       synchronized (Message.class) {       bytecounter = 0;       big = (Endian.BIG == endian);       headers = new HashMap<Byte, Object>();       wiredata = new byte[BUFFERINCREMENT][];    {    protected Message(byte endian, byte type, byte flags) throws DBusException     */     * @param flags Any message flags.     * @param type The message type.     * @param endian The endianness to create the message.     * Create a message; only to be called by sub-classes.    /**     }       }          default: return "Invalid";          case HeaderField.SIGNATURE: return "Signature";          case HeaderField.SENDER: return "Sender";          case HeaderField.DESTINATION: return "Destination";          case HeaderField.REPLY_SERIAL: return "Reply Serial";          case HeaderField.ERROR_NAME: return "Error Name";          case HeaderField.MEMBER: return "Member";          case HeaderField.INTERFACE: return "Interface";          case HeaderField.PATH: return "Path";       switch (field) {    {    public static String getHeaderFieldName(byte field)     */     * Returns the name of the given header field.    /**     private int bufferuse = 0;    private byte[] pabuf;    private int paofs = 0;    private int preallocated = 0;    private long bodylen = 0;    private byte[] body;    private Object[] args;    protected byte protover;    protected byte flags;    protected byte type;    protected long serial;    protected static long globalserial = 0;    protected Map<Byte, Object> headers;    protected long bytecounter;    protected byte[][] wiredata;    private boolean big;     private static final int BUFFERINCREMENT = 20;    /** Steps to increment the buffer array. */    }             new byte[7] };             new byte[6],             new byte[5],             new byte[4],             new byte[3],             new byte[2],             new byte[1],          null,       padding = new byte[][] {    static {    private static byte[][] padding;    /** Keep a static reference to each size of padding array to prevent allocation. */    }       public static final byte DICT_ENTRY2='}';       public static final byte DICT_ENTRY1='{';       public static final byte DICT_ENTRY='e';       public static final byte STRUCT2=')';       public static final byte STRUCT1='(';       public static final byte STRUCT='r';       public static final byte VARIANT='v';       public static final byte ARRAY='a';       public static final byte SIGNATURE='g';       public static final byte OBJECT_PATH='o';       public static final byte STRING='s';       public static final byte FLOAT='f';       public static final byte DOUBLE='d';       public static final byte UINT64='t';       public static final byte INT64='x';       public static final byte UINT32='u';       public static final byte INT32='i';       public static final byte UINT16='q';       public static final byte INT16='n';       public static final byte BOOLEAN='b';       public static final byte BYTE='y';        public static final String DICT_ENTRY2_STRING="}"; ad           b         z  s  Q              |  _  E  -      [         f  7            X  Q  ,  '    
  
  
  
  
  
  t
  A
  :
  
  
  	  	  w	  *	            {  P  I                  b  S  &      H  +                   k  f  H  +          =            |  w  p  3                                            * @param buf The buffer to demarshall from.     * Endianness is determined from the format of the message.     * Demarshalls an integer of a given width from a buffer.    /**    }       }          bytecounter++;           wiredata[bufferuse++] = new byte[] { b };          }             wiredata = temp;             System.arraycopy(wiredata, 0, temp, 0, wiredata.length);             byte[][] temp = new byte[wiredata.length+BUFFERINCREMENT][];             if (Debug.debug) Debug.print(Debug.VERBOSE, "Resizing "+bufferuse);          if (bufferuse == wiredata.length) {       } else {          preallocated--;          pabuf[paofs++] = b;       if (preallocated > 0) {    {    protected void appendByte(byte b)      */     * Appends a byte to the buffer list.    /**    }       }          bytecounter += buf.length;           wiredata[bufferuse++] = buf;          }             wiredata = temp;             System.arraycopy(wiredata, 0, temp, 0, wiredata.length);             byte[][] temp = new byte[wiredata.length+BUFFERINCREMENT][];             if (Debug.debug) Debug.print(Debug.VERBOSE, "Resizing "+bufferuse);          if (bufferuse == wiredata.length) {       } else {          preallocated -= buf.length;          paofs += buf.length;          System.arraycopy(buf, 0, pabuf, paofs, buf.length);             throw new ArrayIndexOutOfBoundsException(MessageFormat.format(_("Array index out of bounds, paofs={0}, pabuf.length={1}, buf.length={2}."), new Object[] { paofs, pabuf.length, buf.length }));          if (paofs+buf.length > pabuf.length)       if (preallocated > 0) {       if (null == buf) return;    {    protected void appendBytes(byte[] buf)      */     * Appends a buffer to the buffer list.    /**    }       }          wiredata = temp;          System.arraycopy(wiredata, 0, temp, 0, wiredata.length);          byte[][] temp = new byte[wiredata.length+increase][];          if (Debug.debug) Debug.print(Debug.VERBOSE, "Resizing "+bufferuse);          if (increase < BUFFERINCREMENT) increase = BUFFERINCREMENT;       if (increase > 0) {       int increase = num - wiredata.length + bufferuse;    {    private void ensureBuffers(int num)     */     * @param num number of free buffers to create.     * Ensures there are enough free buffers.    /**    }       paofs = 0;       preallocated = num;       appendBytes(pabuf);       pabuf = new byte[num];       preallocated = 0;    {    private void preallocate(int num)     */     * Data is copied to this rather than added to the buffer list.     * Create a buffer of num bytes.    /**    }       }          this.headers.put((Byte) ((Object[])o)[0], ((Variant<Object>)((Object[])o)[1]).getValue());       for (Object o: (Vector<Object>) hs[0]) {       if (Debug.debug) Debug.print(Debug.VERBOSE, Arrays.deepToString(hs));       Object[] hs = extract("a(yv)", headers, 0);       if (Debug.debug) Debug.print(Debug.VERBOSE, headers);       bytecounter = msg.length+headers.length+body.length;       serial = ((Number) extract(Message.ArgumentType.UINT32_STRING, msg, 8)[0]).longValue();       bodylen = ((Number) extract(Message.ArgumentType.UINT32_STRING, msg, 4)[0]).longValue();       bufferuse = 3;       this.body = body;       wiredata[2] = body;       wiredata[1] = headers;       wiredata[0] = msg;       protover = msg[3];       flags = msg[2];       type = msg[1];       big = (msg[0] == Endian.BIG);    {    void populate(byte[] msg, byte[] headers, byte[] body) throws DBusException    @SuppressWarnings("unchecked")     */     * @param body D-Bus serialized data of the signature defined in headers.     * @param headers D-Bus serialized data of type a(yv) ad  >        T               _  I  0          }  F  *            o  ;  "          m  B  /          t  R    
  
  l
  :
  
  	  e	  B	  	        l  S  +      j  Q  )      n  U  -      v  ]  3      o  V  .        B  )         g                                                                                            if (0 == size) {                case ArgumentType.DICT_ENTRY1:                   break;                         Double.longBitsToDouble(demarshallint(buf, ofs[1], algn));                      ((double[]) rv)[j] =                   for (int j = 0; j < length; j++, ofs[1] += algn)                    rv = new double[length];                case ArgumentType.DOUBLE:                   break;                         Float.intBitsToFloat((int)demarshallint(buf, ofs[1], algn));                      ((float[]) rv)[j] =                   for (int j = 0; j < length; j++, ofs[1] += algn)                    rv = new float[length];                case ArgumentType.FLOAT:                   break;                      ((boolean[]) rv)[j] = (1 == demarshallint(buf, ofs[1], algn));                   for (int j = 0; j < length; j++, ofs[1] += algn)                    rv = new boolean[length];                case ArgumentType.BOOLEAN:                   break;                      ((long[]) rv)[j] = demarshallint(buf, ofs[1], algn);                   for (int j = 0; j < length; j++, ofs[1] += algn)                    rv = new long[length];                case ArgumentType.INT64:                   break;                      ((int[]) rv)[j] = (int) demarshallint(buf, ofs[1], algn);                   for (int j = 0; j < length; j++, ofs[1] += algn)                    rv = new int[length];                case ArgumentType.INT32:                   break;                      ((short[]) rv)[j] = (short) demarshallint(buf, ofs[1], algn);                   for (int j = 0; j < length; j++, ofs[1] += algn)                    rv = new short[length];                case ArgumentType.INT16:                   break;                   ofs[1] += size;                   System.arraycopy(buf, ofs[1], rv, 0, length);                   rv = new byte[length];                case ArgumentType.BYTE:             switch (sigb[ofs[0]]) {             // optimise primatives                throw new MarshallingException(_("Arrays must not exceed ")+DBusConnection.MAX_ARRAY_LENGTH);             if (length > DBusConnection.MAX_ARRAY_LENGTH)             int length = (int) (size / algn);             ofs[1] = align(ofs[1], sigb[ofs[0]]);             byte algn = (byte) getAlignment(sigb[++ofs[0]]);             ofs[1] += 4;             if (Debug.debug) Debug.print(Debug.VERBOSE, "Reading array of size: "+size);             long size = demarshallint(buf, ofs[1], 4);          case ArgumentType.ARRAY:             break;             rv = (1==rf)?Boolean.TRUE:Boolean.FALSE;             ofs[1] += 4;             rf = (int) demarshallint(buf, ofs[1], 4);          case ArgumentType.BOOLEAN:             break;             rv = Float.intBitsToFloat(rf);             ofs[1] += 4;             int rf = (int) demarshallint(buf, ofs[1], 4);          case ArgumentType.FLOAT:             break;             rv = Double.longBitsToDouble(l);             ofs[1] += 8;             long l = demarshallint(buf, ofs[1], 8);          case ArgumentType.DOUBLE:             break;             ofs[1] += 4;             rv = new UInt64(top, bottom);             }                top = demarshallint(buf, ofs[1], 4);                ofs[1] += 4;                bottom = demarshallint(buf, ofs[1], 4);             } else {                bottom = demarshallint(buf, ofs[1], 4);                ofs[1] += 4;                top = demarshallint(buf, ofs[1], 4);             if (big) {             long bottom;             long top;          case ArgumentType.UINT64:             break;             ofs[1] += 8;             rv = demarshallint(buf, ofs[1], 8);          case ArgumentType.INT64: ad  R        H         |  :      ]      z  f  >          0          r  +  
  
  _
  (
  	  	  [	          M  $          u  )          P                q  [              %  
        j  0                                                                                                          } catch (UnsupportedEncodingException UEe) {                rv = new String(buf, ofs[1], length, "UTF-8");             try {             ofs[1] += 4;             length = (int) demarshallint(buf, ofs[1], 4);          case ArgumentType.STRING:             break;             ofs[1] = newofs[1];             rv = new Variant<Object>(extract(sig, buf, newofs)[0] , sig);             newofs[0] = 0;             String sig = (String) extract(ArgumentType.SIGNATURE_STRING, buf, newofs)[0];             int[] newofs = new int[] { 0, ofs[1] };          case ArgumentType.VARIANT:             break;             rv = decontents;             ofs[0]++;             decontents[1] = extractone(sigb, buf, ofs, true);             ofs[0]++;             decontents[0] = extractone(sigb, buf, ofs, true);             ofs[0]++;             if (Debug.debug) Debug.print(Debug.VERBOSE, "Extracting Dict Entry ("+Hexdump.toAscii(sigb,ofs[0],sigb.length-ofs[0])+") from: "+Hexdump.toHex(buf,ofs[1],buf.length-ofs[1]));             Object[] decontents = new Object[2];          case ArgumentType.DICT_ENTRY1:             break;             rv = contents.toArray();                contents.add(extractone(sigb, buf, ofs, true));             while (sigb[++ofs[0]] != ArgumentType.STRUCT2)             Vector<Object> contents = new Vector<Object>();          case ArgumentType.STRUCT1:             break;                rv = ArrayFrob.listify(rv);             if (contained && !(rv instanceof List) && !(rv instanceof Map))             }                   rv = contents;                   }                      contents.add(extractone(sigb, buf, ofs, true));                      ofs[0] = ofssave;                   while (ofs[1] < end) {                   Vector<Object> contents = new Vector<Object>();                   end = ofs[1]+size;                   ofssave = ofs[0];                   }                      if (Debug.debug) Debug.print(Debug.VERBOSE, "Aligned type: "+temp3+" "+temp4+" "+ofs[0]);                      ofs[0] += temp4;                      int temp4 = Marshalling.getJavaType(temp3, temp, 1) - 1;                      // ofs[0] gets incremented anyway. Leave one character on the stack                      String temp3 = new String(temp2);                      System.arraycopy(sigb, ofs[0], temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-ofs[0]];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays.                   if (0 == size) {                default:                   break;                   rv = new DBusMap<Object, Object>(entries.toArray(new Object[0][]));                   }                      entries.add((Object[]) extractone(sigb, buf, ofs, true));                      ofs[0] = ofssave;                   while (ofs[1] < end) {                   Vector<Object[]> entries = new Vector<Object[]>();                   long end = ofs[1]+size;                   int ofssave = ofs[0];                   }                      if (Debug.debug) Debug.print(Debug.VERBOSE, "Aligned type: "+temp3+" "+temp4+" "+ofs[0]);                      ofs[0] += temp4;                      int temp4 = Marshalling.getJavaType(temp3, temp, 1) - 1;                      // ofs[0] gets incremented anyway. Leave one character on the stack                      String temp3 = new String(temp2);                      System.arraycopy(sigb, ofs[0], temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-ofs[0]];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays. ad          d         S  E  #          F  $          j  W  D        ]  R              V    
  
  
  
  _
  Z
  S
  ,
  	  	  }	  2	        b  ]        b  0  (            x  q  C  <          M  F                ~  w  2  +    	        c  ^  W  #            p  i  (                                             /**    public long getSerial() { return serial; }     */     * @return the message serial.     * Returns the message serial ID (unique for this connection)    /**    public int getFlags() { return flags; }     */     * Returns the message flags.    /**    public String getSig() { return (String) headers.get(HeaderField.SIGNATURE); }     */     * Returns the dbus signature of the parameters.    /**    }          return (String) headers.get(HeaderField.MEMBER);        else          return (String) headers.get(HeaderField.ERROR_NAME);        if (this instanceof Error)    {     public String getName()      */     * Returns the member name or error name this message represents.    /**    }       return o.toString();       if (null == o) return null;       Object o = headers.get(HeaderField.PATH);    {     public String getPath()     */     * Returns the object path of the message.    /**    public String getInterface() { return  (String) headers.get(HeaderField.INTERFACE); }     */     * Returns the interface of the message.    /**    public String getDestination() { return (String) headers.get(HeaderField.DESTINATION); }     */     * Returns the destination of the message.    /**    public String getSource() { return (String) headers.get(HeaderField.SENDER); }     */     * Returns the Bus ID that sent the message.    /**    }       return rv.toArray();       }          rv.add(extractone(sigb, buf, i, false));       for (int[] i = ofs; i[0] < sigb.length; i[0]++) {       byte[] sigb = sig.getBytes();       Vector<Object> rv = new Vector<Object>();       if (Debug.debug) Debug.print(Debug.VERBOSE, "extract("+sig+",#"+buf.length+", {"+ofs[0]+","+ofs[1]+"}");    {    public Object[] extract(String sig, byte[] buf, int[] ofs) throws DBusException     */     * @return The demarshalled value(s).     *            updated to the start of the next value ofter demarshalling.     *            and the offset into the data buffer. These values will be     * @param ofs An array of two ints, the offset into the signature      * @param buf The buffer to demarshall from.     * @param sig The D-Bus signature(s) of the value(s).     * Demarshall values from a buffer.    /**    }       return extract(sig, buf, new int[] { 0, ofs });    {    public Object[] extract(String sig, byte[] buf, int ofs) throws DBusException     */     * @return The demarshalled value(s).     * @param ofs The offset into the data buffer to start.     * @param buf The buffer to demarshall from.     * @param sig The D-Bus signature(s) of the value(s).     * Demarshall values from a buffer.    /**     }       return rv;          Debug.print(Debug.VERBOSE, "Extracted: "+rv+" (now at "+ofs[1]+")");       else          Debug.print(Debug.VERBOSE, "Extracted: "+Arrays.deepToString((Object[]) rv)+" (now at "+ofs[1]+")");       if (Debug.debug) if (rv instanceof Object[])       }             throw new UnknownTypeCodeException(sigb[ofs[0]]);          default:              break;             ofs[1] += length + 1;             rv = new String(buf, ofs[1], length);             length = (buf[ofs[1]++] & 0xFF);          case ArgumentType.SIGNATURE:             break;             ofs[1] += length + 1;             rv = new ObjectPath(getSource(), new String(buf, ofs[1], length));             ofs[1] += 4;             length = (int) demarshallint(buf, ofs[1], 4);          case ArgumentType.OBJECT_PATH:             break;             ofs[1] += length + 1;             }                throw new DBusException(_("System does not support UTF-8 encoding"));                if (AbstractConnection.EXCEPTION_DEBUG && Debug.debug) Debug.print(UEe); ad  0        f             ^          `  $        5  .      y  K  D                r  m  f    
  
  
  y
  /
  *
  
  	  	  	  	  	  	  	  H	  	            d  ?  '  "          [  /          Q          ^  2          ~  Q  (      	        V  (          u  L  :  2  -                                                                 /**    }       return wiredata;    {    public byte[][] getWireData()    }       }          l >>= 8;          buf[i+ofs] = (byte) (l & 0xFF);       for (int i = 0; i < width; i++) {    {    public static void marshallintLittle(long l, byte[] buf, int ofs, int width)      */     * @param width The byte-width of the int.     * @param ofs The offset to demarshall to.     * @param buf The buffer to demarshall to.     * @param l The integer to marshall.     * Marshalls an integer of a given width into a buffer using little-endian format.    /**    }       }          l >>= 8;          buf[i+ofs] = (byte) (l & 0xFF);       for (int i = (width-1); i >= 0; i--) {    {    public static void marshallintBig(long l, byte[] buf, int ofs, int width)      */     * @param width The byte-width of the int.     * @param ofs The offset to marshall to.     * @param buf The buffer to marshall to.     * @param l The integer to marshall.     * Marshalls an integer of a given width into a buffer using big-endian format.    /**    }       if (Debug.debug) Debug.print(Debug.VERBOSE, "Marshalled int "+l+" to "+Hexdump.toHex(buf,ofs,width));       if (big) marshallintBig(l, buf, ofs, width); else marshallintLittle(l, buf, ofs, width);     {     public void marshallint(long l, byte[] buf, int ofs, int width)     */     * @param width The byte-width of the int.     * @param ofs The offset to marshall to.     * @param buf The buffer to marshall to.     * @param l The integer to marshall.     * Endianness is determined from the message.     * Marshalls an integer of a given width into a buffer.    /**    }       appendBytes(buf);       marshallint(l, buf, 0, width);       byte[] buf = new byte[width];    {     public void appendint(long l, int width)     */     * @param width The byte-width of the int.     * @param l The integer to marshall.     * Endianness is determined from the message.     * Marshalls an integer of a given width and appends it to the message.    /**    }       return l;       }          l |= (buf[ofs+i] & 0xFF);          l <<=8;       for (int i = (width-1); i >= 0; i--) {       long l = 0;    {    public static long demarshallintLittle(byte[] buf, int ofs, int width)     */     * @param width The byte-width of the int.     * @param ofs The offset to demarshall from.     * @param buf The buffer to demarshall from.     * Demarshalls an integer of a given width from a buffer using little-endian format.    /**    }       return l;       }          l |= (buf[ofs+i] & 0xFF);          l <<=8;       for (int i = 0; i < width; i++) {       long l = 0;    {    public static long demarshallintBig(byte[] buf, int ofs, int width)     */     * @param width The byte-width of the int.     * @param ofs The offset to demarshall from.     * @param buf The buffer to demarshall from.     * Demarshalls an integer of a given width from a buffer using big-endian format.    /**    { return endian==Endian.BIG ? demarshallintBig(buf,ofs,width) : demarshallintLittle(buf,ofs,width); }    public static long demarshallint(byte[] buf, int ofs, byte endian, int width)     */     * @param width The byte-width of the int.     * @param endian The endianness to use in demarshalling.     * @param ofs The offset to demarshall from.     * @param buf The buffer to demarshall from.     * Demarshalls an integer of a given width from a buffer.    /**    { return big ? demarshallintBig(buf,ofs,width) : demarshallintLittle(buf,ofs,width); }    public long demarshallint(byte[] buf, int ofs, int width)     */     * @param width The byte-width of the int.     * @param ofs The offset to demarshall from. ad          g             f  _  2  -              v  T  2            {  Y  6          }  Y  1    
          w  o  j  c  3     
  
  
  
  !
  	  	  	  @	  	  	  		  	        ^  W  +  &        d  _  X  .      ~  3                  \  >            r  _  =            h  U  2                                  break;             ofs[1] += 2;             rv = new UInt16((int) demarshallint(buf, ofs[1], 2));          case ArgumentType.UINT16:             break;             ofs[1] += 2;             rv = (short) demarshallint(buf, ofs[1], 2);          case ArgumentType.INT16:             break;             ofs[1] += 4;             rv = (int) demarshallint(buf, ofs[1], 4);          case ArgumentType.INT32:             break;             ofs[1] += 4;             rv = new UInt32(demarshallint(buf, ofs[1], 4));          case ArgumentType.UINT32:             break;             rv = buf[ofs[1]++];          case ArgumentType.BYTE:       switch (sigb[ofs[0]]) {       ofs[1] = align(ofs[1], sigb[ofs[0]]);       Object rv = null;       if (Debug.debug) Debug.print(Debug.VERBOSE, "Extracting type: "+((char)sigb[ofs[0]])+" from offset "+ofs[1]);    {    private Object extractone(byte[] sigb, byte[] buf, int[] ofs, boolean contained) throws DBusException     */     * @return The demarshalled value.     * @param contained converts nested arrays to Lists     *            updated to the start of the next value ofter demarshalling.     *            and the offset into the data buffer. These values will be     * @param ofs An array of two ints, the offset into the signature buffer      * @param buf The buffer to demarshall from.     * @param sigb A buffer of the D-Bus signature.     * Demarshall one value from a buffer.    /**    }       return current+(a-(current%a));       if (0 == (current%a)) return current;       int a = getAlignment(type);       if (Debug.debug) Debug.print(Debug.VERBOSE, "aligning to "+(char)type);    {    public int align(int current, byte type)     */     * @return The new, aligned, counter.     * @param type The type to align to.     * @param current The current counter.     * Align a counter to the given type.    /**    }       }          i = appendone(sigb, i, data[j]);          if (Debug.debug) Debug.print(Debug.VERBOSE, "Appending item: "+i+" "+((char)sigb[i])+" "+j);       for (int i = 0; i < sigb.length && j < data.length; i++, j++) {       int j = 0;       byte[] sigb = sig.getBytes();       if (Debug.debug) Debug.print(Debug.DEBUG, "Appending sig: "+sig+" data: "+Arrays.deepToString(data));    {    public void append(String sig, Object... data) throws DBusException     */     * @param data The value(s).     * @param sig The signature(s) of the value(s).     * Append a series of values to the message.    /**    }       }             return 1;          default:          case ArgumentType.VARIANT:          case ArgumentType.SIGNATURE:          case ArgumentType.BYTE:          case 1:             return 8;          case ArgumentType.DICT_ENTRY2:          case ArgumentType.STRUCT2:          case ArgumentType.DICT_ENTRY1:          case ArgumentType.STRUCT1:          case ArgumentType.DICT_ENTRY:          case ArgumentType.STRUCT:          case ArgumentType.DOUBLE:          case ArgumentType.UINT64:          case ArgumentType.INT64:          case 8:             return 4;          case ArgumentType.ARRAY:          case ArgumentType.OBJECT_PATH:          case ArgumentType.STRING:          case ArgumentType.UINT32:          case ArgumentType.INT32:          case ArgumentType.FLOAT:          case ArgumentType.BOOLEAN:          case 4:             return 2;          case ArgumentType.UINT16:          case ArgumentType.INT16:          case 2:       switch (type) {    {    public static int getAlignment(byte type)     */     * Return the alignment for a given type.    /**    }       if (Debug.debug) Debug.print(Debug.VERBOSE, preallocated+" "+paofs+" "+bytecounter+" "+a); ad                  s  a  .  	        ^  0        2        e          S    
  w
  Z
  
  	  }	  ^	  0	        <        Z  F          Y  -        S        G            U        ]         ^  ]                                                                     String temp3 = new String(temp2);                      System.arraycopy(sigb, diff, temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-diff];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays.                   if (i == diff) {                      diff = appendone(sigb, i, o);                   for (Map.Entry<Object,Object> o: ((Map<Object,Object>) data).entrySet())                   ensureBuffers(((Map) data).size()*6);                   int diff = i;                } else if (data instanceof Map) {                   i = diff;                   }                      diff += temp4;                                           int temp4 = Marshalling.getJavaType(temp3, temp, 1);                      String temp3 = new String(temp2);                      System.arraycopy(sigb, diff, temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-diff];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays.                   if (i == diff) {                      diff = appendone(sigb, i, o);                   for (Object o: contents)                    ensureBuffers(contents.length*4);                   int diff = i;                   Object[] contents = ((List) data).toArray();                } else if (data instanceof List) {                   appendBytes(primbuf);                   }                         throw new MarshallingException(_("Primative array being sent as non-primative array."));                      default:                         break;                                  primbuf, k, algn);                                  Float.floatToRawIntBits(((float[])data)[j]),                            marshallint(                         for (int j = 0, k = 0; j < len; j++, k += algn)                         primbuf = new byte[len*algn];                      case ArgumentType.FLOAT:                         break;                                     primbuf, k, algn);                               marshallint(Double.doubleToRawLongBits(((double[])data)[j]),                            for (int j = 0, k = 0; j < len; j++, k += algn)                         else                                     primbuf, k, algn);                               marshallint(Double.doubleToRawLongBits(((float[])data)[j]),                            for (int j = 0, k = 0; j < len; j++, k += algn)                         if (data instanceof float[])                         primbuf = new byte[len*algn];                      case ArgumentType.DOUBLE:                         break;                            marshallint(Array.getBoolean(data, j)?1:0, primbuf, k, algn);                         for (int j = 0, k = 0; j < len; j++, k += algn)                         primbuf = new byte[len*algn];                      case ArgumentType.BOOLEAN:                         break;                            marshallint(Array.getLong(data, j), primbuf, k, algn);                         for (int j = 0, k = 0; j < len; j++, k += algn)                         primbuf = new byte[len*algn];                      case ArgumentType.INT64:                      case ArgumentType.INT32:                      case ArgumentType.INT16:                         break;                         primbuf = (byte[]) data;                      case ArgumentType.BYTE:                   switch (sigb[i]) {                   int len = Array.getLen																																			if (Debug.debug) Debug.print(Debug.DEBUG, "Primitive array");                      data.getClass().getComponentType().isPrimitive()) { ad    s     Y               v  I  2                o  V  I          {  _  C  8              ~  q  P  ,          u  U  .  
  
  
  g
  1
  
  	  	  m	  @	  	      v  >  -            n  f  J  E  >           W  P  *        F          S  N  B  )    s    C  ,          w  1                                                                                             case ArgumentType.DOUBLE:                break;                appendint(((Boolean) data).booleanValue() ? 1 : 0, 4);             case ArgumentType.BOOLEAN:                break;                appendByte(((Number) data).byteValue());             case ArgumentType           if (Debug.debug) Debug.print(Debug.DEBUG, "i="+i+", sig[i]="+((char)sigb[i])+" value: "+data);          if (Debug.debug) Debug.print(Debug.VERBOSE, "Appending type: "+((char)sigb[i])+" value: "+data);          if (Debug.debug) Debug.print(Debug.VERBOSE, (Object) bytecounter);          int i = sigofs;       try {    {    private int appendone(byte[] sigb, int sigofs, Object data) throws DBusException    @SuppressWarnings("unchecked")     */     * @return The offset into the signature of the end of this value's type.     * @param data The value to marshall.     * @param sigofs The offset into the signature corresponding to this value.     * @param sigb A buffer of the D-Bus signature.     * the value.     * The type of the value is read from a D-Bus signature and used to marshall      * Appends a value to the message.    /**    public Object getHeader(byte type) { return headers.get(type); }     */     * @return The value of the field or null if unset.     * @param type The field to return.     * Returns the value of the header field of a given field.    /**    }       return sb.toString();       }          sb.setCharAt(sb.length()-1,'}');          sb.setCharAt(sb.length()-2,' ');          }             sb.append(' ');             sb.append(',');                sb.append(o.toString());             else                sb.append(Arrays.toString((float[]) o));             else if (o instanceof float[])                sb.append(Arrays.toString((double[]) o));             else if (o instanceof double[])                sb.append(Arrays.toString((boolean[]) o));             else if (o instanceof boolean[])                sb.append(Arrays.toString((long[]) o));             else if (o instanceof long[])                sb.append(Arrays.toString((short[]) o));             else if (o instanceof short[])                sb.append(Arrays.toString((int[]) o));             else if (o instanceof int[])                sb.append(Arrays.toString((byte[]) o));             else if (o instanceof byte[])                sb.append(Arrays.deepToString((Object[]) o));             if (o instanceof Object[])          for (Object o: args) {       else {          sb.append('}');       if (null == args || 0 == args.length)       }          if (AbstractConnection.EXCEPTION_DEBUG && Debug.debug) Debug.print(Debug.ERR, DBe);       } catch (DBusException DBe) {          args = getParameters();       try {        Object[] args = null;       sb.append(' ');       sb.append('{');       sb.append(' ');       }          sb.setCharAt(sb.length()-1,'}');          sb.setCharAt(sb.length()-2,' ');          }             sb.append(' ');             sb.append(',');             sb.append(headers.get(field).toString());             sb.append('>');             sb.append('=');             sb.append(getHeaderFieldName(field));          for (Byte field: headers.keySet()) {       else {          sb.append('}');       if (headers.size() == 0)       sb.append(' ');       sb.append ('{');       sb.append (' ');       sb.append (')');       sb.append(serial);       sb.append (',');       sb.append (flags);       sb.append ('(');       sb.append(getClass().getSimpleName());       StringBuffer sb = new StringBuffer();    {    public String toString()     */     * Formats the message in a human-readable format. ad  A  a     A           z  U  	        r  \  7          p  6            a  (          x  =  '    
  
  M
  
  	  	  	  d	  		      1        p  Z  1      \  $        v  C            a        L  *        ~  T  2                                                                                   if (data.getClass().isArray() &&                 // optimise primatives                 long c = bytecounter;                pad(sigb[++i]);                appendBytes(alen);                byte[] alen = new byte[4];                 }                      Debug.print(Debug.VERBOSE, "Appending array: "+Arrays.deepToString((Object[])data));                   if (data instanceof Object[])                if (Debug.debug) {                // initial padding to the end of the last element.                // order. The length is the length from the end of the                // padding to the element alig					if (Debug.debug) Debug.print(Debug.DEBUG, "before array, i="+i+", sig[i]="+(char)sigb[i]);             case ArgumentType.ARRAY:                break;                appendByte((byte) 0);                appendBytes(pbytes);                appendByte((byte) pbytes.length);                preallocate(2+pbytes.length);                byte[] pbytes = payload.getBytes();                   payload = (String) data;                else                   payload = Marshalling.getDBusType((Type[]) data);                if (data instanceof Type[])                // for the string, length and null byte.                // Signatures are generally short, so preallocate the array                // followed by the String, followed by a null byte.                // Signatures are marshalled as a byte with the length,             case ArgumentType.SIGNATURE:                break;                //pad(ArgumentType.STRING);? do we need this?                appendBytes(padding[1]);                appendBytes(payloadbytes);                appendint(payloadbytes.length, 4);                if (Debug.debug) Debug.print(Debug.VERBOSE, "Appending String of length "+payloadbytes.length);                }                   throw new DBusException(_("System does not support UTF-8 encoding"));                   if (AbstractConnection.EXCEPTION_DEBUG && Debug.debug) Debug.print(UEe);                } catch (UnsupportedEncodingException UEe) {                   payloadbytes = payload.getBytes("UTF-8");                try {                byte[] payloadbytes = null;                String payload = data.toString();                // followed by the String, followed by a null byte.                // Strings are marshalled as a UInt32 with the length,             case ArgumentType.OBJECT_PATH:             case ArgumentType.STRING:                break;                appendint(((Number) data).shortValue(), 2);             case ArgumentType.INT16:                break;                appendint(((Number) data).intValue(), 2);             case ArgumentType.UINT16:                break;                appendint(((Number) data).intValue(), 4);             case ArgumentType.INT32:                break;                }                   appendint(((UInt64) data).top(), 4);                   appendint(((UInt64) data).bottom(), 4);                } else {                   appendint(((UInt64) data).bottom(), 4);                   appendint(((UInt64) data).top(), 4);                if (big) {             case ArgumentType.UINT64:                break;                appendint(((Number) data).longValue(), 8);             case ArgumentType.INT64:                break;                appendint(((Number) data).longValue(), 4);             case ArgumentType.UINT32:                break;                appendint(rf, 4);                int rf = Float.floatToIntBits(((Number) data).floatValue());             case ArgumentType.FLOAT:                break;                appendint(l, 8);                long l = Double.doubleToLongBits(((Number) data).doubleValue()); ad  :                      y  A  +                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    case ArgumentType.DOUBLE:                break;                appendint(((Boolean) data).booleanValue() ? 1 : 0, 4);             case ArgumentType.BOOLEAN:                break;                appendByte(((Number) data).byteValue());             case ArgumentType.BYTE:          switch (sigb[i]) {          pad(sigb[i]);          // pad to the alignment of this type.  ad    5              s  -        /                f  5                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              if (data.getClass().isArray() &&                 // optimise primatives                 long c = bytecounter;                pad(sigb[++i]);                appendBytes(alen);                byte[] alen = new byte[4];                 }                      Debug.print(Debug.VERBOSE, "Appending array: "+Arrays.deepToString((Object[])data));                   if (data instanceof Object[])                if (Debug.debug) {                // initial padding to the end of the last element.                // order. The length is the length from the end of the                // padding to the element alignment, then elements in                // Arrays are given as a UInt32 for the length in bytes, ad         6           w  R  %        y  K      {  \  ,      U  6        Q  
  
  
  X
  	  	  	  y	  C	        Q  2        g  5        v  C         \        W    
        e  -      |  5      m  6                             String temp3 = new String(temp2);                      System.arraycopy(sigb, diff, temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-diff];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays.                   if (i == diff) {                      diff = appendone(sigb, i, o);                   for (Map.Entry<Object,Object> o: ((Map<Object,Object>) data).entrySet())                   ensureBuffers(((Map) data).size()*6);                   int diff = i; 						if (Debug.debug) Debug.print(Debug.DEBUG, "Map");                } else if (data instanceof Map) {                   i = diff;           							System.err.println("increment: "+temp4+" sub-sig: "+temp3);                      int temp4 = Marshalling.getJavaType(                     int temp4 = Marshalling.getJavaType(temp3, temp, 1);                      String temp3 = new String(temp2);                      System.arraycopy(sigb, diff, temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-diff];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays.                   if (i == diff) {                      diff = appendone(sigb, i, o);                   for (Object o: contents)                    ensureBuffers(contents.length*4);                   int diff = i;                   Object[] contents = ((List) data).toArray();                } else if (data instanceof List) {                   appendBytes(primbuf);                   }                         throw new MarshallingException(_("Primative array being sent as non-primative array."));                      default:                         break;                                  primbuf, k, algn);                                  Float.floatToRawIntBits(((float[])data)[j]),                            marshallint(                         for (int j = 0, k = 0; j < len; j++, k += algn)                         primbuf = new byte[len*algn];                      case ArgumentType.FLOAT:                         break;                                     primbuf, k, algn);                               marshallint(Double.doubleToRawLongBits(((double[])data)[j]),                            for (int j = 0, k = 0; j < len; j++, k += algn)                         else                                     primbuf, k, algn);                               marshallint(Double.doubleToRawLongBits(((float[])data)[j]),                            for (int j = 0, k = 0; j < len; j++, k += algn)                         if (data instanceof float[])                         primbuf = new byte[len*algn];                      case ArgumentType.DOUBLE:                         break;                            marshallint(Array.getBoolean(data, j)?1:0, primbuf, k, algn);                         for (int j = 0, k = 0; j < len; j++, k += algn)                         primbuf = new byte[len*algn];                      case ArgumentType.BOOLEAN:                         break;                            marshallint(Array.getLong(data, j), primbuf, k, algn);                         for (int j = 0, k = 0; j < len; j++, k += algn)                         primbuf = new byte[len*algn];                      case ArgumentType.INT64:                      case ArgumentType.INT32:                      case ArgumentType.INT16:                         break;                         primbuf = (byte[]) data;                      case ArgumentType.BYTE:                   switch (sigb[i]) {                   int len = Array.getLength(data);                   int algn = getAlignment(sigb[i]);                   byte[] primbuf; ad    (                  w  W        n  '      _  (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     String temp3 = new String(temp2);                       String temp3 = new String(temp2);                      System.arraycopy(sigb, diff, temp2, 0, temp2.length);                      byte[] temp2 = new byte[sigb.length-diff];                      Vector<Type> temp = new Vector<Type>();                      // advance the type parser even on 0-size arrays.                   if (i == diff) {                      diff = appendone(sigb, i, o);                   for (Map.Entry<Object,Object> o: ((Map<Object,Object>) data).entrySet())                   ensureBuffers(((Map) data).size()*6);                   int diff = i;                } else if (data instanceof Map) {                   i = diff;                   }                      diff += temp4 - 1; 