From Mathias Froehlich, build fixes for legacy unix systems

This commit is contained in:
Robert Osfield
2011-06-07 14:26:13 +00:00
parent 7f9a6aa49d
commit 4f7903f732
4 changed files with 77 additions and 76 deletions

View File

@@ -41,74 +41,6 @@ class State;
virtual const char* libraryName() const { return #library; }\
virtual const char* className() const { return #name; }
template<typename T>
T* clone(const T* t, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY)
{
if (t)
{
osg::ref_ptr<osg::Object> obj = t->clone(copyop);
T* ptr = dynamic_cast<T*>(obj.get());
if (ptr)
{
obj.release();
return ptr;
}
else
{
OSG_WARN<<"Warning: osg::clone(const T*, osg::CopyOp&) cloned object not of type T, returning NULL."<<std::endl;
return 0;
}
}
else
{
OSG_WARN<<"Warning: osg::clone(const T*, osg::CopyOp&) passed null object to clone, returning NULL."<<std::endl;
return 0;
}
}
template<typename T>
T* clone(const T* t, const std::string& name, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY)
{
T* newObject = osg::clone(t, copyop);
if (newObject)
{
newObject->setName(name);
return newObject;
}
else
{
OSG_WARN<<"Warning: osg::clone(const T*, const std::string&, const osg::CopyOp) passed null object to clone, returning NULL."<<std::endl;
return 0;
}
}
template<typename T>
T* cloneType(const T* t)
{
if (t)
{
osg::ref_ptr<osg::Object> obj = t->cloneType();
T* ptr = dynamic_cast<T*>(obj.get());
if (ptr)
{
obj.release();
return ptr;
}
else
{
OSG_WARN<<"Warning: osg::cloneType(const T*) cloned object not of type T, returning NULL."<<std::endl;
return 0;
}
}
else
{
OSG_WARN<<"Warning: osg::cloneType(const T*) passed null object to clone, returning NULL."<<std::endl;
return 0;
}
}
/** Base class/standard interface for objects which require IO support,
cloning and reference counting.
Based on GOF Composite, Prototype and Template Method patterns.
@@ -319,6 +251,73 @@ class OSG_EXPORT Object : public Referenced
Object& operator = (const Object&) { return *this; }
};
template<typename T>
T* clone(const T* t, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY)
{
if (t)
{
osg::ref_ptr<osg::Object> obj = t->clone(copyop);
T* ptr = dynamic_cast<T*>(obj.get());
if (ptr)
{
obj.release();
return ptr;
}
else
{
OSG_WARN<<"Warning: osg::clone(const T*, osg::CopyOp&) cloned object not of type T, returning NULL."<<std::endl;
return 0;
}
}
else
{
OSG_WARN<<"Warning: osg::clone(const T*, osg::CopyOp&) passed null object to clone, returning NULL."<<std::endl;
return 0;
}
}
template<typename T>
T* clone(const T* t, const std::string& name, const osg::CopyOp& copyop=osg::CopyOp::SHALLOW_COPY)
{
T* newObject = osg::clone(t, copyop);
if (newObject)
{
newObject->setName(name);
return newObject;
}
else
{
OSG_WARN<<"Warning: osg::clone(const T*, const std::string&, const osg::CopyOp) passed null object to clone, returning NULL."<<std::endl;
return 0;
}
}
template<typename T>
T* cloneType(const T* t)
{
if (t)
{
osg::ref_ptr<osg::Object> obj = t->cloneType();
T* ptr = dynamic_cast<T*>(obj.get());
if (ptr)
{
obj.release();
return ptr;
}
else
{
OSG_WARN<<"Warning: osg::cloneType(const T*) cloned object not of type T, returning NULL."<<std::endl;
return 0;
}
}
else
{
OSG_WARN<<"Warning: osg::cloneType(const T*) passed null object to clone, returning NULL."<<std::endl;
return 0;
}
}
}