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:
parent
1550e02b62
commit
bf144a940b
3 changed files with 49 additions and 49 deletions
|
@ -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_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue