00001
00013 #include <iostream>
00014 #include <TMath.h>
00015
00016 #include "card_pairs.h"
00017
00018 using std::endl;
00019 using std::cout;
00020
00021 ClassImp(card_pairs)
00022
00023
00024 ostream & operator << (ostream & stream, const card_pairs & pairs)
00025 {
00026 map<string, card_pair *>::const_iterator pair_iter;
00027
00028 stream << "Contained card_pairs: " << endl;
00029
00030 for(pair_iter = pairs._card_pairs_map.begin();
00031 pair_iter != pairs._card_pairs_map.end(); ++pair_iter) {
00032
00033 stream << "card_pair: " << pair_iter->first << ": " << endl;
00034 stream << *(pair_iter->second);
00035 }
00036 return stream;
00037 }
00038
00039 card_pairs::card_pairs()
00040 {
00041
00042 }
00043
00044 card_pairs::card_pairs(const card_pairs * pairs)
00045 {
00046 map<string, card_pair *>::const_iterator pair_iter;
00047
00048 for(pair_iter = pairs->_card_pairs_map.begin();
00049 pair_iter != pairs->_card_pairs_map.end(); ++pair_iter) {
00050
00051 string name = pair_iter->first;
00052 card_pair * cards = pair_iter->second;
00053
00054 this->add_card_pair(name, cards);
00055 }
00056 }
00057
00058 card_pairs::~card_pairs()
00059 {
00060
00061 }
00062
00063 void card_pairs::add_card_pair(string name, card_pair * pair)
00064 {
00065 card_pair * cloned_pair = new card_pair(pair);
00066
00067 _card_pairs_map.insert(
00068 map<string, card_pair *>::value_type(name, cloned_pair) );
00069 }
00070
00071 void card_pairs::merge(const card_pairs * pairs)
00072 {
00073 map<string, card_pair *>::const_iterator pair_iter;
00074
00075 for(pair_iter = pairs->_card_pairs_map.begin();
00076 pair_iter != pairs->_card_pairs_map.end(); ++pair_iter) {
00077
00078 string name = pair_iter->first;
00079 card_pair * cards = pair_iter->second;
00080
00081 this->add_card_pair(name, cards);
00082 }
00083 }
00084
00085 void card_pairs::erase(string name)
00086 {
00087 _card_pairs_map.erase(name);
00088 }
00089
00090 const vector<string> * card_pairs::get_list_of_names(void) const
00091 {
00092 map<string, card_pair *>::const_iterator pair_iter;
00093
00094 vector<string> * names = new vector<string>;
00095
00096 for(pair_iter = _card_pairs_map.begin();
00097 pair_iter != _card_pairs_map.end(); ++pair_iter)
00098 names->push_back( pair_iter->first );
00099 return names;
00100 }
00101
00102 card_pair * card_pairs::get_card_pair(string name) const
00103 {
00104 if( _card_pairs_map.count(name) == 1 ) {
00105
00106 map<string, card_pair *>::const_iterator pair_iter = _card_pairs_map.find(name);
00107 return pair_iter->second;
00108
00109 } else return 0;
00110 }
00111
00112 unsigned int card_pairs::get_n_pairs(void) const
00113 {
00114 return _card_pairs_map.size();
00115 }
00116
00117 bool card_pairs::exists(string name) const
00118 {
00119 return (_card_pairs_map.count(name) == 1);
00120 }
00121
00122