#include <boost/operators.hpp>
//#include "TypeIdValue.mpp"
-///////////////////////////////hh.p////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
namespace senf {
class TypeIdValue : public boost::totally_ordered<TypeIdValue>
{
public:
- ///////////////////////////////////////////////////////////////////////////
+ //-////////////////////////////////////////////////////////////////////////
///\name Structors and default members
- ///@{
+ //\{
// my default constructor
// my copy constructor
// no conversion constructors
TypeIdValue();
- TypeIdValue(TypeIdValue const & other);
- TypeIdValue const & operator=(TypeIdValue const & other);
+ TypeIdValue(std::type_info const & v);
- ///@}
- ///////////////////////////////////////////////////////////////////////////
+ //\}
+ //-////////////////////////////////////////////////////////////////////////
bool operator==(TypeIdValue const & other) const;
bool operator<(TypeIdValue const & other) const;
std::string name() const;
+ std::string prettyName() const;
+
std::type_info const & id() const;
protected:
private:
- template <class Type> TypeIdValue(Type *);
-
- struct Value {
- virtual ~Value();
- virtual std::type_info const & id() = 0;
- virtual Value * clone() = 0;
- };
-
- template <class Type>
- struct ValueImpl : public Value {
- virtual std::type_info const & id();
- virtual Value * clone();
- };
-
- boost::scoped_ptr<Value> value_;
-
- template <class Type> friend TypeIdValue const typeIdValue();
+ std::type_info const * p_;
};
+ /**
+ \related TypeIdValue
+ */
TypeIdValue const typeIdValue();
+ /**
+ \related TypeIdValue
+ */
template <class Type>
TypeIdValue const typeIdValue();
+ /**
+ \related TypeIdValue
+ */
+ template <class Type>
+ TypeIdValue const typeIdValue(Type const & ob);
+
+ /**
+ \related TypeIdValue
+ */
std::ostream & operator<<(std::ostream & os, TypeIdValue const & v);
}
-///////////////////////////////hh.e////////////////////////////////////////
+//-/////////////////////////////////////////////////////////////////////////////////////////////////
#include "TypeIdValue.cci"
//#include "TypeIdValue.ct"
#include "TypeIdValue.cti"