Return-Path: Delivered-To: apmail-harmony-dev-archive@www.apache.org Received: (qmail 45610 invoked from network); 4 Jun 2008 10:48:10 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 4 Jun 2008 10:48:10 -0000 Received: (qmail 2060 invoked by uid 500); 4 Jun 2008 10:48:10 -0000 Delivered-To: apmail-harmony-dev-archive@harmony.apache.org Received: (qmail 2031 invoked by uid 500); 4 Jun 2008 10:48:10 -0000 Mailing-List: contact dev-help@harmony.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@harmony.apache.org Delivered-To: mailing list dev@harmony.apache.org Received: (qmail 2020 invoked by uid 99); 4 Jun 2008 10:48:10 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 04 Jun 2008 03:48:10 -0700 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of oliver.deakin@googlemail.com designates 72.14.214.236 as permitted sender) Received: from [72.14.214.236] (HELO hu-out-0506.google.com) (72.14.214.236) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 04 Jun 2008 10:47:18 +0000 Received: by hu-out-0506.google.com with SMTP id 16so61197hue.15 for ; Wed, 04 Jun 2008 03:47:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=s5qiIw01eEJAJXZ7C5UgEKL2kFW5PpmJudpi/yypjqs=; b=d/2A5y6SnmgtIMrdmjKsrxNszyRgnsayJ/v9jC8GQOg0JmDC5tgGJ06DdymvdrdPUs b9o6cxNDrhTogpvBoayJobFwoIYWeqrmnXaQi9HO0jEbOPaxTu2SBvvR6Bwn4hJieXLJ pNmGxQEqm5FfxogxCpleMGmog8gDGI1d3wHBI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; b=TMmll/HWWlj8REGbzDbjixR6XnLKTv1p23JLAZOQZnZOrgdCK6RxeSk12rQnpJA//v Q2TbNiWO/ytv6Lc8+3tiBdHAljFTTwLSzYdxTp8fEjNK9jOXpobS7+rOz5Mb4UhejSZ0 JfoFo1Oe+z3QwIK5L5n07B4ihXa/mmG120Eu0= Received: by 10.86.78.4 with SMTP id a4mr4254810fgb.29.1212572604478; Wed, 04 Jun 2008 02:43:24 -0700 (PDT) Received: from ?9.20.183.81? ( [195.212.29.92]) by mx.google.com with ESMTPS id d6sm1402513fga.2.2008.06.04.02.43.21 (version=TLSv1/SSLv3 cipher=RC4-MD5); Wed, 04 Jun 2008 02:43:22 -0700 (PDT) Message-ID: <484663BB.5010103@googlemail.com> Date: Wed, 04 Jun 2008 10:43:23 +0100 From: Oliver Deakin User-Agent: Thunderbird 2.0.0.14 (Windows/20080421) MIME-Version: 1.0 To: dev@harmony.apache.org Subject: Re: svn commit: r662810 - in /harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200: BHSDCodec.java BandSet.java CPClass.java Codec.java CpBands.java PopulationCodec.java RunCodec.java Segment.java SegmentHeader.jav References: <3b3f27c60806031849k3901e626vc7d75069eb6808f7@mail.gmail.com> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Fails for me after a rebuild - it looks like the unresolved classes causing the failure are missing from the bcel-5.2.jar (e.g. org.apache.bcel.classfile.AnnotationDefault). Regards, Oliver Sian January wrote: > Hi Nathan, > > It works for me, but I had to do a 'clean' first. Would you mind trying > this? > > Thanks, > > Sian > > > On 04/06/2008, Nathan Beyer wrote: > >> This revision or one related to it broke something. I'm getting compile >> errors in Segment about unresolvable types. >> >> On Tue, Jun 3, 2008 at 9:17 AM, wrote: >> >> >>> Author: sjanuary >>> Date: Tue Jun 3 07:17:00 2008 >>> New Revision: 662810 >>> >>> URL: http://svn.apache.org/viewvc?rev=662810&view=rev >>> Log: >>> Pack200 segment header and supporting encode methods >>> >>> Modified: >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CPClass.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Codec.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CpBands.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PopulationCodec.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/RunCodec.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java >>> >>> >>> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/SegmentHeader.java >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BHSDCodec.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -308,6 +308,10 @@ >>> return bytes; >>> } >>> >>> + public byte[] encode(long value) throws Pack200Exception { >>> + return encode(value, 0); >>> + } >>> + >>> /** >>> * Returns true if this codec is a delta codec >>> * >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/BandSet.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -22,11 +22,14 @@ >>> >>> public abstract class BandSet { >>> >>> - public abstract void pack(OutputStream out) throws IOException; >>> + public abstract void pack(OutputStream out) throws IOException, >>> Pack200Exception; >>> >>> - protected byte[] encodeScalar(int[] band) { >>> - // TODO Auto-generated method stub >>> - return null; >>> + public byte[] encodeScalar(int[] band, BHSDCodec codec) throws >>> Pack200Exception { >>> + return codec.encode(band); >>> + } >>> + >>> + public byte[] encodeScalar(int value, BHSDCodec codec) throws >>> Pack200Exception { >>> + return codec.encode(value); >>> } >>> >>> } >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CPClass.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CPClass.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CPClass.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CPClass.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -17,7 +17,7 @@ >>> package org.apache.harmony.pack200; >>> >>> >>> -public class CPClass { >>> +public class CPClass implements Comparable { >>> >>> >>> private final String className; >>> @@ -26,4 +26,8 @@ >>> this.className = className; >>> } >>> >>> + public int compareTo(Object arg0) { >>> + return className.compareTo(((CPClass)arg0).className); >>> + } >>> + >>> } >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Codec.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Codec.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Codec.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Codec.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -103,6 +103,30 @@ >>> Pack200Exception; >>> >>> /** >>> + * Encode a single value into a sequence of bytes. >>> + * >>> + * @param value >>> + * the value to encode >>> + * @param last >>> + * the previous value encoded (for delta encodings) >>> + * @return the encoded bytes >>> + * @throws Pack200Exception >>> + */ >>> + public abstract byte[] encode(long value, long last) >>> + throws Pack200Exception; >>> + >>> + /** >>> + * Encode a single value into a sequence of bytes. Note that this >>> method can >>> + * only be used for non-delta encodings. >>> + * >>> + * @param value >>> + * the value to encode >>> + * @return the encoded bytes >>> + * @throws Pack200Exception >>> + */ >>> + public abstract byte[] encode(long value) throws Pack200Exception; >>> + >>> + /** >>> * Decode a sequence of bytes from the given input stream, returning >>> the >>> * value as a long. If this encoding is a delta encoding (d=1) then >>> >> the >> >>> * previous value must be passed in as a parameter. If it is a >>> non-delta >>> @@ -250,4 +274,29 @@ >>> } >>> return result; >>> } >>> + >>> + /** >>> + * Encode a sequence of integers into a byte array >>> + * >>> + * @param ints >>> + * the values to encode >>> + * @return byte[] encoded bytes >>> + * @throws Pack200Exception >>> + * if there is a problem encoding any of the values >>> + */ >>> + public byte[] encode(int[] ints) throws Pack200Exception { >>> + int total = 0; >>> + byte[][] bytes = new byte[ints.length][]; >>> + for (int i = 0; i < ints.length; i++) { >>> + bytes[i] = encode(ints[i]); >>> + total += bytes[i].length; >>> + } >>> + byte[] encoded = new byte[total]; >>> + int index = 0; >>> + for (int i = 0; i < bytes.length; i++) { >>> + System.arraycopy(bytes[i], 0, encoded, index, >>> bytes[i].length); >>> + index += bytes[i].length; >>> + } >>> + return encoded; >>> + } >>> } >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CpBands.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CpBands.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CpBands.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/CpBands.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -129,17 +129,21 @@ >>> public void addConstantNameAndType(ConstantNameAndType constant) { >>> String name = constant.getName(currentConstantPool); >>> String signature = constant.getSignature(currentConstantPool); >>> - cp_Signature.add(signature); >>> - CPNameAndType nameAndType = new CPNameAndType(name, >>> - signature); >>> - stringsToCpNameAndType.put(name + ":" + signature, nameAndType); >>> - cp_Descr.add(nameAndType); >>> + String descr = name + ":" + signature; >>> + if(stringsToCpNameAndType.get(descr) != null) { >>> + cp_Signature.add(signature); >>> + CPNameAndType nameAndType = new CPNameAndType(name, >>> + signature); >>> + stringsToCpNameAndType.put(descr, nameAndType); >>> + cp_Descr.add(nameAndType); >>> + } >>> } >>> >>> public void addConstantString(ConstantString constant) { >>> String string = constant.getBytes(currentConstantPool); >>> - if(stringsToCpString.get(string) == null) { >>> - CPString cpString = new CPString(string); >>> + CPString cpString = (CPString) stringsToCpString.get(string); >>> + if(cpString == null) { >>> + cpString = new CPString(string); >>> cp_String.add(cpString); >>> stringsToCpString.put(string, cpString); >>> } >>> @@ -159,18 +163,25 @@ >>> } >>> >>> public CPClass getCPClass(String className) { >>> - if(stringsToCpClass.get(className) == null) { >>> - throw new RuntimeException("null"); >>> + CPClass cpClass = (CPClass) stringsToCpClass.get(className); >>> + if(cpClass == null) { >>> + cpClass = new CPClass(className); >>> + cp_Class.add(cpClass); >>> + stringsToCpClass.put(className, cpClass); >>> } >>> - return (CPClass) stringsToCpClass.get(className); >>> + return cpClass; >>> } >>> >>> public CPNameAndType getCPNameAndType(String name, String signature) >>> >> { >> >>> - String str = name + ":" + signature; >>> - if(stringsToCpNameAndType.get(str) == null) { >>> - throw new RuntimeException("null"); >>> + String descr = name + ":" + signature; >>> + CPNameAndType nameAndType = (CPNameAndType) >>> stringsToCpNameAndType.get(descr); >>> + if (nameAndType == null) { >>> + cp_Signature.add(signature); >>> + nameAndType = new CPNameAndType(name, signature); >>> + stringsToCpNameAndType.put(descr, nameAndType); >>> + cp_Descr.add(nameAndType); >>> } >>> - return (CPNameAndType) stringsToCpNameAndType.get(str); >>> + return nameAndType; >>> } >>> >>> } >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PopulationCodec.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PopulationCodec.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PopulationCodec.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/PopulationCodec.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -137,4 +137,14 @@ >>> public Codec getUnvafouredCodec() { >>> return unvafouredCodec; >>> } >>> + >>> + public byte[] encode(long value, long last) throws Pack200Exception >>> >> { >> >>> + // TODO Auto-generated method stub >>> + return null; >>> + } >>> + >>> + public byte[] encode(long value) throws Pack200Exception { >>> + // TODO Auto-generated method stub >>> + return null; >>> + } >>> } >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/RunCodec.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/RunCodec.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/RunCodec.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/RunCodec.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -125,4 +125,14 @@ >>> return "RunCodec[k=" + k + ";aCodec=" + aCodec + "bCodec=" + >>> >> bCodec >> >>> + "]"; >>> } >>> + >>> + public byte[] encode(long value, long last) throws Pack200Exception >>> >> { >> >>> + // TODO Auto-generated method stub >>> + return null; >>> + } >>> + >>> + public byte[] encode(long value) throws Pack200Exception { >>> + // TODO Auto-generated method stub >>> + return null; >>> + } >>> } >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/Segment.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -75,7 +75,7 @@ >>> private BcBands bcBands; >>> private FileBands fileBands; >>> >>> - public void pack(List classes, OutputStream out) throws IOException >>> >> { >> >>> + public void pack(List classes, OutputStream out) throws IOException, >>> Pack200Exception { >>> segmentHeader = new SegmentHeader(); >>> cpBands = new CpBands(); >>> attributeDefinitionBands = new AttributeDefinitionBands(); >>> >>> Modified: >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/SegmentHeader.java >> >>> URL: >>> >>> >> http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/SegmentHeader.java?rev=662810&r1=662809&r2=662810&view=diff >> >>> >> ============================================================================== >> >>> --- >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/SegmentHeader.java >> >>> (original) >>> +++ >>> >>> >> harmony/enhanced/classlib/trunk/modules/pack200/src/main/java/org/apache/harmony/pack200/SegmentHeader.java >> >>> Tue Jun 3 07:17:00 2008 >>> @@ -19,79 +19,298 @@ >>> import java.io.IOException; >>> import java.io.OutputStream; >>> >>> - >>> +/** >>> + * SegmentHeader is the header band of a {@link Segment} >>> + */ >>> public class SegmentHeader extends BandSet { >>> >>> private static final int[] magic = { 0xCA, 0xFE, 0xD0, 0x0D }; >>> + private static final int archive_minver = 7; >>> + private static final int archive_majver = 150; >>> + >>> + private int archive_options; >>> + >>> + private int cp_Utf8_count; >>> + private int cp_Int_count; >>> + private int cp_Float_count; >>> + private int cp_Long_count; >>> + private int cp_Double_count; >>> + private int cp_String_count; >>> + private int cp_Class_count; >>> + private int cp_Signature_count; >>> + private int cp_Descr_count; >>> + private int cp_Field_count; >>> + private int cp_Method_count; >>> + private int cp_Imethod_count; >>> + >>> + private int attribute_definition_count; >>> + private final byte[] band_headers = new byte[0]; >>> + >>> + private boolean have_all_code_flags; >>> + >>> + private int archive_size_hi; >>> + private int archive_size_lo; >>> + private int archive_next_count; >>> + private int archive_modtime; >>> + private int file_count; >>> + >>> + private boolean deflate_hint; >>> + private boolean have_file_modtime; >>> + private boolean have_file_options; >>> + private boolean have_file_size_hi; >>> + private boolean have_class_flags_hi; >>> + private boolean have_field_flags_hi; >>> + private boolean have_method_flags_hi; >>> + private boolean have_code_flags_hi; >>> + >>> + private int ic_count; >>> + private int default_class_minver; >>> + private int default_class_majver; >>> + private int class_count; >>> + >>> + /** >>> + * Encode and write the SegmentHeader bands to the OutputStream >>> + */ >>> + public void pack(OutputStream out) throws IOException, >>> Pack200Exception { >>> + out.write(encodeScalar(magic, Codec.BYTE1)); >>> + out.write(encodeScalar(archive_minver, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(archive_majver, Codec.UNSIGNED5)); >>> + calculateArchiveOptions(); >>> + out.write(encodeScalar(archive_options, Codec.UNSIGNED5)); >>> + writeArchiveFileCounts(out); >>> + writeArchiveSpecialCounts(out); >>> + writeCpCounts(out); >>> + writeClassCounts(out); >>> + if (band_headers.length > 0) { >>> + out.write(band_headers); >>> + } >>> + } >>> + >>> + private void calculateArchiveOptions() { >>> + if(attribute_definition_count > 0 || band_headers.length > 0) { >>> + archive_options |= 1; >>> + } >>> + if(cp_Int_count > 0 || cp_Float_count > 0 || cp_Long_count > 0 >>> >> || >> >>> cp_Double_count > 0) { >>> + archive_options |= (1 << 1); >>> + } >>> + if(have_all_code_flags) { >>> + archive_options |= (1 << 2); >>> + } >>> + if(file_count > 0) { >>> + archive_options |= (1 << 4); >>> + } >>> + if(deflate_hint) { >>> + archive_options |= (1 << 5); >>> + } >>> + if(have_file_modtime) { >>> + archive_options |= (1 << 6); >>> + } >>> + if(have_file_options) { >>> + archive_options |= (1 << 7); >>> + } >>> + if(have_file_size_hi) { >>> + archive_options |= (1 << 8); >>> + } >>> + if(have_class_flags_hi) { >>> + archive_options |= (1 << 9); >>> + } >>> + if(have_field_flags_hi) { >>> + archive_options |= (1 << 10); >>> + } >>> + if(have_method_flags_hi) { >>> + archive_options |= (1 << 11); >>> + } >>> + if(have_code_flags_hi) { >>> + archive_options |= (1 << 12); >>> + } >>> + } >>> + >>> + public void setCp_Utf8_count(int count) { >>> + cp_Utf8_count = count; >>> + } >>> + >>> + public void setCp_Int_count(int count) { >>> + cp_Int_count = count; >>> + } >>> + >>> + public void setCp_Float_count(int count) { >>> + cp_Float_count = count; >>> + } >>> + >>> + public void setCp_Long_count(int count) { >>> + cp_Long_count = count; >>> + } >>> + >>> + public void setCp_Double_count(int count) { >>> + cp_Double_count = count; >>> + } >>> + >>> + public void setCp_String_count(int count) { >>> + cp_String_count = count; >>> + } >>> + >>> + public void setCp_Class_count(int count) { >>> + cp_Class_count = count; >>> + } >>> + >>> + public void setCp_Signature_count(int count) { >>> + cp_Signature_count = count; >>> + } >>> + >>> + public void setCp_Descr_count(int count) { >>> + cp_Descr_count = count; >>> + } >>> + >>> + public void setCp_Field_count(int count) { >>> + cp_Field_count = count; >>> + } >>> + >>> + public void setCp_Method_count(int count) { >>> + cp_Method_count = count; >>> + } >>> + >>> + public void setCp_Imethod_count(int count) { >>> + cp_Imethod_count = count; >>> + } >>> + >>> + public void setAttributeDefinition_count(int count) { >>> + attribute_definition_count = count; >>> + } >>> >>> - private int cpUtf8Count; >>> - private int cpIntCount; >>> - private int cpFloatCount; >>> - private int cpLongCount; >>> - private int cpDoubleCount; >>> - private int cpStringCount; >>> - private int cpClassCount; >>> - private int cpSignatureCount; >>> - private int cpDescrCount; >>> - private int cpFieldCount; >>> - private int cpMethodCount; >>> - private int cpImethodCount; >>> - private int attributeDefinitionCount; >>> >>> - public void pack(OutputStream out) throws IOException { >>> - out.write(encodeScalar(magic)); >>> + public void setAttribute_definition_count(int >>> attribute_definition_count) { >>> + this.attribute_definition_count = attribute_definition_count; >>> } >>> >>> - public void setCpUtf8Count(int count) { >>> - cpUtf8Count = count; >>> + >>> + public void setHave_all_code_flags(boolean have_all_code_flags) { >>> + this.have_all_code_flags = have_all_code_flags; >>> } >>> >>> - public void setCpIntCount(int count) { >>> - cpIntCount = count; >>> + >>> + public void setArchive_size_hi(int archive_size_hi) { >>> + this.archive_size_hi = archive_size_hi; >>> } >>> >>> - public void setCpFloatCount(int count) { >>> - cpFloatCount = count; >>> + >>> + public void setArchive_size_lo(int archive_size_lo) { >>> + this.archive_size_lo = archive_size_lo; >>> } >>> >>> - public void setCpLongCount(int count) { >>> - cpLongCount = count; >>> + >>> + public void setArchive_next_count(int archive_next_count) { >>> + this.archive_next_count = archive_next_count; >>> } >>> >>> - public void setCpDoubleCount(int count) { >>> - cpDoubleCount = count; >>> + >>> + public void setArchive_modtime(int archive_modtime) { >>> + this.archive_modtime = archive_modtime; >>> } >>> >>> - public void setCpStringCount(int count) { >>> - cpStringCount = count; >>> + >>> + public void setFile_count(int file_count) { >>> + this.file_count = file_count; >>> } >>> >>> - public void setCpClassCount(int count) { >>> - cpClassCount = count; >>> + >>> + public void setDeflate_hint(boolean deflate_hint) { >>> + this.deflate_hint = deflate_hint; >>> } >>> >>> - public void setCpSignatureCount(int count) { >>> - cpSignatureCount = count; >>> + >>> + public void setHave_file_modtime(boolean have_file_modtime) { >>> + this.have_file_modtime = have_file_modtime; >>> } >>> >>> - public void setCpDescrCount(int count) { >>> - cpDescrCount = count; >>> + >>> + public void setHave_file_options(boolean have_file_options) { >>> + this.have_file_options = have_file_options; >>> + } >>> + >>> + >>> + public void setHave_file_size_hi(boolean have_file_size_hi) { >>> + this.have_file_size_hi = have_file_size_hi; >>> + } >>> + >>> + >>> + public void setHave_class_flags_hi(boolean have_class_flags_hi) { >>> + this.have_class_flags_hi = have_class_flags_hi; >>> + } >>> + >>> + >>> + public void setHave_field_flags_hi(boolean have_field_flags_hi) { >>> + this.have_field_flags_hi = have_field_flags_hi; >>> + } >>> + >>> + >>> + public void setHave_method_flags_hi(boolean have_method_flags_hi) { >>> + this.have_method_flags_hi = have_method_flags_hi; >>> + } >>> + >>> + >>> + public void setHave_code_flags_hi(boolean have_code_flags_hi) { >>> + this.have_code_flags_hi = have_code_flags_hi; >>> + } >>> + >>> + >>> + public void setIc_count(int ic_count) { >>> + this.ic_count = ic_count; >>> + } >>> + >>> + >>> + public void setDefault_class_minver(int default_class_minver) { >>> + this.default_class_minver = default_class_minver; >>> + } >>> + >>> + >>> + public void setDefault_class_majver(int default_class_majver) { >>> + this.default_class_majver = default_class_majver; >>> + } >>> + >>> + >>> + public void setClass_count(int class_count) { >>> + this.class_count = class_count; >>> } >>> >>> - public void setCpFieldCount(int count) { >>> - cpFieldCount = count; >>> + private void writeCpCounts(OutputStream out) throws IOException, >>> Pack200Exception { >>> + out.write(encodeScalar(cp_Utf8_count, Codec.UNSIGNED5)); >>> + if((archive_options & (1 << 1)) != 0) { // have_cp_numbers >>> + out.write(encodeScalar(cp_Int_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Float_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Long_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Double_count, Codec.UNSIGNED5)); >>> + } >>> + out.write(encodeScalar(cp_String_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Class_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Signature_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Descr_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Field_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Method_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(cp_Imethod_count, Codec.UNSIGNED5)); >>> } >>> >>> - public void setCpMethodCount(int count) { >>> - cpMethodCount = count; >>> + private void writeClassCounts(OutputStream out) throws IOException, >>> Pack200Exception { >>> + out.write(encodeScalar(ic_count, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(default_class_minver, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(default_class_majver, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(class_count, Codec.UNSIGNED5)); >>> } >>> >>> - public void setCpImethodCount(int count) { >>> - cpImethodCount = count; >>> + private void writeArchiveSpecialCounts(OutputStream out) throws >>> IOException, Pack200Exception { >>> + if((archive_options & 1) > 0) { // have_special_formats >>> + out.write(encodeScalar(band_headers.length, >>> >> Codec.UNSIGNED5)); >> >>> + out.write(encodeScalar(attribute_definition_count, >>> Codec.UNSIGNED5)); >>> + } >>> } >>> >>> - public void setAttributeDefinitionCount(int count) { >>> - attributeDefinitionCount = count; >>> + private void writeArchiveFileCounts(OutputStream out) throws >>> IOException, Pack200Exception { >>> + if((archive_options & (1 << 4)) > 0) { // have_file_headers >>> + out.write(encodeScalar(archive_size_hi, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(archive_size_lo, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(archive_next_count, >>> >> Codec.UNSIGNED5)); >> >>> + out.write(encodeScalar(archive_modtime, Codec.UNSIGNED5)); >>> + out.write(encodeScalar(file_count, Codec.UNSIGNED5)); >>> + } >>> } >>> >>> -} >>> +} >>> \ No newline at end of file >>> >>> >>> >>> > > > > -- Oliver Deakin Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU