#ifndef OBJECT_H #define OBJECT_H #include #include #include "PMT.h" inline double maxDist() { return ACC->maxDist; } inline int sizeofObject() { return ACC->ndims * ACC->elemsize; } class Object : public GiSTobject // the DB object class { velem *k; static double int2double(velem i) { return i * ACC->max / ACC->steps + ACC->min; } static velem double2int(double d) { return (velem)floor ((d - ACC->min) * ACC->steps / ACC->max); } public: Object() { k = new velem [NDIMS]; for (int i = NDIMS; i--; ) k[i] = ACC->vzero; } Object(double *pkey); ~Object() { delete [] k; } Object(const Object& obj) { k = new velem [NDIMS]; memcpy (k, obj.k, NDIMS * sizeof (velem)); } Object& operator=(const Object& obj) { delete [] k; k = new velem [NDIMS]; memcpy (k, obj.k, NDIMS * sizeof (velem)); } double area(double r) const { return 0; } double *data() const; double distance(const Object& other) const; // distance method (needed) int operator ==(const Object& obj) const { return !memcmp (k, obj.k, NDIMS * sizeof (velem)); } int operator !=(const Object& obj) const { return !(*this==obj); } int CompressedLength() const { return sizeofObject(); } Object(char *key); void Compress(char *key); }; #endif