buffered_value
Go to the documentation of this file.
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
*
* This library is open source and may be redistributed and/or modified under
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
* (at your option) any later version. The full license is in LICENSE file
* included with this distribution, and on the openscenegraph.org website.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* OpenSceneGraph Public License for more details.
*/
#ifndef OSG_BUFFERED_VALUE
#define OSG_BUFFERED_VALUE 1
#include <osg/DisplaySettings>
#include <vector>
namespace osg {
template<class T>
class buffered_value
{
public:
inline buffered_value():
_array(DisplaySettings::instance()->getMaxNumberOfGraphicsContexts(),0)
{}
inline buffered_value(unsigned int size):
_array(size,0)
{}
buffered_value& operator = (const buffered_value& rhs)
{
_array = rhs._array;
return *this;
}
inline void setAllElementsTo(const T& t) { std::fill(_array.begin(),_array.end(),t); }
inline void clear() { _array.clear(); }
inline bool empty() const { return _array.empty(); }
inline unsigned int size() const { return _array.size(); }
inline void resize(unsigned int newSize) { _array.resize(newSize,0); }
inline T& operator[] (unsigned int pos)
{
// automatically resize array.
if (_array.size()<=pos)
_array.resize(pos+1,0);
return _array[pos];
}
inline T operator[] (unsigned int pos) const
{
// automatically resize array.
if (_array.size()<=pos)
_array.resize(pos+1,0);
return _array[pos];
}
protected:
mutable std::vector<T> _array;
};
template<class T>
class buffered_object
{
public:
inline buffered_object():
_array(DisplaySettings::instance()->getMaxNumberOfGraphicsContexts())
{}
inline buffered_object(unsigned int size):
_array(size)
{}
buffered_object& operator = (const buffered_object& rhs)
{
_array = rhs._array;
return *this;
}
inline void setAllElementsTo(const T& t) { std::fill(_array.begin(),_array.end(),t); }
inline void clear() { _array.clear(); }
inline bool empty() const { return _array.empty(); }
inline unsigned int size() const { return _array.size(); }
inline void resize(unsigned int newSize) { _array.resize(newSize); }
inline T& operator[] (unsigned int pos)
{
// automatically resize array.
if (_array.size()<=pos)
_array.resize(pos+1);
return _array[pos];
}
inline const T& operator[] (unsigned int pos) const
{
// automatically resize array.
if (_array.size()<=pos)
_array.resize(pos+1);
return _array[pos];
}
protected:
mutable std::vector<T> _array;
};
}
#endif
DisplaySettings
osg::DisplaySettings
Definition DisplaySettings:34
osg::buffered_object::buffered_object
buffered_object(unsigned int size)
Definition buffered_value:86
osg::buffered_object::operator[]
T & operator[](unsigned int pos)
Definition buffered_value:106
osg::buffered_object::buffered_object
buffered_object()
Definition buffered_value:82
osg::buffered_object::operator=
buffered_object & operator=(const buffered_object &rhs)
Definition buffered_value:90
osg::buffered_object::clear
void clear()
Definition buffered_value:98
osg::buffered_object< osg::ref_ptr< GLBufferObject > >::size
unsigned int size() const
Definition buffered_value:102
osg::buffered_object::setAllElementsTo
void setAllElementsTo(const T &t)
Definition buffered_value:96
osg::buffered_object< osg::ref_ptr< GLBufferObject > >::_array
std::vector< osg::ref_ptr< GLBufferObject > > _array
Definition buffered_value:127
osg::buffered_object::resize
void resize(unsigned int newSize)
Definition buffered_value:104
osg::buffered_object::empty
bool empty() const
Definition buffered_value:100
osg::buffered_value::buffered_value
buffered_value(unsigned int size)
Definition buffered_value:34
osg::buffered_value< unsigned int >::size
unsigned int size() const
Definition buffered_value:50
osg::buffered_value::clear
void clear()
Definition buffered_value:46
osg::buffered_value::empty
bool empty() const
Definition buffered_value:48
osg::buffered_value::resize
void resize(unsigned int newSize)
Definition buffered_value:52
osg::buffered_value::setAllElementsTo
void setAllElementsTo(const T &t)
Definition buffered_value:44
osg::buffered_value< unsigned int >::_array
std::vector< unsigned int > _array
Definition buffered_value:74
osg::buffered_value::operator[]
T & operator[](unsigned int pos)
Definition buffered_value:54
osg::buffered_value::buffered_value
buffered_value()
Definition buffered_value:30
osg::buffered_value::operator=
buffered_value & operator=(const buffered_value &rhs)
Definition buffered_value:38
osg
Definition AlphaFunc:19