00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef NameReader_HPP
00011 #define NameReader_HPP
00012 #include <string>
00013 #include <vector>
00014 #include <list>
00015 #include <fstream>
00016 #include <iostream>
00017 #include <CoinHelperFunctions.hpp>
00018 #include "OsiSolverInterface.hpp"
00019
00020 #include <map>
00021
00022 namespace Bonmin{
00025 class NamesReader
00026 {
00027 public:
00029 NamesReader(const char * fileName, const char * suffix);
00031 NamesReader(const std::string & fileName="", const std::string& suffix=".col");
00033 bool readFile();
00035 bool readFile(const std::string &file)
00036 {
00037 file_=file;
00038 return readFile();
00039 }
00040
00042 void copyNames(OsiSolverInterface::OsiNameVec& Names);
00043
00045 const std::string& name(int i){
00046 return names_[i];
00047 }
00048
00050 int index(const char * str){
00051 return indices_[str];
00052 }
00053 private:
00055 std::string file_;
00056
00058 std::string suffix_;
00059
00061 struct ltstr
00062 {
00063 bool operator()(const char* s1, const char* s2) const
00064 {
00065 return strcmp(s1, s2) < 0;
00066 }
00067 };
00068
00070 typedef std::map<const char *, int, ltstr> namesHash;
00072 namesHash indices_;
00074 std::vector<std::string> names_;
00075 };
00076 }
00077 #endif