--- /dev/null
+#include <Environment.hpp>\r
+\r
+#include <sys/types.h>\r
+#include <sys/stat.h>\r
+\r
+#ifndef S_ISREG\r
+ #define S_ISREG(__mode) (((__mode) & S_IFMT) == S_IFREG)\r
+#endif\r
+\r
+namespace SimGrid\r
+{\r
+ namespace Msg\r
+ {\r
+ Environment::Environment()\r
+ {\r
+ this->file = NULL;\r
+ this->loaded = false;\r
+ }\r
+ \r
+ Environment::Environment(const Environment& rEnvironment);\r
+ {\r
+ this->file = rEnvironment.getFile();\r
+ this->loaded = rEnvironment.isLoaded();\r
+ }\r
+ \r
+ Environment::Environment(const char* file)\r
+ throw(InvalidArgumentException);\r
+ {\r
+ // check parameters\r
+ \r
+ if(!file)\r
+ throw InvalidParameterException("file (must not be NULL");\r
+ \r
+ struct stat statBuf = {0};\r
+ \r
+ if(stat(statBuff, &info) < 0 || !S_ISREG(statBuff.st_mode))\r
+ throw InvalidParameterException("file (file not found)");\r
+ \r
+ this->file = file;\r
+ this->loaded = false;\r
+ }\r
+ \r
+ Environment::~Environment()\r
+ {\r
+ // NOTHING TODO\r
+ }\r
+ \r
+ // Operations.\r
+ \r
+ void Environment::load(void)\r
+ throw(LogicException)\r
+ {\r
+ // check logic\r
+ \r
+ if(this->loaded)\r
+ throw LogicException("environement already loaded");\r
+ \r
+ // check the parameters\r
+ if(!this->file)\r
+ throw LogicException("you must specify the xml file which describe the environment to load\nuse Environment::setFile()"); \r
+ \r
+ MSG_create_environment(file);\r
+ \r
+ this->loaded = true; \r
+ }\r
+ \r
+ void Environment::load(const char* file)\r
+ throw(InvalidArgumentException, LogicException)\r
+ {\r
+ // check logic\r
+ \r
+ if(this->loaded)\r
+ throw LogicException("environment already loaded");\r
+ \r
+ // check the parameters\r
+ \r
+ if(!file)\r
+ throw InvalidParameterException("file (must not be NULL");\r
+ \r
+ struct stat statBuf = {0};\r
+ \r
+ if(stat(statBuff, &info) < 0 || !S_ISREG(statBuff.st_mode))\r
+ throw InvalidParameterException("file (file not found)");\r
+ \r
+ MSG_create_environment(file);\r
+ \r
+ this->file = file;\r
+ this->loaded = true; \r
+ }\r
+ \r
+ bool Environment::isLoaded(void) const\r
+ {\r
+ return this->loaded;\r
+ }\r
+ \r
+ // Getters/setters\r
+ void Environment::setFile(const char* file)\r
+ throw(InvalidArgumentException, LogicException)\r
+ {\r
+ // check logic\r
+ \r
+ if(this->loaded)\r
+ throw LogicException("your are trying to change the file of an already loaded environment");\r
+ \r
+ // check parameters\r
+ \r
+ if(!file)\r
+ throw InvalidParameterException("file (must not be NULL");\r
+ \r
+ struct stat statBuf = {0};\r
+ \r
+ if(stat(statBuff, &info) < 0 || !S_ISREG(statBuff.st_mode))\r
+ throw InvalidParameterException("file (file not found)");\r
+ \r
+ this->file = file;\r
+ }\r
+ \r
+ const char* Environment::getFile(void) const\r
+ {\r
+ return this->file;\r
+ }\r
+ \r
+ \r
+ const Environment& Environment::operator = (const Environment& rEnvironment)\r
+ throw(LogicException)\r
+ {\r
+ // check logic\r
+ \r
+ if(this->loaded)\r
+ throw LogicException("environment already loaded");\r
+ \r
+ this->file = rEnvironment.getFile();\r
+ this->loaded = rEnvironment.isLoaded();\r
+ \r
+ return *this;\r
+ }\r
+ \r
+ } // namespace Msg\r
+} // namespace SimGrid
\ No newline at end of file