All Downloads are FREE. Search and download functionalities are using the official Maven repository.

gnu.x11.Data Maven / Gradle / Ivy

Go to download

Escher is a collection of libraries for X Window System written purely in Java.

The newest version!
package gnu.x11;


/** 
 * Efficient storage of byte array. Similar to "struct" in C/C++. No
 * parsing.
 */
public class Data {  
  /** Sequential writing. */
  public int index;

  /** Lower bound. */
  public int offset;

  public byte [] data;


  /** Writing. */
  public Data () {}


  /** Writing. */
  public Data (int length) {
    data = new byte [length];
  }


  /** Reading. */
  public Data (byte [] data) {
    this.data = data;
  }


  /** Reading. */
  public Data (byte [] [] data) {
    int s1 = data [0].length;
    int s2 = data.length;

    this.data = new byte [s1 * s2];
    for (int i=0; i> 8);
        data[j + i * 2 + 1] = (byte) (chars[i] & 0xFF);
      }
  }

  public void write1 (byte [] b, int offset) {
    write1 (index, b, offset);
    index += b.length - offset;
  }


  public void write1 (byte [] b, int offset, int length) {
    write1 (index, b, offset, length);
    index += length;
  }



  //-- write2 - given j

  public void write2 (int j, int s) {
    data [j+offset] = (byte) ((s >> 8) & 0xff);
    data [j+offset+1] = (byte) (s & 0xff);
  }


  public void write2 (int j, byte [] b, int offset) {
    write2 (j, b, offset, b.length);
  }  


  public void write2 (int j, byte [] b, int offset, int length) {
    for (int i=offset; i> 24) & 0xff);
    data [j+offset+1] = (byte) ((i >> 16) & 0xff);
    data [j+offset+2] = (byte) ((i >> 8) & 0xff);
    data [j+offset+3] = (byte) (i & 0xff);
  }


  public void write4 (int j, float f) {
    write4 (j, Float.floatToIntBits (f));
  }


  public void write4 (int j, float [] f, int offset) {
    write4 (j, f, offset, f.length);
  }


  public void write4 (int j, float [] f, int offset, int length) {
    for (int k=offset; k> 56) & 0xff);
    data [j+offset+1] = (byte) ((l >> 48) & 0xff);
    data [j+offset+2] = (byte) ((l >> 40) & 0xff);
    data [j+offset+3] = (byte) ((l >> 32) & 0xff);
    data [j+offset+4] = (byte) ((l >> 24) & 0xff);
    data [j+offset+5] = (byte) ((l >> 16) & 0xff);
    data [j+offset+6] = (byte) ((l >> 8) & 0xff);
    data [j+offset+7] = (byte) (l & 0xff);
  }


  public void write8 (int j, double d) {
    write8 (j, Double.doubleToLongBits (d));
  }



  public void write8 (int j, double [] d, int offset) {
    write8 (j, d, offset, d.length);
  }


  public void write8 (int j, double [] d, int offset, int length) {
    for (int k=offset; k




© 2015 - 2025 Weber Informatics LLC | Privacy Policy