/* Class231 - Decompiled by JODE
 * Visit http://jode.sourceforge.net/
 */
import jaclib.memory.heap.NativeHeapBuffer;

import jaggl.OpenGL;

public abstract class Class231 implements Interface39
{
    int anInt3791 = -1;
    static final int anInt3792 = 34963;
    Class87_Sub2_Sub2 aClass87_Sub2_Sub2_3793;
    int anInt3794;
    boolean aBool3795;
    int anInt3796;
    int anInt3797;
    static final int anInt3798 = 34962;
    static int[] anIntArray3799 = new int[1];
    NativeHeapBuffer aNativeHeapBuffer3800;
    
    void method23() {
	if (((Class231) this).anInt3791 > 0) {
	    ((Class231) this).aClass87_Sub2_Sub2_3793.method17487
		(((Class231) this).anInt3791, ((Class231) this).anInt3797);
	    ((Class231) this).anInt3791 = -1;
	}
    }
    
    void method4645() {
	if (((Class231) this).anInt3791 < 0) {
	    if (((Class87_Sub2_Sub2) ((Class231) this).aClass87_Sub2_Sub2_3793)
		.aBool10996) {
		OpenGL.glGenBuffersARB(1, anIntArray3799, 0);
		((Class231) this).anInt3791 = anIntArray3799[0];
		OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				       ((Class231) this).anInt3791);
	    } else
		((Class231) this).anInt3791 = 0;
	}
    }
    
    Class231(Class87_Sub2_Sub2 class87_sub2_sub2, int i, boolean bool) {
	((Class231) this).aClass87_Sub2_Sub2_3793 = class87_sub2_sub2;
	((Class231) this).anInt3794 = i;
	((Class231) this).aBool3795 = bool;
    }
    
    long method4646() {
	return (((Class231) this).anInt3791 == 0
		? ((Class231) this).aNativeHeapBuffer3800.method61() : 0L);
    }
    
    void method4647() {
	if (((Class87_Sub2_Sub2) ((Class231) this).aClass87_Sub2_Sub2_3793)
	    .aBool10996)
	    OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				   ((Class231) this).anInt3791);
    }
    
    void method194(int i) {
	if (i > ((Class231) this).anInt3796) {
	    method4645();
	    if (((Class231) this).anInt3791 > 0) {
		OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				       ((Class231) this).anInt3791);
		OpenGL.glBufferDataARBub(((Class231) this).anInt3794, i, null,
					 0,
					 (((Class231) this).aBool3795 ? 35040
					  : 35044));
		((Class231) this).aClass87_Sub2_Sub2_3793.anInt9227
		    += i - ((Class231) this).anInt3796;
	    } else
		((Class231) this).aNativeHeapBuffer3800
		    = ((Class231) this).aClass87_Sub2_Sub2_3793
			  .method15446(i, false);
	    ((Class231) this).anInt3796 = i;
	}
	((Class231) this).anInt3797 = i;
    }
    
    public boolean method230(int i, int i_0_, long l) {
	method4645();
	if (((Class231) this).anInt3791 > 0) {
	    OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				   ((Class231) this).anInt3791);
	    OpenGL.glBufferSubDataARBa(((Class231) this).anInt3794, i, i_0_,
				       l);
	} else
	    ((Class231) this).aNativeHeapBuffer3800.aNativeHeap853.copy
		(((Class231) this).aNativeHeapBuffer3800.method61() + (long) i,
		 l, i_0_);
	return true;
    }
    
    public void method224() {
	OpenGL.glUnmapBufferARB(((Class231) this).anInt3794);
    }
    
    public boolean method228(int i, int i_1_, long l) {
	method4645();
	if (((Class231) this).anInt3791 > 0) {
	    OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				   ((Class231) this).anInt3791);
	    OpenGL.glBufferSubDataARBa(((Class231) this).anInt3794, i, i_1_,
				       l);
	} else
	    ((Class231) this).aNativeHeapBuffer3800.aNativeHeap853.copy
		(((Class231) this).aNativeHeapBuffer3800.method61() + (long) i,
		 l, i_1_);
	return true;
    }
    
    public long method232(int i, int i_2_) {
	OpenGL.glBindBufferARB(((Class231) this).anInt3794,
			       ((Class231) this).anInt3791);
	return (OpenGL.glMapBufferARB(((Class231) this).anInt3794, 35001)
		+ (long) i);
    }
    
    public void finalize() throws Throwable {
	method23();
	super.finalize();
    }
    
    public long method229(int i, int i_3_) {
	OpenGL.glBindBufferARB(((Class231) this).anInt3794,
			       ((Class231) this).anInt3791);
	return (OpenGL.glMapBufferARB(((Class231) this).anInt3794, 35001)
		+ (long) i);
    }
    
    void method196(int i) {
	if (i > ((Class231) this).anInt3796) {
	    method4645();
	    if (((Class231) this).anInt3791 > 0) {
		OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				       ((Class231) this).anInt3791);
		OpenGL.glBufferDataARBub(((Class231) this).anInt3794, i, null,
					 0,
					 (((Class231) this).aBool3795 ? 35040
					  : 35044));
		((Class231) this).aClass87_Sub2_Sub2_3793.anInt9227
		    += i - ((Class231) this).anInt3796;
	    } else
		((Class231) this).aNativeHeapBuffer3800
		    = ((Class231) this).aClass87_Sub2_Sub2_3793
			  .method15446(i, false);
	    ((Class231) this).anInt3796 = i;
	}
	((Class231) this).anInt3797 = i;
    }
    
    void method4648() throws Throwable {
	method23();
	super.finalize();
    }
    
    public int method15() {
	return ((Class231) this).anInt3797;
    }
    
    public void method176() {
	OpenGL.glUnmapBufferARB(((Class231) this).anInt3794);
    }
    
    void method190(int i) {
	if (i > ((Class231) this).anInt3796) {
	    method4645();
	    if (((Class231) this).anInt3791 > 0) {
		OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				       ((Class231) this).anInt3791);
		OpenGL.glBufferDataARBub(((Class231) this).anInt3794, i, null,
					 0,
					 (((Class231) this).aBool3795 ? 35040
					  : 35044));
		((Class231) this).aClass87_Sub2_Sub2_3793.anInt9227
		    += i - ((Class231) this).anInt3796;
	    } else
		((Class231) this).aNativeHeapBuffer3800
		    = ((Class231) this).aClass87_Sub2_Sub2_3793
			  .method15446(i, false);
	    ((Class231) this).anInt3796 = i;
	}
	((Class231) this).anInt3797 = i;
    }
    
    void method195(int i) {
	if (i > ((Class231) this).anInt3796) {
	    method4645();
	    if (((Class231) this).anInt3791 > 0) {
		OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				       ((Class231) this).anInt3791);
		OpenGL.glBufferDataARBub(((Class231) this).anInt3794, i, null,
					 0,
					 (((Class231) this).aBool3795 ? 35040
					  : 35044));
		((Class231) this).aClass87_Sub2_Sub2_3793.anInt9227
		    += i - ((Class231) this).anInt3796;
	    } else
		((Class231) this).aNativeHeapBuffer3800
		    = ((Class231) this).aClass87_Sub2_Sub2_3793
			  .method15446(i, false);
	    ((Class231) this).anInt3796 = i;
	}
	((Class231) this).anInt3797 = i;
    }
    
    public int method25() {
	return ((Class231) this).anInt3797;
    }
    
    public long method231(int i, int i_4_) {
	OpenGL.glBindBufferARB(((Class231) this).anInt3794,
			       ((Class231) this).anInt3791);
	return (OpenGL.glMapBufferARB(((Class231) this).anInt3794, 35001)
		+ (long) i);
    }
    
    void method24() {
	if (((Class231) this).anInt3791 > 0) {
	    ((Class231) this).aClass87_Sub2_Sub2_3793.method17487
		(((Class231) this).anInt3791, ((Class231) this).anInt3797);
	    ((Class231) this).anInt3791 = -1;
	}
    }
    
    void method4649() {
	if (((Class231) this).anInt3791 < 0) {
	    if (((Class87_Sub2_Sub2) ((Class231) this).aClass87_Sub2_Sub2_3793)
		.aBool10996) {
		OpenGL.glGenBuffersARB(1, anIntArray3799, 0);
		((Class231) this).anInt3791 = anIntArray3799[0];
		OpenGL.glBindBufferARB(((Class231) this).anInt3794,
				       ((Class231) this).anInt3791);
	    } else
		((Class231) this).anInt3791 = 0;
	}
    }
    
    long method4650() {
	return (((Class231) this).anInt3791 == 0
		? ((Class231) this).aNativeHeapBuffer3800.method61() : 0L);
    }
}
