From 473210a961853103e0155332b2df87559cc63f08 Mon Sep 17 00:00:00 2001 From: Dalibor Topic Date: Wed, 8 Aug 2007 08:00:32 +0000 Subject: [PATCH] re PR classpath/32844 (EnumSet causes code to be miscompiled) 2007-07-31 Dalibor Topic PR 32844 * java/util/EnumSet.java: Made class abstract per API spec. (size, iterator, add, addAll, clear, contains, containsAll, remove, removeAll, retainAll) Moved into an anonymous inner class in of(T). (allOf, noneOf, copyOf, of, range) Made more implementation independent. (of(T)) return an instance of an anonymous class implementing EmptySet. From-SVN: r127291 --- libjava/classpath/ChangeLog | 13 + libjava/classpath/java/util/EnumSet.java | 419 +++++++++--------- .../classpath/lib/java/util/EnumSet$1.class | Bin 1389 -> 3315 bytes .../classpath/lib/java/util/EnumSet$2.class | Bin 0 -> 1403 bytes libjava/classpath/lib/java/util/EnumSet.class | Bin 8348 -> 5459 bytes libjava/java/util/EnumSet$1.h | 26 +- libjava/java/util/EnumSet$2.h | 29 ++ libjava/java/util/EnumSet.h | 11 - 8 files changed, 259 insertions(+), 239 deletions(-) create mode 100644 libjava/classpath/lib/java/util/EnumSet$2.class create mode 100644 libjava/java/util/EnumSet$2.h diff --git a/libjava/classpath/ChangeLog b/libjava/classpath/ChangeLog index 33455acf899..cb34d1daaa1 100644 --- a/libjava/classpath/ChangeLog +++ b/libjava/classpath/ChangeLog @@ -1,3 +1,16 @@ +2007-07-31 Dalibor Topic + + PR 32844 + * java/util/EnumSet.java: + Made class abstract per API spec. + (size, iterator, add, addAll, clear, contains, + containsAll, remove, removeAll, retainAll) Moved + into an anonymous inner class in of(T). + (allOf, noneOf, copyOf, of, range) Made more + implementation independent. + (of(T)) return an instance of an anonymous class + implementing EmptySet. + 2007-07-28 Matthias Klose * include/jvmti.h(jniNativeInterface): Rename type. diff --git a/libjava/classpath/java/util/EnumSet.java b/libjava/classpath/java/util/EnumSet.java index 44ae370ba0b..543df0c0279 100644 --- a/libjava/classpath/java/util/EnumSet.java +++ b/libjava/classpath/java/util/EnumSet.java @@ -43,16 +43,20 @@ import java.io.Serializable; /** * @author Tom Tromey (tromey@redhat.com) * @author Andrew John Hughes (gnu_andrew@member.fsf.org) + * @author Dalibor Topic (robilad@kaffe.org) * @since 1.5 */ -// FIXME: serialization is special. -public class EnumSet> +// FIXME: serialization is special, uses SerializationProxy. +// of(E e) is the 'bottom' method that creates a real EnumSet. +public abstract class EnumSet> extends AbstractSet implements Cloneable, Serializable { private static final long serialVersionUID = 4782406773684236311L; + // These fields could go into the anonymous inner class in of(E), + // complementOf would need to be refactored then, though. BitSet store; int cardinality; Class enumClass; @@ -78,276 +82,246 @@ public class EnumSet> return r; } - public int size() - { - return cardinality; - } - - public Iterator iterator() - { - return new Iterator() - { - int next = -1; - int count = 0; - - public boolean hasNext() - { - return count < cardinality; - } - - public T next() - { - next = store.nextSetBit(next + 1); - ++count; - return enumClass.getEnumConstants()[next]; - } - - public void remove() - { - if (! store.get(next)) - { - store.clear(next); - --cardinality; - } - } - }; - } - - public boolean add(T val) - { - if (store.get(val.ordinal())) - return false; - store.set(val.ordinal()); - ++cardinality; - return true; - } - - public boolean addAll(Collection c) - { - boolean result = false; - if (c instanceof EnumSet) - { - EnumSet other = (EnumSet) c; - if (enumClass == other.enumClass) - { - store.or(other.store); - int save = cardinality; - cardinality = store.cardinality(); - result = save != cardinality; - } - } - else - { - for (T val : c) - { - if (add (val)) - result = true; - } - } - return result; - } - - public void clear() - { - store.clear(); - cardinality = 0; - } - - public boolean contains(Object o) - { - if (! (o instanceof Enum)) - return false; - Enum e = (Enum) o; - if (e.getDeclaringClass() != enumClass) - return false; - return store.get(e.ordinal()); - } - - public boolean containsAll(Collection c) - { - if (c instanceof EnumSet) - { - EnumSet other = (EnumSet) c; - if (enumClass == other.enumClass) - return store.containsAll(other.store); - return false; - } - return super.containsAll(c); - } - - public boolean remove(Object o) - { - if (! (o instanceof Enum)) - return false; - Enum e = (Enum) o; - if (e.getDeclaringClass() != enumClass) - return false; - store.clear(e.ordinal()); - --cardinality; - return true; - } - - public boolean removeAll(Collection c) - { - if (c instanceof EnumSet) - { - EnumSet other = (EnumSet) c; - if (enumClass != other.enumClass) - return false; - store.andNot(other.store); - int save = cardinality; - cardinality = store.cardinality(); - return save != cardinality; - } - return super.removeAll(c); - } - - public boolean retainAll(Collection c) - { - if (c instanceof EnumSet) - { - EnumSet other = (EnumSet) c; - if (enumClass != other.enumClass) - return false; - store.and(other.store); - int save = cardinality; - cardinality = store.cardinality(); - return save != cardinality; - } - return super.retainAll(c); - } - public static > EnumSet allOf(Class eltType) { - EnumSet r = new EnumSet(); - r.store = new BitSet(eltType.getEnumConstants().length); - r.store.set(0, r.store.size()); - r.cardinality = r.store.size(); - r.enumClass = eltType; - return r; + // create an EnumSet from the list of values of the type + return copyOf(Arrays.asList(eltType.getEnumConstants())); } public static > EnumSet noneOf(Class eltType) { - EnumSet r = new EnumSet(); - r.store = new BitSet(eltType.getEnumConstants().length); - r.enumClass = eltType; - return r; + return complementOf(allOf(eltType)); } public static > EnumSet copyOf(EnumSet other) { - // We can't just use `other.clone' since we don't want to make a - // subclass. - EnumSet r = new EnumSet(); - r.store = (BitSet) other.store.clone(); - r.cardinality = other.cardinality; - r.enumClass = other.enumClass; - return r; + return other.clone(); } public static > EnumSet copyOf(Collection other) { if (other instanceof EnumSet) return copyOf((EnumSet) other); - EnumSet r = new EnumSet(); + if (other.isEmpty()) + throw new IllegalArgumentException("Collection is empty"); + + EnumSet r = null; + for (T val : other) { - if (r.store == null) - { - r.enumClass = val.getDeclaringClass(); - r.store = new BitSet(r.enumClass.getEnumConstants().length); - } - r.store.set(val.ordinal()); + if (r == null) + r = of(val); + else + r.add(val); } - // The collection must contain at least one element. - if (r.store == null) - throw new IllegalArgumentException(); - r.cardinality = r.store.cardinality(); + return r; } public static > EnumSet complementOf(EnumSet other) { - EnumSet r = new EnumSet(); - r.store = (BitSet) other.store.clone(); + EnumSet r = other.clone(); r.store.flip(0, r.store.size()); r.cardinality = r.store.size() - other.cardinality; - r.enumClass = other.enumClass; return r; } public static > EnumSet of(T first) { - EnumSet r = new EnumSet(); + EnumSet r = new EnumSet() + { + public boolean add(T val) + { + if (store.get(val.ordinal())) + return false; + + store.set(val.ordinal()); + ++cardinality; + return true; + } + + public boolean addAll(Collection c) + { + boolean result = false; + if (c instanceof EnumSet) + { + EnumSet other = (EnumSet) c; + if (enumClass == other.enumClass) + { + store.or(other.store); + int save = cardinality; + cardinality = store.cardinality(); + result = save != cardinality; + } + } + else + { + for (T val : c) + { + if (add (val)) + result = true; + } + } + return result; + } + + public void clear() + { + store.clear(); + cardinality = 0; + } + + public boolean contains(Object o) + { + if (! (o instanceof Enum)) + return false; + + Enum e = (Enum) o; + if (e.getDeclaringClass() != enumClass) + return false; + + return store.get(e.ordinal()); + } + + public boolean containsAll(Collection c) + { + if (c instanceof EnumSet) + { + EnumSet other = (EnumSet) c; + if (enumClass == other.enumClass) + return store.containsAll(other.store); + + return false; + } + return super.containsAll(c); + } + + public Iterator iterator() + { + return new Iterator() + { + int next = -1; + int count = 0; + + public boolean hasNext() + { + return count < cardinality; + } + + public T next() + { + next = store.nextSetBit(next + 1); + ++count; + return enumClass.getEnumConstants()[next]; + } + + public void remove() + { + if (! store.get(next)) + { + store.clear(next); + --cardinality; + } + } + }; + } + + public boolean remove(Object o) + { + if (! (o instanceof Enum)) + return false; + + Enum e = (Enum) o; + if (e.getDeclaringClass() != enumClass) + return false; + + store.clear(e.ordinal()); + --cardinality; + return true; + } + + public boolean removeAll(Collection c) + { + if (c instanceof EnumSet) + { + EnumSet other = (EnumSet) c; + if (enumClass != other.enumClass) + return false; + + store.andNot(other.store); + int save = cardinality; + cardinality = store.cardinality(); + return save != cardinality; + } + return super.removeAll(c); + } + + public boolean retainAll(Collection c) + { + if (c instanceof EnumSet) + { + EnumSet other = (EnumSet) c; + if (enumClass != other.enumClass) + return false; + + store.and(other.store); + int save = cardinality; + cardinality = store.cardinality(); + return save != cardinality; + } + return super.retainAll(c); + } + + public int size() + { + return cardinality; + } + }; + + // initialize the class r.enumClass = first.getDeclaringClass(); r.store = new BitSet(r.enumClass.getEnumConstants().length); - r.store.set(first.ordinal()); - r.cardinality = 1; + + r.add(first); return r; } public static > EnumSet of(T first, T second) { - EnumSet r = new EnumSet(); - r.enumClass = first.getDeclaringClass(); - r.store = new BitSet(r.enumClass.getEnumConstants().length); - r.store.set(first.ordinal()); - r.store.set(second.ordinal()); - r.cardinality = r.store.cardinality(); + EnumSet r = of(first); + r.add(second); return r; } public static > EnumSet of(T first, T second, T third) { - EnumSet r = new EnumSet(); - r.enumClass = first.getDeclaringClass(); - r.store = new BitSet(r.enumClass.getEnumConstants().length); - r.store.set(first.ordinal()); - r.store.set(second.ordinal()); - r.store.set(third.ordinal()); - r.cardinality = r.store.cardinality(); + EnumSet r = of(first, second); + r.add(third); return r; } public static > EnumSet of(T first, T second, T third, T fourth) { - EnumSet r = new EnumSet(); - r.enumClass = first.getDeclaringClass(); - r.store = new BitSet(r.enumClass.getEnumConstants().length); - r.store.set(first.ordinal()); - r.store.set(second.ordinal()); - r.store.set(third.ordinal()); - r.store.set(fourth.ordinal()); - r.cardinality = r.store.cardinality(); + EnumSet r = of(first, second, third); + r.add(fourth); return r; } public static > EnumSet of(T first, T second, T third, T fourth, T fifth) { - EnumSet r = new EnumSet(); - r.enumClass = first.getDeclaringClass(); - r.store = new BitSet(r.enumClass.getEnumConstants().length); - r.store.set(first.ordinal()); - r.store.set(second.ordinal()); - r.store.set(third.ordinal()); - r.store.set(fourth.ordinal()); - r.store.set(fifth.ordinal()); - r.cardinality = r.store.cardinality(); + EnumSet r = of(first, second, third, fourth); + r.add(fifth); return r; } public static > EnumSet of(T first, T... rest) { - EnumSet r = new EnumSet(); - r.enumClass = first.getDeclaringClass(); - r.store = new BitSet(r.enumClass.getEnumConstants().length); - r.store.set(first.ordinal()); + EnumSet r = noneOf(first.getDeclaringClass()); + r.add(first); for (T val : rest) - r.store.set(val.ordinal()); - r.cardinality = r.store.cardinality(); + r.add(val); return r; } @@ -355,11 +329,24 @@ public class EnumSet> { if (from.compareTo(to) > 0) throw new IllegalArgumentException(); - EnumSet r = new EnumSet(); - r.store = new BitSet(from.getDeclaringClass().getEnumConstants().length); - r.store.set(from.ordinal(), to.ordinal() + 1); - r.enumClass = from.getDeclaringClass(); - r.cardinality = to.ordinal() - from.ordinal() + 1; + Class type = from.getDeclaringClass(); + EnumSet r = noneOf(type); + + T[] values = type.getEnumConstants(); + // skip over values until start of range is found + int i = 0; + while (from != values[i]) + i++; + + // add values until end of range is found + while (to != values[i]) { + r.add(values[i]); + i++; + } + + // add end of range + r.add(to); + return r; } } diff --git a/libjava/classpath/lib/java/util/EnumSet$1.class b/libjava/classpath/lib/java/util/EnumSet$1.class index fcf636207d5e48f466b71ff537c306245bb53ae7..c390f5bdf69a08ae2b8be9cea3af9477197e5033 100644 GIT binary patch literal 3315 zcmb_eTW?fV6#jN++Uc~1Qd;PRg4{~mnW2=Hi^{a+UaiuiwiW?VPN#=hMZb0SnVHip#Ui(|?`_?+W zcKxF(09tV}fC7ceL*}^IGM0%aT6WlDqkUGUzBK^9!n_+c6pGs8c0ALm;A;vEDEPM} zhpZC#5HwJTB89m-%r$fEtA|=h|Fc0}D~75J;wm;rLJY%Iy(#Fi2 zLLT0_U3;_?+tC%k4$_*Blif9N2ks;fwsn+r%+E$}*xfaFh&3Ve3U?VO!(559(?Ab; z$@hqv?sX1P%v6?&N$K+!at2(TIt8F&~6NFjB(-HIjH za`v!GYvqixXkwX5GS?{Ha&d$B-R8`7Nfupc7K@|7MP3Pb(hQ5pB!v+J7UFr_j##r= zp@$ETh(`uplRW)9mxj7e=Ax3IPlj9s? zi!mnkW)BCoi5ZIZsDWdm`6AOE>P=<@^J50a1v4Fm7uWGg15b&gkB;K?jDg3+%b$)P zXGKf;l4Gfu)fJbyXt*F&i{Lmoci6E+GEK&MtjtJq$iPcDA#HY0VWpRHITrPHi5rK) zGrDctN;%|OX{@2>eVp@v!T+4jd=GH7mQN*?@Ff&q;GzH}{4L=Vcn*GUmU3liCqC!! zjWZK-=~2#g0p>Y@o?v)6(-@vYMPwRP(^xctLf>TmeR+7#6dL>oF7juRu0H3gDxv}N zE5iu}Jc&A-!b-g2TwA3>y4Nx|!ieztRXm{~iKUqqh1F=uL0Th_)Jncf?6j{V@)>*+ z*b=!4UoQc*Hcw&wd)Oz~xZE&}Te)o5;17#s8c{-A;1|;w1pMdV_jQ~@bL28Q6gKj` zrq+KM+Z3*%x;NZBjc#V@?-1kN3a9`2YEeGD4Nk>gC6w0?#OqA+4bLYSN{n3?;7RSjn>Ov$%$1U!QQ9q2Lv_g zk;WVsq{2Qt=mtB*U~+jQt6zOuw7~jT_pF-6eui&7n^gx5qLzHk7CL#K=QS5tvk!@S ziZ#1PXe2`kgS@niUNL4~kQ0cu3^`eGtnjHdd(g>t!UY)7@>nMF=n-hE z9C^%@B5+B03{O(XkxMu<8{{VpbcH}Z<;cB?75JRm{lWt>k^>oW$ukI2DAORd!euYP z1oYl+2QI&cIk=+^+_er_K=5POd)Tjs&$GC?Uxh#5OAjGI_hLovvxL0O076LHzak`~ z+jVGWyDmpDBYaIj-;kScS@Z9h(D&r#2Q=VE4w|1l>9^(5Z_9C1e*;Hi(HwD%=91PN zUE{l-H+E@`+GlW-mypBKqa>`M)6>I?#c+nb>C$&RPhSJk13xp5Ux@Kn()Szl_?>IDOg*Ad)E?qe)*SS=NcwV|s_nanGyfmrerAg%n;6LQ|#6RWt^sM|; zAp$A@LlvW11yQR?QLhaC0Xm0&>6J0R^8Y!%XQ=}{Nm}^S9~M#|uslLl3p_$C)MYK- zLMdg18lty+OoCyV7@V)O0x+`hA})S@rDXNI+u6JEf@AgJMZC;a1@{Dp{Im7rZ;=RX AE&u=k literal 1389 zcmZuw%Tg0T6g@*G41^YvfcOqRK$Gwcz6DW;pg|s1K~V||8Im>(h8b%zq4ZZ=x@MtO zfK@Im*M5}c>7D>VOlmqk_jaFi?zuO=|NQs~Act2LnhbPq**o@dEpRHs({62hNd~<+ z3#Ng%PE>5SJiNHEC5wTDW&_FNXCi(V|y#xo-|Oooeq0@#l_j z)CtCz9(P7!PA zOflsIY{pm&{TQ?`aM%#tsW2xngkb|QXkS9a@*UH zs*VYPCwR&R5;T;$s=`wOc|23IQ<1hBC)U6T=sMwJohHU^KUaOf!NQlknqQPNj%u_} zbaY`z)nTCjw8Ai={W~1parR+?x;v)bV#TXEZh2k?n_fv^9t#FqoTCx%J`{7}KCg;` z>q=i+CaV~sya=BtSE%Xa3N@QRJg(-LZ&5x1XLzceyIC~x3v^}s_tBC4jzqR;pKp^?;FyX>l7U(M-Fi37apl2 zqhF5*+qEqv3YJLWT?29Mho?*NZKBXuG$soqGRGE4hN{p;C#B(Tl@ zgNp%tXdoO63FDLO(sZ4$kH4zIX!Zaz$Erh{41HO(%ESv@QK4?nEMDqp59YAQotjYv G!_Qw4#u4%W diff --git a/libjava/classpath/lib/java/util/EnumSet$2.class b/libjava/classpath/lib/java/util/EnumSet$2.class new file mode 100644 index 0000000000000000000000000000000000000000..59eec59f2b00a7453613f73ba73ff8ce5a539dcf GIT binary patch literal 1403 zcmZuwOHUI~6#j-z8Cph5%R_t>AE0e{7TAZU??34}!4Fq9h@Qf89rl;~e^>6(Qm z6cZQ5t&fEpbz?OC5#x97w6rMG%$1F1fbk{`$UWjj)E987~g`7^HrA1CMPhq|$jxp*ucQa_<4`|EumJ!Rm zK|Iq?<|$N0$7|Xf(8)CcovY0If!RLs=4YIw#iWgQaSErE{|wGn@{aPR^d&NT=-?aM zL-HlU`fg~K)*x%6iuh8ODRGdA3Nxx(#r7zsd2)~$vzZ{>C4SoU)qP|n-zS98S4lc> z4(;RWd)$^G!>djLF&)=CL^B_+^bhqsSAFOWQB7?&r)C-wC* zlK*P<19AN1|KS(<@VgGMKLBhQXP2fbfIa-m3d5OwOxIWkGHL3vY?Y3Os-j#)o*6t+ T)-KFqfx85S>*7~FG9914yNMV5 literal 0 HcmV?d00001 diff --git a/libjava/classpath/lib/java/util/EnumSet.class b/libjava/classpath/lib/java/util/EnumSet.class index 75d30d93014423f0fd4c535cbbf42339643b8d35..68aa8a803c125a4221ba7ae5e2230c85a480304f 100644 GIT binary patch literal 5459 zcmbtX`&U%g75)x0!|=E&BG`b9!H5QC0PBkypr*XiVt7PqEMw566qbob|w)^CN9W|LPb`;j@p@QBAq(i*Q1~gD6HvD zr?O5g<&4IXGj^!!j9nN01>hoqb4+hiD@XYjdI^)>mz31chw8L~WM;WFxmP`&!C~R*i zOhEhce)V;XwE0veh{mh^ODq`qGG=mN*o)7G(aIe9@sb-B_Tfo7H)%U!KSxLAkI_Ei zJKc>;7!3G&|AK65FT>~XR2bxriL(wxOlsS#l)n74p3WtQOkCQ@a=afw< z4X(<5K4z;pVpKvpRE{njwQvl_6~c*Z@6@z(81{qXVLYqwc%D6d%*SLb*_oM~kpOvI zFTqLHe*WmXM7GWrGi5k|=cSXxgj+sl4Lg}cYO=j?R1S|@7zYzml5p%yj6IMoBUhn1 zXnn4{y&RKBgmH>JQlq+W)xv2h?qJG3&sLsPSer*KVV5+gETl25P?TnJxA_r?# z?Ay|xUb662e2v~_6BigdW~)!cFI#v87b%`dCg^6Up|7uTR65%?EL32P6|;x+aOc9kAGp5*@ZB>5q6HxMszPb4zZH})>cP+`25LCj|Lx( z7#?BY&xEvZFe$fT#(?;NTH9drM&^UT=1?Nvgd%xmHllnpa!ar^0nOs|$( z<1Nxf6`p^fKPErAE%+v8(>Hv%^G4=&BPEo6QGMF@d&IciY~ zsfBV*@I|or%|VUdkhZ3O*-5xw#pfba>opFrlsrO7FMkz(Ly-m4yvK(CHu1ZRs^F*+ zjch9^Ty=?*QcziuI9s?754!MReRn*CKjuP-wzZtQC&>Lb4uTWOV%@5lJ;A zr9#t!BYNB;N+OFmu!#Ob%g^~Nmn^X?5@VUOiD&ss8hoc~IYjUW3(b!C%!V+$B!|O{ zm;mM!>6snTX8%dYgIqft`5V*~lt-AyMI62nxrHMNSFq+bP8_RzZUJBZNcB@V#%b(2 z9&5e@P7!x;W+3`^ls7G6ipejHHqGPg5w6WBT)p=(Q=f}#i)Qa6`Fx7}Oz`N_q*D_0 zNO2;cMhDKKhl9oez7OM^j|zwRex7#fnNUN3eY`nmae(Se2I!0Wt8|vO! z!1txNxO(=851%QmSNPAo78Pm}{|P>dCbijzu?0V3?4)S6FTp5lbKY7G;~O5vA8U-W ze3v3!Lyk`kG(`nMQ$E#eWl?QKNY$fUZS$paje9h=;wJ>b-cA@2D1RzNOF$T{IZvyO zTBUNsdT_3|AuG~JSsRHi;_6_t;b0-22#Qq{mTJ;?B4&q&XRV7zTIwTfM20Zp>J zzCkAXg3Ra($&9}ACBgWnhw&|q@fzjQ^C}}z*2>#$!J1&Rgsmo6h;tWHw;Su!9*uL4 z+2!G^^l(NRYV@H(^ld0r?VPncH2VE!pNGE6Lto{guX54TKCaOZ!BDRK2x&j^ zHjE!)!}uXKj2~h{{4h4=JR5b4-mCQJy64evwMRGk9;WtgsjWr4JJ4jx=vZ6voz_sG zHFzDBHO1AzU4uWd>&NKVnm(v(P0#Sq0jOe z#b5cv|CH#&`@Ca|IO%lg*aWbZk+{it1$CF2=bU5cU7D>@mw z21*uqR**U^I{Dl9B!%nUqeXfiG8eznK&3VUSmbvRZn+cB2e{358N)8~m!JOvU%ZIE literal 8348 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 diff --git a/libjava/java/util/EnumSet$1.h b/libjava/java/util/EnumSet$1.h index 55e1c91d248..3e247ec9bd5 100644 --- a/libjava/java/util/EnumSet$1.h +++ b/libjava/java/util/EnumSet$1.h @@ -6,23 +6,25 @@ #pragma interface -#include +#include -class java::util::EnumSet$1 : public ::java::lang::Object +class java::util::EnumSet$1 : public ::java::util::EnumSet { public: // actually package-private - EnumSet$1(::java::util::EnumSet *); -public: - jboolean hasNext(); - ::java::lang::Enum * EnumSet$1$next(); - void remove(); - ::java::lang::Object * next(); -public: // actually package-private - jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) next__; - jint count; - ::java::util::EnumSet * this$0; + EnumSet$1(); public: + jboolean EnumSet$1$add(::java::lang::Enum *); + jboolean addAll(::java::util::Collection *); + void clear(); + jboolean contains(::java::lang::Object *); + jboolean containsAll(::java::util::Collection *); + ::java::util::Iterator * iterator(); + jboolean remove(::java::lang::Object *); + jboolean removeAll(::java::util::Collection *); + jboolean retainAll(::java::util::Collection *); + jint size(); + jboolean add(::java::lang::Object *); static ::java::lang::Class class$; }; diff --git a/libjava/java/util/EnumSet$2.h b/libjava/java/util/EnumSet$2.h new file mode 100644 index 00000000000..e80b9789bed --- /dev/null +++ b/libjava/java/util/EnumSet$2.h @@ -0,0 +1,29 @@ + +// DO NOT EDIT THIS FILE - it is machine generated -*- c++ -*- + +#ifndef __java_util_EnumSet$2__ +#define __java_util_EnumSet$2__ + +#pragma interface + +#include + +class java::util::EnumSet$2 : public ::java::lang::Object +{ + +public: // actually package-private + EnumSet$2(::java::util::EnumSet$1 *); +public: + jboolean hasNext(); + ::java::lang::Enum * EnumSet$2$next(); + void remove(); + ::java::lang::Object * next(); +public: // actually package-private + jint __attribute__((aligned(__alignof__( ::java::lang::Object)))) next__; + jint count; + ::java::util::EnumSet$1 * this$1; +public: + static ::java::lang::Class class$; +}; + +#endif // __java_util_EnumSet$2__ diff --git a/libjava/java/util/EnumSet.h b/libjava/java/util/EnumSet.h index 200868ae876..5497e306d8c 100644 --- a/libjava/java/util/EnumSet.h +++ b/libjava/java/util/EnumSet.h @@ -17,16 +17,6 @@ public: // actually package-private EnumSet(); public: virtual ::java::util::EnumSet * EnumSet$clone(); - virtual jint size(); - virtual ::java::util::Iterator * iterator(); - virtual jboolean EnumSet$add(::java::lang::Enum *); - virtual jboolean addAll(::java::util::Collection *); - virtual void clear(); - virtual jboolean contains(::java::lang::Object *); - virtual jboolean containsAll(::java::util::Collection *); - virtual jboolean remove(::java::lang::Object *); - virtual jboolean removeAll(::java::util::Collection *); - virtual jboolean retainAll(::java::util::Collection *); static ::java::util::EnumSet * allOf(::java::lang::Class *); static ::java::util::EnumSet * noneOf(::java::lang::Class *); static ::java::util::EnumSet * copyOf(::java::util::EnumSet *); @@ -40,7 +30,6 @@ public: static ::java::util::EnumSet * of(::java::lang::Enum *, JArray< ::java::lang::Enum * > *); static ::java::util::EnumSet * range(::java::lang::Enum *, ::java::lang::Enum *); virtual ::java::lang::Object * clone(); - virtual jboolean add(::java::lang::Object *); private: static const jlong serialVersionUID = 4782406773684236311LL; public: // actually package-private