From 473210a961853103e0155332b2df87559cc63f08 Mon Sep 17 00:00:00 2001 From: Dalibor Topic Date: Wed, 8 Aug 2007 08:00:32 +0000 Subject: 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/java/util/EnumSet$1.h | 26 ++++++++++++++------------ libjava/java/util/EnumSet$2.h | 29 +++++++++++++++++++++++++++++ libjava/java/util/EnumSet.h | 11 ----------- 3 files changed, 43 insertions(+), 23 deletions(-) create mode 100644 libjava/java/util/EnumSet$2.h (limited to 'libjava/java/util') diff --git a/libjava/java/util/EnumSet$1.h b/libjava/java/util/EnumSet$1.h index 55e1c91..3e247ec 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 0000000..e80b978 --- /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 200868a..5497e30 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 -- cgit v1.1