00001 #ifndef TRAFU_DATA_H 00002 #define TRAFU_DATA_H 00003 00004 #include <list> 00005 #include <vector> 00006 00007 //forward decleration 00008 class Mapping_data; 00009 00010 00012 typedef Mapping_data Mapping_point_t; 00014 typedef std::list<Mapping_point_t> Mapping_point_list_t; 00016 typedef Mapping_point_list_t::iterator Mapping_point_iterator_t; 00018 typedef Mapping_point_list_t::const_iterator Mapping_point_iterator_const_t; 00020 typedef std::vector<Mapping_point_t> Mapping_point_vector_t; 00021 00023 class TraFuData 00024 { 00025 public: 00027 TraFuData(const char *tfd_filename = 0); 00028 00030 void Init(); 00031 00033 Mapping_point_t mapDensity(float density) const; 00035 void createDensityVectorPart(Mapping_point_vector_t &vec, 00036 int first_element, 00037 int number_of_elements, 00038 const Mapping_point_iterator_const_t &lower, 00039 const Mapping_point_iterator_const_t &upper) const; 00041 Mapping_point_vector_t createDensityVector(int number_of_elements) const; 00042 00044 void load_file(const char *tfd_filename); 00046 void save_file(const char *tfd_filename); 00047 00049 void Sort() { m_mapping_points.sort(); } 00051 void Delete(Mapping_point_iterator_t &target) { m_mapping_points.erase(target); Sort(); } 00053 void Add(const Mapping_point_t &new_point) { m_mapping_points.push_back(new_point); Sort(); } 00054 00056 Mapping_point_iterator_t begin() { return m_mapping_points.begin(); } 00058 Mapping_point_iterator_t end() { return m_mapping_points.end(); } 00059 00060 private: 00062 Mapping_point_list_t m_mapping_points; 00063 }; 00064 00065 #endif //TRAFU_DATA_H