… | |
… | |
9 | inline double maxDist() { return ACC->maxDist; } |
9 | inline double maxDist() { return ACC->maxDist; } |
10 | inline int sizeofObject() { return ACC->ndims * ACC->elemsize; } |
10 | inline int sizeofObject() { return ACC->ndims * ACC->elemsize; } |
11 | |
11 | |
12 | class Object : public GiSTobject // the DB object class |
12 | class Object : public GiSTobject // the DB object class |
13 | { |
13 | { |
14 | double *k; |
14 | velem *k; |
|
|
15 | |
|
|
16 | static double int2double(velem i) { |
|
|
17 | return i * ACC->max / ACC->steps + ACC->min; |
|
|
18 | } |
|
|
19 | static velem double2int(double d) { |
|
|
20 | return (velem)floor ((d - ACC->min) * ACC->steps / ACC->max); |
|
|
21 | } |
|
|
22 | |
15 | public: |
23 | public: |
16 | Object() { |
24 | Object() { |
17 | k = new double [NDIMS]; |
25 | k = new velem [NDIMS]; |
|
|
26 | |
18 | for (int i = NDIMS; i--; ) |
27 | for (int i = NDIMS; i--; ) |
19 | k[i] = 0.; |
28 | k[i] = ACC->vzero; |
20 | } |
29 | } |
21 | |
30 | |
22 | Object(double *pkey) |
31 | Object(double *pkey); |
23 | { |
|
|
24 | k = pkey; |
|
|
25 | } |
|
|
26 | |
|
|
27 | Object(const Object& obj) { |
|
|
28 | k = new double [NDIMS]; |
|
|
29 | memcpy (k, obj.k, NDIMS * sizeof (double)); |
|
|
30 | } |
|
|
31 | |
32 | |
32 | ~Object() { |
33 | ~Object() { |
33 | delete [] k; |
34 | delete [] k; |
34 | } |
35 | } |
35 | |
36 | |
|
|
37 | Object(const Object& obj) { |
|
|
38 | k = new velem [NDIMS]; |
|
|
39 | memcpy (k, obj.k, NDIMS * sizeof (velem)); |
|
|
40 | } |
|
|
41 | |
36 | Object& operator=(const Object& obj) { |
42 | Object& operator=(const Object& obj) { |
37 | delete [] k; |
43 | delete [] k; |
38 | |
44 | |
39 | k = new double [NDIMS]; |
45 | k = new velem [NDIMS]; |
40 | memcpy (k, obj.k, NDIMS * sizeof (double)); |
46 | memcpy (k, obj.k, NDIMS * sizeof (velem)); |
41 | } |
47 | } |
42 | |
48 | |
43 | double area(double r) { |
49 | double area(double r) const { |
44 | return 0; |
50 | return 0; |
45 | } |
51 | } |
46 | |
52 | |
47 | double *data() { |
53 | double *data() const; |
48 | return k; |
|
|
49 | } |
|
|
50 | |
54 | |
51 | double distance(const Object& other) const; // distance method (needed) |
55 | double distance(const Object& other) const; // distance method (needed) |
52 | |
56 | |
53 | int operator==(const Object& obj) |
57 | int operator ==(const Object& obj) const |
54 | { |
58 | { |
55 | return !memcmp (k, obj.k, NDIMS * sizeof (double)); |
59 | return !memcmp (k, obj.k, NDIMS * sizeof (velem)); |
56 | } |
60 | } |
57 | |
61 | |
58 | int operator!=(const Object& obj) { return !(*this==obj); }; // inequality operator (needed) |
62 | int operator !=(const Object& obj) const |
|
|
63 | { |
|
|
64 | return !(*this==obj); |
|
|
65 | } |
59 | |
66 | |
60 | int CompressedLength() const { |
67 | int CompressedLength() const { |
61 | return sizeofObject(); |
68 | return sizeofObject(); |
62 | } |
69 | } |
63 | |
70 | |