00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef COH_TYPED_BARREN_CLASS_HPP
00017 #define COH_TYPED_BARREN_CLASS_HPP
00018
00019 #include "coherence/lang/compatibility.hpp"
00020
00021 #include "coherence/lang/AbstractTypedClass.hpp"
00022 #include "coherence/lang/Class.hpp"
00023 #include "coherence/lang/Object.hpp"
00024 #include "coherence/lang/UnsupportedOperationException.hpp"
00025
00026 #include <ostream>
00027 #include <typeinfo>
00028
00029 COH_OPEN_NAMESPACE2(coherence,lang)
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 template<class T> class TypedBarrenClass
00042 : public class_spec<TypedBarrenClass<T>,
00043 extends<AbstractTypedClass<T> > >
00044 {
00045 friend class factory<TypedBarrenClass<T> >;
00046
00047
00048
00049 public:
00050
00051
00052
00053 typedef T Type;
00054
00055
00056
00057
00058 protected:
00059
00060
00061
00062 TypedBarrenClass<T>()
00063 {
00064 }
00065
00066 private:
00067
00068
00069
00070 TypedBarrenClass<T>(const TypedBarrenClass<T>&);
00071
00072
00073
00074
00075 public:
00076
00077
00078
00079
00080
00081 virtual Object::Handle newInstance(ObjectArray::View ) const
00082 {
00083 if (true)
00084 {
00085 COH_THROW (UnsupportedOperationException::create(Class::getName()));
00086 }
00087 return NULL;
00088 }
00089
00090
00091
00092
00093 public:
00094
00095
00096
00097 virtual void toStream(std::ostream& out) const
00098 {
00099 out << "TypedBarrenClass<" << Class::getName() << ">";
00100 }
00101 };
00102
00103 COH_CLOSE_NAMESPACE2
00104
00105 #endif // COH_TYPED_BARREN_CLASS_HPP