inlib  1.2.0
Functions
inlib::config Namespace Reference

Functions

std::string remove_versions (const std::string &aString)
bool osc_home_dir (std::string &a_dir)
bool find_resource (const std::string &aFile, const std::string &aWhat, std::string &a_value)
bool find_cxx (const std::string &, const std::string &aFile, std::string &a_value)
bool find_incs (const std::string &, const std::string &aFile, std::string &a_value)
bool find_flags (const std::string &, const std::string &aFile, std::string &a_value)
bool find_libs (const std::string &, const std::string &aFile, std::string &a_value)
bool find_incdir (const std::string &, const std::string &aFile, std::string &a_value)

Function Documentation

bool inlib::config::find_cxx ( const std::string &  ,
const std::string &  aFile,
std::string &  a_value 
) [inline]

Definition at line 97 of file config.

                                                                                 {
  std::string home_dir;
  if(!osc_home_dir(home_dir)) {a_value.clear();return false;}
  std::string file = home_dir+sep()+"bin"+sep()+aFile;
  return find_resource(file,"obuild_cxx_command",a_value);
}
bool inlib::config::find_flags ( const std::string &  ,
const std::string &  aFile,
std::string &  a_value 
) [inline]

Definition at line 114 of file config.

                                                                                   {
  std::string home_dir;
  if(!osc_home_dir(home_dir)) {a_value.clear();return false;}
  std::string file = home_dir+sep()+"bin"+sep()+aFile;

  std::string opts;
  if(!find_resource(file,"obuild_cxx_options",opts)) {
    a_value.clear();
    return false;
  }

  std::string macs;
  if(!find_resource(file,"obuild_cxx_macros",macs)) {
    a_value.clear();
    return false;
  }

  std::string incs;
  if(!find_resource(file,"obuild_cxx_includes",incs)) {
    a_value.clear();
    return false;
  }

  incs = remove_versions(incs);
  replace(incs,"@@top@@",home_dir+sep()+"Resources");

  //if(home_dir.find(" ")==std::string::npos) {
  //  replace(incs,"\"","");
  //}

  a_value= opts+" "+macs+" "+incs;
  return true;
}
bool inlib::config::find_incdir ( const std::string &  ,
const std::string &  aFile,
std::string &  a_value 
) [inline]

Definition at line 175 of file config.

                                                                                    {
  std::string home_dir;
  if(!osc_home_dir(home_dir)) {a_value.clear();return false;}
  std::string file = home_dir+sep()+"bin"+sep()+aFile;

  std::string package;
  if(!find_resource(file,"obuild_package",package)) {
    a_value.clear();
    return false;
  }

  std::string version;
  if(!find_resource(file,"obuild_version",version)) {
    a_value.clear();
    return false;
  }

  a_value = home_dir+sep()+"Resources"+sep()+package+sep()+"include";

  return true;
}
bool inlib::config::find_incs ( const std::string &  ,
const std::string &  aFile,
std::string &  a_value 
) [inline]

Definition at line 104 of file config.

                                                                                  {
  std::string home_dir;
  if(!osc_home_dir(home_dir)) {a_value.clear();return false;}
  std::string file = home_dir+sep()+"bin"+sep()+aFile;
  if(!find_resource(file,"obuild_cxx_includes",a_value)) return false;
  a_value = remove_versions(a_value);
  replace(a_value,"@@top@@",home_dir+sep()+"Resources");
  return true;
}
bool inlib::config::find_libs ( const std::string &  ,
const std::string &  aFile,
std::string &  a_value 
) [inline]

Definition at line 148 of file config.

                                                                                  {
  std::string home_dir;
  if(!osc_home_dir(home_dir)) {a_value.clear();return false;}
  std::string file = home_dir+sep()+"bin"+sep()+aFile;

  std::string spaths;
#ifdef WIN32
  spaths = "/LIBPATH:\""+home_dir+"\\lib\"";
#else
  spaths = "-L\""+home_dir+"/lib\"";
#endif

  std::string slibs;
  if(!find_resource(file,"obuild_linked_libraries",slibs)) {
    a_value.clear();
    return false;
  }

  //if(home_dir.find(" ")==std::string::npos) {
  //  replace(spaths,"\"","");
  //}

  a_value = spaths+" "+slibs;

  return true;
}
bool inlib::config::find_resource ( const std::string &  aFile,
const std::string &  aWhat,
std::string &  a_value 
) [inline]

Definition at line 46 of file config.

  {
  std::vector<std::string> txt;
  if(!inlib::file::read(aFile,txt)) {
    ::fprintf(stderr,"Can't read the file :\n");
    ::fprintf(stderr,"%s\n",aFile.c_str());
    ::fprintf(stderr,
              "containing the platform dependant incs and libs infos.\n");
    a_value.clear();
    return false;
  }
  if(!txt.size()) {
    ::fprintf(stderr,"The file :\n");
    ::fprintf(stderr,"%s\n",aFile.c_str());
    ::fprintf(stderr,"is empty. We expect to find in it\n");
    ::fprintf(stderr,"the platform dependant incs and libs infos.\n");
    a_value.clear();
    return false;
  }
 {unsigned int number = txt.size();
  for(unsigned int index=0;index<number;index++){
    const std::string& line = txt[index];
    std::string::size_type pos = line.find('=');
    if(pos==std::string::npos) {
      ::fprintf(stderr,"Syntax error in file :\n");
      ::fprintf(stderr,"%s\n",aFile.c_str());
      ::fprintf(stderr,"for line :\n");
      ::fprintf(stderr,"%s\n",line.c_str());
      ::fprintf(stderr,"We expect line with : <key>=<value>\n");
      a_value.clear();
      return false;
    }
    if(aWhat==line.substr(0,pos)) {
      a_value = line.substr(pos+1,line.size()-(pos+1));
      return true;
    }
  }}
  ::fprintf(stderr,"The file :\n");
  ::fprintf(stderr,"%s\n",aFile.c_str());
  ::fprintf(stderr,"does not contain the %s infos.\n",aWhat.c_str());
  a_value.clear();
  return false;
}
bool inlib::config::osc_home_dir ( std::string &  a_dir) [inline]

Definition at line 35 of file config.

                                           {
  if(!getenv("OSC_HOME_DIR",a_dir)) {
    ::fprintf(stderr," Environment variable OSC_HOME_DIR not defined.\n");
    ::fprintf(stderr," You have to setup the kit by sourcing \n");
    ::fprintf(stderr," the setup script found in the distribution.\n");
    a_dir.clear();
    return false;
  }
  return true;
}
std::string inlib::config::remove_versions ( const std::string &  aString) [inline]

Definition at line 17 of file config.

                                                           {
  std::vector<std::string> words = inlib::words(aString," ");
  unsigned int wordn = words.size();
  std::string snew;
  for(unsigned int index=0;index<wordn;index++) {
    const std::string& word = words[index];
    if(word.find("@@top@@")!=std::string::npos) {
      std::string s = remove_version(word);
      if(snew.size()) snew += " ";
      snew += s;
    } else {
      if(snew.size()) snew += " ";
      snew += word;
    }
  }
  return snew;
}
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines