00001 00002 #ifndef _INVPACKTREE_H_ 00003 #define _INVPACKTREE_H_ 00004 00005 00037 00038 00039 #include "liftbase.h" 00040 #include "list.h" 00041 #include "packcontainer.h" 00042 #include "packdata.h" 00043 #include "packdata_list.h" 00044 00045 00083 class invpacktree { 00084 private: 00086 liftbase<packcontainer, double> *waveObj; 00088 invpacktree( const invpacktree &rhs ) {} 00089 00091 LIST<packcontainer *> stack; 00092 00094 const double *data; 00096 size_t N; 00097 00098 private: 00099 void new_level( packdata<double> *elem ); 00100 void add_elem( packdata<double> *elem ); 00101 void reduce(); 00102 00103 public: 00104 invpacktree( packdata_list<double> &list, 00105 liftbase<packcontainer, double> *w ); 00107 ~invpacktree() {} 00108 00110 const double *getData() { return data; } 00111 void pr(); 00112 }; 00113 00114 #endif