00001 #ifndef __NAMES_HPP__
00002 #define __NAMES_HPP__
00003
00004 #include <map>
00005 #include <vector>
00006 #include <string>
00007 #include <iostream>
00008
00009
00010
00011
00012
00013
00014 using std::string;
00015 using std::map;
00016 using std::vector;
00017 using std::cout;
00018 using std::endl;
00019
00020 class LP_parms;
00021 class VOL_lp;
00022
00023
00024 int reader(const LP_parms &lp_par, VOL_lp *lp_pb);
00025
00026
00027
00028 class Rname {
00029 public:
00030 int nrows;
00031 map<string, int> name;
00032 vector<string> sign;
00033 public:
00034 Rname() : nrows(0) {}
00035 ~Rname() {}
00036 int original_index(const string & Name) {
00037 map<string, int>::iterator j = name.find(Name);
00038 if ( j == name.end() ) {
00039 cout << " name not found: " << Name << endl;
00040 abort();
00041 }
00042 return j->second;
00043 }
00044 void add(const string &Name, const string &Sign) {
00045 map<string, int>::iterator j = name.find(Name);
00046 if ( j==name.end() ){
00047 name[Name]=nrows++;
00048 sign.push_back(Sign);
00049 } else {
00050 cout << " duplicated row: " << Name << endl;
00051 abort();
00052 }
00053 }
00054 };
00055
00056
00057
00058 class Cname{
00059 private:
00060 int ncols;
00061 public:
00062 map<string, int> name;
00063 public:
00064 Cname() : ncols(0) {}
00065 ~Cname() {}
00066 int original_index(const string & Name) {
00067 map<string, int>::iterator j = name.find(Name);
00068 if ( j == name.end() ) {
00069 cout << " name not found: " << Name << endl;
00070 abort();
00071 }
00072 return j->second;
00073 }
00074 void add(const string &Name) {
00075 map<string, int>::iterator j = name.find(Name);
00076 if ( j==name.end() ){
00077 name[Name]=ncols++;
00078 } else {
00079 cout << " duplicated row: " << Name << endl;
00080 abort();
00081 }
00082 }
00083 };
00084
00085
00086
00087 #endif