1 #ifndef _PRIMITIVETYPES_H_ 7 #define _PRIMITIVETYPES_H_ 22 template<
typename IndexType,
typename ValType>
29 template<
typename DataType>
39 _cur(static_cast<DataType>(0)),
40 _interval(static_cast<DataType>(1)),
45 _interval(static_cast<DataType>(1)),
59 DataType
Interval()
const {
return(_interval); };
60 size_t Reset(
const DataType &lval)
74 DataType
Value()
const {
return(_cur); };
78 return(_cur+=_interval);
90 return(_cur-=_interval);
105 template<
typename DataType>
116 Stepper(
const DataType &l,
const DataType &u,
size_t N)
120 Stepper(
const DataType &l,
const DataType &u,
const DataType &interval)
124 virtual DataType
Init(
const DataType &l,
const DataType &u,
size_t N)
129 DataType interval = (u - l)/static_cast<DataType>(N);
130 for(
size_t i = 0;i < (N-1);i++)
131 _values[i] = l + i*interval;
133 _curstep = _values.begin();
138 virtual DataType
Init(
const DataType &l,
const DataType &u,
const DataType &interval)
142 size_t N =
static_cast<size_t>((u - l)/interval);
143 for(
size_t i = 0;i < (N-1);i++)
144 _values[i] = l + i*interval;
146 _curstep = _values.begin();
151 virtual size_t GetStep()
const {
return(_curstep-_values.begin()+1); };
152 virtual DataType
GetNext() {
return (*++_curstep);};
153 virtual DataType
Value()
const {
return (*_curstep);};
154 virtual DataType
Value(
size_t n)
const 156 assert(n <= _values.size());
157 return (_values[n-1]);
161 _curstep = _values.begin();
164 virtual DataType
Refine(
size_t N){
return Value();};
165 virtual DataType
Reset(
size_t N) {
return(Init(_limits.first,_limits.second,N));};
169 _curstep = _values.end();
176 return(*(_curstep++));};
180 if(_curstep == _values.end())
184 virtual bool Good()
const {
return (_good); };
185 virtual bool Bad()
const {
return (!_good); };
186 virtual void SetBad() { _good =
false; };
187 virtual const std::vector<DataType> &
Values() {
return(_values); };
193 template<
typename K,
typename V>
198 this->first = p.first;
199 this->second = p.second;
206 K
Key()
const{
return this->first; };
208 K &
Key() {
return this->first; };
210 K &
Key(
const K &k) { this->first = k;
return(this->first); };
211 V &
Value(
const V &v) { this->second = v;
return(this->second); };
221 template<
typename DataType>
270 typename std::vector<DataType>::const_iterator vi = v.begin();
280 for(
size_t i = 0;i < _size;i++)
499 D =
new DataType [_size];
526 template<
typename DataType,
typename InIndexType = IndexType>
529 typedef std::vector<std::vector<DataType> >
VecVec;
530 typedef std::vector<std::map<DataType,InIndexType> >
VecMap;
531 typedef std::vector<std::list<DataType> >
VecList;
580 meta::DataObject::const_iterator vi = this->find(key);
581 if(vi != this->end())
590 meta::DataObject::const_iterator vi = this->find(key);
591 if(vi != this->end()){
592 std::istringstream Istr(vi->second);
602 meta::DataObject::const_iterator vi = this->find(key);
603 if(vi != this->end()){
604 std::istringstream Istr(vi->second);
605 Istr.read(reinterpret_cast<char *>(&retval),
sizeof(T));
613 std::vector<T> retval;
614 meta::DataObject::const_iterator vi = this->find(key);
615 if(vi != this->end()){
616 std::istringstream Istr(vi->second);
618 while(Istr >> tmpval)
619 retval.push_back(tmpval);
627 std::vector<T> retval;
628 meta::DataObject::const_iterator vi = this->find(key);
629 if(vi != this->end()){
630 std::istringstream Istr(vi->second);
632 while(Istr.read(reinterpret_cast<char *>(&tmpval),
sizeof(T)))
633 retval.push_back(tmpval);
virtual DataType operator--(int)
virtual DataType Value(size_t n) const
std::vector< std::map< DataType, InIndexType > > VecMap
virtual DataType operator--()
KeyValuePairObj(const std::pair< K, V > &p)
virtual DataType Refine(size_t N)
std::vector< DataType > _values
Vector & Copy(const Vector< DataType > &v)
virtual DataType operator++(int)
virtual DataType Value() const
DummyStepper(const DataType &lval)
Defines MPI-specific parallel global and program classes.
Stepper(const DataType &l, const DataType &u, const DataType &interval)
DummyStepper(const DataType &lval, const DataType &inint)
KeyValuePairObj(const K &k, const V &v)
std::pair< DataType, DataType > _limits
virtual const std::vector< DataType > & Values()
virtual DataType operator--(int)
virtual size_t GetStep() const
virtual DataType operator++()
Vector(const Vector< DataType > &v)
std::vector< std::vector< DataType > > VecVec
virtual bool Done() const
virtual DataType operator++(int)
std::vector< std::list< IndexType > > IndexVecList
virtual DataType operator++()
Type agnostic dummy stepper.
virtual DataType Init(const DataType &l, const DataType &u, const DataType &interval)
std::vector< DataType >::iterator _curstep
void size_t int size_t int size_t int int int int double int int double double *void size_t int size_t int int int int int double int size_t size_t size_t double double *void size_t int size_t int size_t size_t int double int double double *void size_t size_t size_t double * a
std::vector< IndexType > IndexVec
virtual DataType Init(const DataType &l, const DataType &u, size_t N)
virtual DataType Reset(size_t N)
void const size_t const size_t const size_t const int const double * V
Vector(std::vector< DataType > &v)
Stepper(const DataType &l, const DataType &u, size_t N)
virtual bool Good() const
virtual DataType operator--()
Vector(const std::vector< DataType > &v)
virtual DataType GetNext()
DataType SetInterval(const DataType &inint)
std::vector< std::list< DataType > > VecList
Vector(Vector< DataType > &v)
Vector(const Vector &p1, const Vector &p2)
Vector(DataType *a, size_t size=0)
std::list< IndexType > IndexList
virtual DataType Restart()
size_t Reset(const DataType &lval)
DataType Interval() const