Changeset 2822 for trunk/packages/vizservers/nanovis/BucketSort.h
- Timestamp:
- Mar 7, 2012 12:21:30 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/nanovis/BucketSort.h
r2798 r2822 1 1 /* -*- mode: c++; c-basic-offset: 4; indent-tabs-mode: nil -*- */ 2 #ifndef __BUCKETSORT_H_3 #define __BUCKETSORT_H_2 #ifndef BUCKETSORT_H 3 #define BUCKETSORT_H 4 4 5 5 #include <vector> … … 13 13 class ClusterList { 14 14 public : 15 16 15 Cluster* data; 16 ClusterList* next; 17 17 public : 18 ClusterList(Cluster* d, ClusterList* n) 19 :data(d), next(n)20 18 ClusterList(Cluster *d, ClusterList *n) : 19 data(d), next(n) 20 {} 21 21 22 ClusterList() 23 :data(0), next(0)24 22 ClusterList() : 23 data(0), next(0) 24 {} 25 25 26 27 28 29 26 ~ClusterList() 27 { 28 //if (next) delete next; 29 } 30 30 }; 31 31 32 32 class BucketSort { 33 ClusterList**_buffer;34 35 33 ClusterList **_buffer; 34 int _size; 35 int _count; 36 36 37 int _memChuckSize; 38 bool _memChunckUsedFlag; 39 ClusterList* _memChunck; 40 41 float _invMaxLength; 42 private : 43 //void _sort(Cluster* cluster, const Matrix4& cameraMat, int level); 44 void _sort(Cluster* cluster, const Mat4x4& cameraMat, int level); 45 public : 46 BucketSort(int maxSize) 47 { 48 _size = maxSize; 49 _buffer = new ClusterList*[maxSize]; 50 memset(_buffer, 0, _size * sizeof(ClusterList*)); 37 int _memChuckSize; 38 bool _memChunckUsedFlag; 39 ClusterList *_memChunck; 51 40 52 _memChuckSize = 1000000; 53 _memChunck = new ClusterList[_memChuckSize]; 41 float _invMaxLength; 42 private: 43 void _sort(Cluster *cluster, const Mat4x4& cameraMat, int level); 44 public: 45 BucketSort(int maxSize) 46 { 47 _size = maxSize; 48 _buffer = new ClusterList*[maxSize]; 49 memset(_buffer, 0, _size * sizeof(ClusterList*)); 54 50 55 _invMaxLength = 1.0f / 4.0f;56 } 51 _memChuckSize = 1000000; 52 _memChunck = new ClusterList[_memChuckSize]; 57 53 58 ~BucketSort() 59 { 60 delete [] _buffer; 61 delete [] _memChunck; 62 } 54 _invMaxLength = 1.0f / 4.0f; 55 } 63 56 64 int getSize() const { return _size; } 65 int getSortedItemCount() const { return _count; } 66 void init(); 67 //void sort(ClusterAccel* cluster, const Matrix4& cameraMat, float maxLength); 68 //void sort(ClusterAccel* cluster, const Matrix4& cameraMat, int level); 69 void sort(ClusterAccel* cluster, const Mat4x4& cameraMat, int level); 70 void addBucket(Cluster* cluster, float ratio); 71 ClusterList** getBucket() { return _buffer; } 57 ~BucketSort() 58 { 59 delete [] _buffer; 60 delete [] _memChunck; 61 } 62 63 int getSize() const 64 { return _size; } 65 66 int getSortedItemCount() const 67 { return _count; } 68 69 void init(); 70 71 void sort(ClusterAccel* cluster, const Mat4x4& cameraMat, int level); 72 73 void addBucket(Cluster* cluster, float ratio); 74 75 ClusterList **getBucket() 76 { return _buffer; } 72 77 }; 73 78
Note: See TracChangeset
for help on using the changeset viewer.