remove some unnecessary code

git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@287 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
syntheticpp 2005-10-05 22:43:00 +00:00
parent 1550e02b62
commit bf144a940b
3 changed files with 49 additions and 49 deletions

View file

@ -51,6 +51,7 @@ namespace Loki
class OrderedStaticBase : public OrderedStaticCreatorFunc class OrderedStaticBase : public OrderedStaticCreatorFunc
{ {
public: public:
T& operator*() T& operator*()
{ {
return *val_; return *val_;
@ -58,16 +59,24 @@ namespace Loki
protected: protected:
OrderedStaticBase(unsigned int longevity) : val_(0), longevity_(longevity) OrderedStaticBase(unsigned int longevity) : val_(0), longevity_(longevity)
{} {
}
virtual ~OrderedStaticBase() virtual ~OrderedStaticBase()
{} {
}
void SetLongevity(T* ptr)
{
val_=ptr;
Loki::SetLongevity(val_,longevity_);
}
T* val_;
unsigned int longevity_;
private: private:
OrderedStaticBase(); OrderedStaticBase();
OrderedStaticBase(const OrderedStaticBase&); OrderedStaticBase(const OrderedStaticBase&);
OrderedStaticBase& operator=(const OrderedStaticBase&);
T* val_;
unsigned int longevity_;
}; };
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
@ -83,7 +92,7 @@ namespace Loki
typedef void (OrderedStaticCreatorFunc::*Creator)(); typedef void (OrderedStaticCreatorFunc::*Creator)();
void createObjects(); void createObjects();
void registerObject(OrderedStaticCreatorFunc*,Creator, unsigned int longevity); void registerObject(unsigned int longevity,OrderedStaticCreatorFunc*,Creator);
private: private:
OrderedStaticManagerClass(const OrderedStaticManagerClass&); OrderedStaticManagerClass(const OrderedStaticManagerClass&);
@ -91,10 +100,10 @@ namespace Loki
struct Data struct Data
{ {
Data(OrderedStaticCreatorFunc*, Creator, unsigned int); Data(unsigned int,OrderedStaticCreatorFunc*, Creator);
unsigned int longevity;
OrderedStaticCreatorFunc* object; OrderedStaticCreatorFunc* object;
Creator creator; Creator creator;
unsigned int longevity;
}; };
std::vector<Data> staticObjects_; std::vector<Data> staticObjects_;
@ -118,21 +127,21 @@ namespace Loki
OrderedStaticManager; OrderedStaticManager;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// template OrderedSatic template: // template OrderedStatic template:
// L : longevity // L : longevity
// T : object type // T : object type
// TList : creator parameters // TList : creator parameters
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
template<int L, class T, class TList = Loki::NullType> template<unsigned int L, class T, class TList = Loki::NullType>
class OrderedStatic; class OrderedStatic;
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// OrderedSatic specializations // OrderedStatic specializations
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
template<int L, class T> template<unsigned int L, class T>
class OrderedStatic<L, T, Loki::NullType> : public Private::OrderedStaticBase<T> class OrderedStatic<L, T, Loki::NullType> : public Private::OrderedStaticBase<T>
{ {
public: public:
@ -140,75 +149,63 @@ namespace Loki
OrderedStatic() : Private::OrderedStaticBase<T>(L) OrderedStatic() : Private::OrderedStaticBase<T>(L)
{ {
OrderedStaticManager::Instance().registerObject OrderedStaticManager::Instance().registerObject
(this,&Private::OrderedStaticCreatorFunc::createObject, L); (L,this,&Private::OrderedStaticCreatorFunc::createObject);
} }
void createObject() void createObject()
{ {
Private::OrderedStaticBase<T>::val_ = new T; Private::OrderedStaticBase<T>::SetLongevity(new T);
Loki::SetLongevity( Private::OrderedStaticBase<T>::val_, Private::OrderedStaticBase<T>::longevity_);
} }
private:
OrderedStatic(const OrderedStatic&);
OrderedStatic& operator=(const OrderedStatic&);
}; };
template<int L, class T, typename P1> template<unsigned int L, class T, typename P1>
class OrderedStatic<L, T, LOKI_TYPELIST_1(P1)> : public Private::OrderedStaticBase<T> class OrderedStatic<L, T, LOKI_TYPELIST_1(P1)> : public Private::OrderedStaticBase<T>
{ {
public: public:
OrderedStatic(P1 p) : Private::OrderedStaticBase<T>(L) OrderedStatic(P1 p) : Private::OrderedStaticBase<T>(L), para_(p)
{ {
OrderedStaticManager::Instance().registerObject OrderedStaticManager::Instance().registerObject
(this,&Private::OrderedStaticCreatorFunc::createObject, L); (L,this,&Private::OrderedStaticCreatorFunc::createObject);
para_ = p;
} }
void createObject() void createObject()
{ {
Private::OrderedStaticBase<T>::val_ = new T(para_); Private::OrderedStaticBase<T>::SetLongevity(new T(para_));
Loki::SetLongevity(Private::OrderedStaticBase<T>::val_, Private::OrderedStaticBase<T>::longevity_);
}
T& operator*()
{
return *Private::OrderedStaticBase<T>::val_;
} }
private: private:
OrderedStatic(); OrderedStatic();
OrderedStatic(const OrderedStatic&);
OrderedStatic& operator=(const OrderedStatic&);
P1 para_; P1 para_;
}; };
template<int L, class T, typename P1> template<unsigned int L, class T, typename P1>
class OrderedStatic<L, T, P1(*)() > : public Private::OrderedStaticBase<T> class OrderedStatic<L, T, P1(*)() > : public Private::OrderedStaticBase<T>
{ {
public: public:
typedef P1(*Func)(); typedef P1(*Func)();
OrderedStatic() : Private::OrderedStaticBase<T>(L) OrderedStatic(Func p) : Private::OrderedStaticBase<T>(L), para_(p)
{ {
OrderedStaticManager::Instance().registerObject OrderedStaticManager::Instance().registerObject
(this,&Private::OrderedStaticCreatorFunc::createObject, L); (L,this,&Private::OrderedStaticCreatorFunc::createObject);
}
OrderedStatic(Func p) : Private::OrderedStaticBase<T>(L)
{
OrderedStaticManager::Instance().registerObject
(this,&Private::OrderedStaticCreatorFunc::createObject, L);
para_ = p;
} }
void createObject() void createObject()
{ {
Private::OrderedStaticBase<T>::val_ = new T(para_()); Private::OrderedStaticBase<T>::SetLongevity(new T(para_()));
Loki::SetLongevity(Private::OrderedStaticBase<T>::val_, Private::OrderedStaticBase<T>::longevity_);
}
T& operator*()
{
return *Private::OrderedStaticBase<T>::val_;
} }
private: private:
OrderedStatic();
OrderedStatic(const OrderedStatic&);
OrderedStatic& operator=(const OrderedStatic&);
Func para_; Func para_;
}; };

View file

@ -51,19 +51,19 @@ namespace Loki
} }
} }
void OrderedStaticManagerClass::registerObject(OrderedStaticCreatorFunc* o,Creator f, unsigned int l) void OrderedStaticManagerClass::registerObject(unsigned int l, OrderedStaticCreatorFunc* o,Creator f)
{ {
staticObjects_.push_back(Data(o,f,l)); staticObjects_.push_back(Data(l,o,f));
if(l>max_longevity_)max_longevity_=l; if(l>max_longevity_) max_longevity_=l;
if(l<min_longevity_)min_longevity_=l; if(l<min_longevity_) min_longevity_=l;
} }
OrderedStaticManagerClass::Data::Data(OrderedStaticCreatorFunc* o, Creator f, unsigned int l) OrderedStaticManagerClass::Data::Data(unsigned int l, OrderedStaticCreatorFunc* o, Creator f)
{ {
longevity = l;
object = o; object = o;
creator = f; creator = f;
longevity = l;
} }
}//namespace Private }//namespace Private

View file

@ -91,6 +91,9 @@ int main()
std::cout << "s1 = " << (*s1).c_str() << "\n"; std::cout << "s1 = " << (*s1).c_str() << "\n";
std::cout << "s2 = " << (*s2).c_str() << "\n"; std::cout << "s2 = " << (*s2).c_str() << "\n";
std::string s("text11");
*s1=s;
std::cout << "s1 = " << (*s1).c_str() << "\n";
#else #else