home *** CD-ROM | disk | FTP | other *** search
- package java.io;
-
- class ObjectOutputStream$PutFieldImpl extends ObjectOutputStream.PutField {
- private final ObjectStreamClass desc;
- private final byte[] primVals;
- private final Object[] objVals;
- // $FF: synthetic field
- final ObjectOutputStream this$0;
-
- ObjectOutputStream$PutFieldImpl(ObjectOutputStream var1, ObjectStreamClass var2) {
- this.this$0 = var1;
- this.desc = var2;
- this.primVals = new byte[var2.getPrimDataSize()];
- this.objVals = new Object[var2.getNumObjFields()];
- }
-
- public void put(String var1, boolean var2) {
- Bits.putBoolean(this.primVals, this.getFieldOffset(var1, Boolean.TYPE), var2);
- }
-
- public void put(String var1, byte var2) {
- this.primVals[this.getFieldOffset(var1, Byte.TYPE)] = var2;
- }
-
- public void put(String var1, char var2) {
- Bits.putChar(this.primVals, this.getFieldOffset(var1, Character.TYPE), var2);
- }
-
- public void put(String var1, short var2) {
- Bits.putShort(this.primVals, this.getFieldOffset(var1, Short.TYPE), var2);
- }
-
- public void put(String var1, int var2) {
- Bits.putInt(this.primVals, this.getFieldOffset(var1, Integer.TYPE), var2);
- }
-
- public void put(String var1, float var2) {
- Bits.putFloat(this.primVals, this.getFieldOffset(var1, Float.TYPE), var2);
- }
-
- public void put(String var1, long var2) {
- Bits.putLong(this.primVals, this.getFieldOffset(var1, Long.TYPE), var2);
- }
-
- public void put(String var1, double var2) {
- Bits.putDouble(this.primVals, this.getFieldOffset(var1, Double.TYPE), var2);
- }
-
- public void put(String var1, Object var2) {
- this.objVals[this.getFieldOffset(var1, Object.class)] = var2;
- }
-
- public void write(ObjectOutput var1) throws IOException {
- if (this.this$0 != var1) {
- throw new IllegalArgumentException("wrong stream");
- } else {
- var1.write(this.primVals, 0, this.primVals.length);
- ObjectStreamField[] var2 = this.desc.getFields(false);
- int var3 = var2.length - this.objVals.length;
-
- for(int var4 = 0; var4 < this.objVals.length; ++var4) {
- if (var2[var3 + var4].isUnshared()) {
- throw new IOException("cannot write unshared object");
- }
-
- var1.writeObject(this.objVals[var4]);
- }
-
- }
- }
-
- void writeFields() throws IOException {
- ObjectOutputStream.access$000(this.this$0).write(this.primVals, 0, this.primVals.length, false);
- ObjectStreamField[] var1 = this.desc.getFields(false);
- int var2 = var1.length - this.objVals.length;
-
- for(int var3 = 0; var3 < this.objVals.length; ++var3) {
- if (ObjectOutputStream.access$100()) {
- ObjectOutputStream.access$200(this.this$0).push("field (class \"" + this.desc.getName() + "\", name: \"" + var1[var2 + var3].getName() + "\", type: \"" + var1[var2 + var3].getType() + "\")");
- }
-
- try {
- ObjectOutputStream.access$300(this.this$0, this.objVals[var3], var1[var2 + var3].isUnshared());
- } finally {
- if (ObjectOutputStream.access$100()) {
- ObjectOutputStream.access$200(this.this$0).pop();
- }
-
- }
- }
-
- }
-
- private int getFieldOffset(String var1, Class var2) {
- ObjectStreamField var3 = this.desc.getField(var1, var2);
- if (var3 == null) {
- throw new IllegalArgumentException("no such field " + var1 + " with type " + var2);
- } else {
- return var3.getOffset();
- }
- }
- }
-