home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / nio / DirectCharBufferS.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  3.8 KB  |  235 lines

  1. package java.nio;
  2.  
  3. import sun.misc.Cleaner;
  4. import sun.misc.Unsafe;
  5. import sun.nio.ch.DirectBuffer;
  6.  
  7. class DirectCharBufferS extends CharBuffer implements DirectBuffer {
  8.    protected static final Unsafe unsafe = Bits.unsafe();
  9.    protected static final boolean unaligned = Bits.unaligned();
  10.    protected Object viewedBuffer = null;
  11.  
  12.    public Object viewedBuffer() {
  13.       return this.viewedBuffer;
  14.    }
  15.  
  16.    public Cleaner cleaner() {
  17.       return null;
  18.    }
  19.  
  20.    DirectCharBufferS(DirectBuffer var1, int var2, int var3, int var4, int var5, int var6) {
  21.       super(var2, var3, var4, var5);
  22.       this.address = var1.address() + (long)var6;
  23.       this.viewedBuffer = var1;
  24.    }
  25.  
  26.    public CharBuffer slice() {
  27.       int var1 = this.position();
  28.       int var2 = this.limit();
  29.  
  30.       assert var1 <= var2;
  31.  
  32.       int var3 = var1 <= var2 ? var2 - var1 : 0;
  33.       int var4 = var1 << 1;
  34.  
  35.       assert var4 >= 0;
  36.  
  37.       return new DirectCharBufferS(this, -1, 0, var3, var3, var4);
  38.    }
  39.  
  40.    public CharBuffer duplicate() {
  41.       return new DirectCharBufferS(this, this.markValue(), this.position(), this.limit(), this.capacity(), 0);
  42.    }
  43.  
  44.    public CharBuffer asReadOnlyBuffer() {
  45.       return new DirectCharBufferRS(this, this.markValue(), this.position(), this.limit(), this.capacity(), 0);
  46.    }
  47.  
  48.    public long address() {
  49.       return this.address;
  50.    }
  51.  
  52.    // $FF: renamed from: ix (int) long
  53.    private long method_0(int var1) {
  54.       return this.address + (long)(var1 << 1);
  55.    }
  56.  
  57.    public char get() {
  58.       return Bits.swap(unsafe.getChar(this.method_0(this.nextGetIndex())));
  59.    }
  60.  
  61.    public char get(int var1) {
  62.       return Bits.swap(unsafe.getChar(this.method_0(this.checkIndex(var1))));
  63.    }
  64.  
  65.    public CharBuffer get(char[] var1, int var2, int var3) {
  66.       if (var3 << 1 > 6) {
  67.          checkBounds(var2, var3, var1.length);
  68.          int var4 = this.position();
  69.          int var5 = this.limit();
  70.  
  71.          assert var4 <= var5;
  72.  
  73.          int var6 = var4 <= var5 ? var5 - var4 : 0;
  74.          if (var3 > var6) {
  75.             throw new BufferUnderflowException();
  76.          }
  77.  
  78.          if (this.order() != ByteOrder.nativeOrder()) {
  79.             Bits.copyToCharArray(this.method_0(var4), var1, (long)(var2 << 1), (long)(var3 << 1));
  80.          } else {
  81.             Bits.copyToByteArray(this.method_0(var4), var1, (long)(var2 << 1), (long)(var3 << 1));
  82.          }
  83.  
  84.          this.position(var4 + var3);
  85.       } else {
  86.          super.get(var1, var2, var3);
  87.       }
  88.  
  89.       return this;
  90.    }
  91.  
  92.    public CharBuffer put(char var1) {
  93.       unsafe.putChar(this.method_0(this.nextPutIndex()), Bits.swap(var1));
  94.       return this;
  95.    }
  96.  
  97.    public CharBuffer put(int var1, char var2) {
  98.       unsafe.putChar(this.method_0(this.checkIndex(var1)), Bits.swap(var2));
  99.       return this;
  100.    }
  101.  
  102.    public CharBuffer put(CharBuffer var1) {
  103.       if (var1 instanceof DirectCharBufferS) {
  104.          if (var1 == this) {
  105.             throw new IllegalArgumentException();
  106.          }
  107.  
  108.          DirectCharBufferS var2 = (DirectCharBufferS)var1;
  109.          int var3 = var2.position();
  110.          int var4 = var2.limit();
  111.  
  112.          assert var3 <= var4;
  113.  
  114.          int var5 = var3 <= var4 ? var4 - var3 : 0;
  115.          int var6 = this.position();
  116.          int var7 = this.limit();
  117.  
  118.          assert var6 <= var7;
  119.  
  120.          int var8 = var6 <= var7 ? var7 - var6 : 0;
  121.          if (var5 > var8) {
  122.             throw new BufferOverflowException();
  123.          }
  124.  
  125.          unsafe.copyMemory(var2.method_0(var3), this.method_0(var6), (long)(var5 << 1));
  126.          var2.position(var3 + var5);
  127.          this.position(var6 + var5);
  128.       } else if (var1.hb != null) {
  129.          int var9 = var1.position();
  130.          int var10 = var1.limit();
  131.  
  132.          assert var9 <= var10;
  133.  
  134.          int var11 = var9 <= var10 ? var10 - var9 : 0;
  135.          this.put(var1.hb, var1.offset + var9, var11);
  136.          var1.position(var9 + var11);
  137.       } else {
  138.          super.put(var1);
  139.       }
  140.  
  141.       return this;
  142.    }
  143.  
  144.    public CharBuffer put(char[] var1, int var2, int var3) {
  145.       if (var3 << 1 > 6) {
  146.          checkBounds(var2, var3, var1.length);
  147.          int var4 = this.position();
  148.          int var5 = this.limit();
  149.  
  150.          assert var4 <= var5;
  151.  
  152.          int var6 = var4 <= var5 ? var5 - var4 : 0;
  153.          if (var3 > var6) {
  154.             throw new BufferOverflowException();
  155.          }
  156.  
  157.          if (this.order() != ByteOrder.nativeOrder()) {
  158.             Bits.copyFromCharArray(var1, (long)(var2 << 1), this.method_0(var4), (long)(var3 << 1));
  159.          } else {
  160.             Bits.copyFromByteArray(var1, (long)(var2 << 1), this.method_0(var4), (long)(var3 << 1));
  161.          }
  162.  
  163.          this.position(var4 + var3);
  164.       } else {
  165.          super.put(var1, var2, var3);
  166.       }
  167.  
  168.       return this;
  169.    }
  170.  
  171.    public CharBuffer compact() {
  172.       int var1 = this.position();
  173.       int var2 = this.limit();
  174.  
  175.       assert var1 <= var2;
  176.  
  177.       int var3 = var1 <= var2 ? var2 - var1 : 0;
  178.       unsafe.copyMemory(this.method_0(var1), this.method_0(0), (long)(var3 << 1));
  179.       this.position(var3);
  180.       this.limit(this.capacity());
  181.       return this;
  182.    }
  183.  
  184.    public boolean isDirect() {
  185.       return true;
  186.    }
  187.  
  188.    public boolean isReadOnly() {
  189.       return false;
  190.    }
  191.  
  192.    public String toString(int var1, int var2) {
  193.       if (var2 <= this.limit() && var1 <= var2) {
  194.          try {
  195.             int var3 = var2 - var1;
  196.             char[] var4 = new char[var3];
  197.             CharBuffer var5 = CharBuffer.wrap(var4);
  198.             CharBuffer var6 = this.duplicate();
  199.             var6.position(var1);
  200.             var6.limit(var2);
  201.             var5.put(var6);
  202.             return new String(var4);
  203.          } catch (StringIndexOutOfBoundsException var7) {
  204.             throw new IndexOutOfBoundsException();
  205.          }
  206.       } else {
  207.          throw new IndexOutOfBoundsException();
  208.       }
  209.    }
  210.  
  211.    public CharSequence subSequence(int var1, int var2) {
  212.       int var3 = this.position();
  213.       int var4 = this.limit();
  214.  
  215.       assert var3 <= var4;
  216.  
  217.       var3 = var3 <= var4 ? var3 : var4;
  218.       int var5 = var4 - var3;
  219.       if (var1 >= 0 && var2 <= var5 && var1 <= var2) {
  220.          int var6 = var2 - var1;
  221.          int var7 = var3 + var1 << 1;
  222.  
  223.          assert var7 >= 0;
  224.  
  225.          return new DirectCharBufferS(this, -1, 0, var6, var6, var7);
  226.       } else {
  227.          throw new IndexOutOfBoundsException();
  228.       }
  229.    }
  230.  
  231.    public ByteOrder order() {
  232.       return ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN ? ByteOrder.LITTLE_ENDIAN : ByteOrder.BIG_ENDIAN;
  233.    }
  234. }
  235.