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

View file

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