00001
00002
00003 #include "Iguana/Framework/interface/IgEnvsElement.h"
00004 #include <stdlib.h>
00005
00006
00007
00008
00009
00010
00011
00012
00013 IG_DEFINE_STATE_ELEMENT (IgEnvsElement, "Services/Global/Envs");
00014
00015
00016
00017
00018
00019 IgEnvsElement::IgEnvsElement (IgState *state)
00020 : m_state (state)
00021 { m_state->put (s_key, this); }
00022
00023 bool
00024 IgEnvsElement::getEnv(const std::string& name, std::string& value) const
00025 {
00026 char *envValue = getenv (name.c_str());
00027 if (envValue != NULL)
00028 {
00029 value = envValue;
00030 return true;
00031 }
00032 return false;
00033 }
00034
00035 bool
00036 IgEnvsElement::getEnv(const std::string& name, std::vector<std::string>& value,
00037 char separator ) const
00038 {
00039 std::string all;
00040 if (getEnv(name, all))
00041 {
00042 std::string item ("");
00043 size_t size = all.size();
00044 for (size_t i=0; i<size; i++)
00045 {
00046 if (all[i] == separator)
00047 {
00048 value.push_back (item);
00049 item="";
00050 }
00051 else
00052 item.push_back(all[i]);
00053 }
00054 value.push_back (item);
00055 return true;
00056 }
00057 return false;
00058 }
00059
00060 bool
00061 IgEnvsElement::getEnv(const std::string& name, int& value) const
00062 {
00063 std::string all;
00064 if (getEnv(name, all))
00065 {
00066 value = atoi(all.c_str());
00067 return true;
00068 }
00069 return false;
00070 }
00071
00072 bool
00073 IgEnvsElement::getEnv(const std::string& name, long& value) const
00074 {
00075 std::string all;
00076 if (getEnv(name, all))
00077 {
00078 value = atol(all.c_str());
00079 return true;
00080 }
00081 return false;
00082 }
00083
00084 bool
00085 IgEnvsElement::getEnv(const std::string& name, unsigned int& value) const
00086 {
00087 unsigned long value1;
00088 if (getEnv(name, value1))
00089 {
00090 value = (unsigned int)(value1);
00091 return true;
00092 }
00093 return false;
00094 }
00095
00096 bool
00097 IgEnvsElement::getEnv(const std::string& name, unsigned long& value) const
00098 {
00099 std::string all;
00100 if (getEnv(name, all))
00101 {
00102 value = strtoul(all.c_str(), (char**)NULL, 10);
00103 return true;
00104 }
00105 return false;
00106 }
00107
00108 bool
00109 IgEnvsElement::getEnv(const std::string& name, float& value) const
00110 {
00111 std::string all;
00112 if (getEnv(name, all))
00113 {
00114 value = atof(all.c_str());
00115 return true;
00116 }
00117 return false;
00118 }
00119
00120 bool
00121 IgEnvsElement::getEnv(const std::string& name, double& value) const
00122 {
00123 std::string all;
00124 if (getEnv(name, all))
00125 {
00126 value = strtod(all.c_str(), (char**)NULL);
00127 return true;
00128 }
00129 return false;
00130 }