36 #ifndef DATAARRAY_OBJECT_H
37 #define DATAARRAY_OBJECT_H
89 GeoTessDataArray() : GeoTessData(), nValues(0), values(NULL) {};
99 values =
new T [nValues];
100 for (
int i = 0; i < nValues; ++i) values[i] = v[i];
109 values =
new T [nValues];
110 for (
int i = 0; i < nValues; ++i) values[i] = v[i];
118 values =
new T [nValues];
119 for (
int i = 0; i < n; ++i) values[i] = (T) 0;
132 values =
new T [nValues];
133 for (
int i = 0; i < nValues; ++i) ifs.
readType(values[i]);
141 GeoTessDataArray(IFStreamBinary& ifs,
int n) : GeoTessData(), nValues(n), values(NULL)
145 values =
new T [nValues];
146 ifs.readTypeArray(values, nValues);
159 GeoTessDataArray(IFStreamAscii& ifs,
int n, vector<int>& filter) : GeoTessData(), nValues(n), values(NULL)
163 values =
new T [nValues];
165 for (
int i=0; i<(int)filter.size(); ++i)
169 values[filter[i]] = val;
183 GeoTessDataArray(IFStreamBinary& ifs,
int n, vector<int>& filter) : GeoTessData(), nValues(n), values(NULL)
187 values =
new T [nValues];
190 for (
int i=0; i<(int)filter.size(); ++i)
194 values[filter[i]] = val;
202 virtual ~GeoTessDataArray()
203 {
if (values != NULL)
delete [] values; };
208 virtual void write(IFStreamBinary& ofs)
210 for (
int i = 0; i < nValues; ++i) ofs.writeType(values[i]);
216 virtual void write(IFStreamAscii& ofs)
218 for (
int i = 0; i < nValues; ++i)
219 { ofs.writeString(
" "); ofs.writeType(values[i]); }
232 virtual int size()
const {
return nValues; };
240 if (!GeoTessData::operator==(d))
return false;
241 if (nValues != d.nValues)
return false;
243 for (
int i = 0; i < nValues; ++i)
244 if ((values[i] != d.values[i]) &&
245 !(isNaN(i) && d.
isNaN(i)))
return false;
261 {
return (
double) values[attributeIndex]; }
267 {
return (
float) values[attributeIndex]; };
273 {
return (
LONG_INT) values[attributeIndex]; };
278 virtual int getInt(
int attributeIndex)
const
279 {
return (
int) values[attributeIndex]; };
285 {
return (
short) values[attributeIndex]; };
291 {
return (
byte) values[attributeIndex]; };
296 virtual void getValue(
int attributeIndex,
double& val)
const
297 { val = (double) values[attributeIndex]; };
302 virtual void getValue(
int attributeIndex,
float& val)
const
303 { val = (float) values[attributeIndex]; };
309 { val = (
LONG_INT) values[attributeIndex]; };
314 virtual void getValue(
int attributeIndex,
int& val)
const
315 { val = (int) values[attributeIndex]; };
320 virtual void getValue(
int attributeIndex,
short& val)
const
321 { val = (short) values[attributeIndex]; };
327 { val = (
byte) values[attributeIndex]; };
333 {
for (
int i=0; i<n && i<nValues; ++i) vals[i] = (
double) values[i]; }
339 {
for (
int i=0; i<n && i<nValues; ++i) vals[i] = (
float) values[i]; }
345 {
for (
int i=0; i<n && i<nValues; ++i) vals[i] = (
LONG_INT) values[i]; }
351 {
for (
int i=0; i<n && i<nValues; ++i) vals[i] = (
int) values[i]; }
357 {
for (
int i=0; i<n && i<nValues; ++i) vals[i] = (
short) values[i]; }
363 {
for (
int i=0; i<n && i<nValues; ++i) vals[i] = (
byte) values[i]; }
369 { values[attributeIndex] = (T) v;
return *
this; }
375 { values[attributeIndex] = (T) v;
return *
this; }
381 { values[attributeIndex] = (T) v;
return *
this; }
387 { values[attributeIndex] = (T) v;
return *
this; }
393 { values[attributeIndex] = (T) v;
return *
this; };
399 { values[attributeIndex] = (T) v;
return *
this; }
412 virtual bool isNaN(
int attributeIndex)
const {
return false;};
430 inline bool GeoTessDataArray<double>::isNaN(
int attributeIndex)
const
432 return (isnan(values[attributeIndex]));
439 inline bool GeoTessDataArray<float>::isNaN(
int attributeIndex)
const
441 double v = (double) values[attributeIndex];
449 inline const GeoTessDataType& GeoTessDataArray<double>::getDataType()
const
451 return GeoTessDataType::DOUBLE;
458 inline const GeoTessDataType& GeoTessDataArray<float>::getDataType()
const
460 return GeoTessDataType::FLOAT;
467 inline const GeoTessDataType& GeoTessDataArray<LONG_INT>::getDataType()
const
469 return GeoTessDataType::LONG;
476 inline const GeoTessDataType& GeoTessDataArray<int>::getDataType()
const
478 return GeoTessDataType::INT;
485 inline const GeoTessDataType& GeoTessDataArray<short>::getDataType()
const
487 return GeoTessDataType::SHORT;
494 inline const GeoTessDataType& GeoTessDataArray<byte>::getDataType()
const
496 return GeoTessDataType::BYTE;
503 #endif // DATAARRAY_OBJECT_H
virtual const GeoTessDataType & getDataType() const
Definition: GeoTessDataArray.h:227
bool readType(byte &b)
Definition: IFStreamAscii.h:400
virtual GeoTessData & setValue(int attributeIndex, float v)
Definition: GeoTessDataArray.h:374
GeoTessDataArray(T v[], const int &n)
Definition: GeoTessDataArray.h:97
virtual GeoTessData & setValue(int attributeIndex, double v)
Definition: GeoTessDataArray.h:368
virtual int size() const
Definition: GeoTessDataArray.h:232
virtual GeoTessData & setValue(int attributeIndex, byte v)
Definition: GeoTessDataArray.h:398
virtual double getDouble(int attributeIndex) const
Definition: GeoTessDataArray.h:260
GeoTessDataArray(const int &n)
Definition: GeoTessDataArray.h:116
virtual void getValues(short vals[], const int &n)
Definition: GeoTessDataArray.h:356
GeoTessDataArray(const vector< T > &v)
Definition: GeoTessDataArray.h:107
virtual void getValues(double vals[], const int &n)
Definition: GeoTessDataArray.h:332
virtual void getValue(int attributeIndex, byte &val) const
Definition: GeoTessDataArray.h:326
virtual byte getByte(int attributeIndex) const
Definition: GeoTessDataArray.h:290
virtual GeoTessData & setValue(int attributeIndex, LONG_INT v)
Definition: GeoTessDataArray.h:380
virtual void getValue(int attributeIndex, LONG_INT &val) const
Definition: GeoTessDataArray.h:308
Enumeration of supported DataType including DOUBLE, FLOAT, LONG, INT, SHORT and BYTE.
Definition: GeoTessDataType.h:67
virtual void getValues(int vals[], const int &n)
Definition: GeoTessDataArray.h:350
virtual GeoTessData & setValue(int attributeIndex, int v)
Definition: GeoTessDataArray.h:386
virtual LONG_INT getLong(int attributeIndex) const
Definition: GeoTessDataArray.h:272
virtual void getValues(byte vals[], const int &n)
Definition: GeoTessDataArray.h:362
#define byte
signed-byte typedef
Definition: CPPGlobals.h:94
Opens ascii file for read and write access.
Definition: IFStreamAscii.h:80
virtual int getInt(int attributeIndex) const
Definition: GeoTessDataArray.h:278
virtual void getValue(int attributeIndex, int &val) const
Definition: GeoTessDataArray.h:314
#define LONG_INT
Definition: CPPGlobals.h:111
virtual GeoTessDataArray< T > * copy()
Definition: GeoTessDataArray.h:417
Manages a 1D array of data values attached to a single grid node.
Definition: GeoTessData.h:62
virtual float getFloat(int attributeIndex) const
Definition: GeoTessDataArray.h:266
Abstract base class that manages the data values attached to a single grid point. ...
Definition: GeoTessData.h:75
virtual short getShort(int attributeIndex) const
Definition: GeoTessDataArray.h:284
virtual GeoTessData & setValue(int attributeIndex, short v)
Definition: GeoTessDataArray.h:392
virtual void getValue(int attributeIndex, short &val) const
Definition: GeoTessDataArray.h:320
virtual void getValue(int attributeIndex, double &val) const
Definition: GeoTessDataArray.h:296
#define GEOTESS_EXP_IMP
Definition: CPPGlobals.h:71
virtual bool isNaN(int attributeIndex) const
Definition: GeoTessDataArray.h:412
virtual void getValue(int attributeIndex, float &val) const
Definition: GeoTessDataArray.h:302
virtual void getValues(float vals[], const int &n)
Definition: GeoTessDataArray.h:338
virtual void getValues(LONG_INT vals[], const int &n)
Definition: GeoTessDataArray.h:344