| 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
/*  | 
 | 
 * Licensed to the Apache Software Foundation (ASF) under one or more  | 
 | 
 * contributor license agreements.  See the NOTICE file distributed with  | 
 | 
 * this work for additional information regarding copyright ownership.  | 
 | 
 * The ASF licenses this file to You under the Apache License, Version 2.0  | 
 | 
 * (the "License"); you may not use this file except in compliance with  | 
 | 
 * the License.  You may obtain a copy of the License at  | 
 | 
 *  | 
 | 
 *      http://www.apache.org/licenses/LICENSE-2.0  | 
 | 
 *  | 
 | 
 * Unless required by applicable law or agreed to in writing, software  | 
 | 
 * distributed under the License is distributed on an "AS IS" BASIS,  | 
 | 
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  | 
 | 
 * See the License for the specific language governing permissions and  | 
 | 
 * limitations under the License.  | 
 | 
 */  | 
 | 
 | 
 | 
package com.sun.org.apache.bcel.internal.classfile;  | 
 | 
 | 
 | 
import java.io.DataInput;  | 
 | 
import java.io.DataOutputStream;  | 
 | 
import java.io.IOException;  | 
 | 
 | 
 | 
import com.sun.org.apache.bcel.internal.Const;  | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
public final class Synthetic extends Attribute { | 
 | 
 | 
 | 
    private byte[] bytes;  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    public Synthetic(final Synthetic c) { | 
 | 
        this(c.getNameIndex(), c.getLength(), c.getBytes(), c.getConstantPool());  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    public Synthetic(final int name_index, final int length, final byte[] bytes, final ConstantPool constant_pool) { | 
 | 
        super(Const.ATTR_SYNTHETIC, name_index, length, constant_pool);  | 
 | 
        this.bytes = bytes;  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    Synthetic(final int name_index, final int length, final DataInput input, final ConstantPool constant_pool)  | 
 | 
            throws IOException { | 
 | 
        this(name_index, length, (byte[]) null, constant_pool);  | 
 | 
        if (length > 0) { | 
 | 
            bytes = new byte[length];  | 
 | 
            input.readFully(bytes);  | 
 | 
            System.err.println("Synthetic attribute with length > 0"); | 
 | 
        }  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    @Override  | 
 | 
    public void accept( final Visitor v ) { | 
 | 
        v.visitSynthetic(this);  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
     */  | 
 | 
    @Override  | 
 | 
    public final void dump( final DataOutputStream file ) throws IOException { | 
 | 
        super.dump(file);  | 
 | 
        if (super.getLength() > 0) { | 
 | 
            file.write(bytes, 0, super.getLength());  | 
 | 
        }  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
     */  | 
 | 
    public final byte[] getBytes() { | 
 | 
        return bytes;  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
     */  | 
 | 
    public final void setBytes( final byte[] bytes ) { | 
 | 
        this.bytes = bytes;  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
     */  | 
 | 
    @Override  | 
 | 
    public final String toString() { | 
 | 
        final StringBuilder buf = new StringBuilder("Synthetic"); | 
 | 
        if (super.getLength() > 0) { | 
 | 
            buf.append(" ").append(Utility.toHexString(bytes)); | 
 | 
        }  | 
 | 
        return buf.toString();  | 
 | 
    }  | 
 | 
 | 
 | 
 | 
 | 
      | 
 | 
 | 
 | 
     */  | 
 | 
    @Override  | 
 | 
    public Attribute copy( final ConstantPool _constant_pool ) { | 
 | 
        final Synthetic c = (Synthetic) clone();  | 
 | 
        if (bytes != null) { | 
 | 
            c.bytes = new byte[bytes.length];  | 
 | 
            System.arraycopy(bytes, 0, c.bytes, 0, bytes.length);  | 
 | 
        }  | 
 | 
        c.setConstantPool(_constant_pool);  | 
 | 
        return c;  | 
 | 
    }  | 
 | 
}  |