Changeset 733 for cpp/frams/util/multimap.h
- Timestamp:
- 02/15/18 00:43:07 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/util/multimap.h
r304 r733 10 10 class SingleMapping 11 11 { 12 13 SingleMapping(int b,const MultiRange& t):begin(b),to(t) {}14 SingleMapping(int b):begin(b) {}15 SingleMapping(const SingleMapping& sm):begin(sm.begin),to(sm.to) {}16 int begin;17 MultiRange to;12 public: 13 SingleMapping(int b, const MultiRange& t) :begin(b), to(t) {} 14 SingleMapping(int b) :begin(b) {} 15 SingleMapping(const SingleMapping& sm) :begin(sm.begin), to(sm.to) {} 16 int begin; 17 MultiRange to; 18 18 }; 19 19 20 20 /** MultiMap - used for conversion mapping. 21 22 23 */21 Read about how mappings work: http://www.framsticks.com/files/common/GeneticMappingsInArtificialGenomes.pdf 22 see @ref convmap 23 */ 24 24 class MultiMap 25 25 { 26 /** list of (SingleMapping*) */27 SList data;26 /** list of (SingleMapping*) */ 27 SList data; 28 28 29 SingleMapping* getData(int i) const {return (SingleMapping*)data(i);}30 void addData(int i,SingleMapping* mapping) {data.insert(i,(void*)mapping);}31 void removeData(int i) {data.remove(i);}32 int findData(int x) const;33 int getBegin(int i) const {return getData(i)->begin;}29 SingleMapping* getData(int i) const { return (SingleMapping*)data(i); } 30 void addData(int i, SingleMapping* mapping) { data.insert(i, (void*)mapping); } 31 void removeData(int i) { data.remove(i); } 32 int findData(int x) const; 33 int getBegin(int i) const { return getData(i)->begin; } 34 34 35 // addRangeXXX return the shift for range numbers > r36 int addRange(int &r,const MultiRange& mr);37 // value of 'r' is adjusted according to its range number change38 int addRangeBeginEnd(int &r,int begin,int end,const MultiRange& mr);35 // addRangeXXX return the shift for range numbers > r 36 int addRange(int &r, const MultiRange& mr); 37 // value of 'r' is adjusted according to its range number change 38 int addRangeBeginEnd(int &r, int begin, int end, const MultiRange& mr); 39 39 40 41 MultiMap() {}42 MultiMap(const MultiMap& mm) {operator=(mm);}43 ~MultiMap();44 void operator=(const MultiMap& mm);40 public: 41 MultiMap() {} 42 MultiMap(const MultiMap& mm) { operator=(mm); } 43 ~MultiMap(); 44 void operator=(const MultiMap& mm); 45 45 46 void clear();47 int isEmpty() const {return data.size()==0;}48 int mappingCount() const {return data.size();}49 SingleMapping* getMapping(int i) const {return (SingleMapping*)getData(i);}50 int findMappingId(int x) const {return findData(x);}51 int rangeCount() const {return isEmpty()?0:data.size()-1;}52 IRange getRange(int i) const;46 void clear(); 47 int isEmpty() const { return data.size() == 0; } 48 int mappingCount() const { return data.size(); } 49 SingleMapping* getMapping(int i) const { return (SingleMapping*)getData(i); } 50 int findMappingId(int x) const { return findData(x); } 51 int rangeCount() const { return isEmpty() ? 0 : data.size() - 1; } 52 IRange getRange(int i) const; 53 53 54 int getBegin() const;55 int getEnd() const;54 int getBegin() const; 55 int getEnd() const; 56 56 57 void add(const IRange& from,const IRange& to) {add(from.begin, from.end, MultiRange(to));}58 void add(const IRange& from,const MultiRange& to) {add(from.begin, from.end, to);}59 void add(int from1,int from2,int to1,int to2) {add(from1,from2,MultiRange(to1,to2));}60 void add(int from1,int from2,const MultiRange& to);61 void add(const MultiRange& from,const MultiRange& to);62 void add(const MultiMap& mm);63 void addCombined(const MultiMap& m1,const MultiMap& m2);64 void addReversed(const MultiMap& mm);57 void add(const IRange& from, const IRange& to) { add(from.begin, from.end, MultiRange(to)); } 58 void add(const IRange& from, const MultiRange& to) { add(from.begin, from.end, to); } 59 void add(int from1, int from2, int to1, int to2) { add(from1, from2, MultiRange(to1, to2)); } 60 void add(int from1, int from2, const MultiRange& to); 61 void add(const MultiRange& from, const MultiRange& to); 62 void add(const MultiMap& mm); 63 void addCombined(const MultiMap& m1, const MultiMap& m2); 64 void addReversed(const MultiMap& mm); 65 65 66 const MultiRange& map(int x) const;67 MultiRange map(int begin,int end) const;68 MultiRange map(const IRange& range) const {return map(range.begin, range.end);}69 MultiRange map(const MultiRange& ranges) const;66 const MultiRange& map(int x) const; 67 MultiRange map(int begin, int end) const; 68 MultiRange map(const IRange& range) const { return map(range.begin, range.end); } 69 MultiRange map(const MultiRange& ranges) const; 70 70 71 void print() const;72 void print2() const;71 void print() const; 72 void print2() const; 73 73 }; 74 74
Note: See TracChangeset
for help on using the changeset viewer.