Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do not require doxygen in maintainer mode
[simgrid.git] / src / cxx / MsgException.cxx
index e69de29..25c1ab2 100644 (file)
@@ -0,0 +1,74 @@
+/*
+ * MsgException.cxx
+ *
+ * Copyright 2006,2007 Martin Quinson, Malek Cherier           
+ * All right reserved. 
+ *
+ * This program is free software; you can redistribute 
+ * it and/or modify it under the terms of the license 
+ *(GNU LGPL) which comes with this package. 
+ *
+ */
+ /* MsgException member functions implementation.
+  */  
+
+#include <MsgException.hpp>
+
+#include <string.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+namespace SimGrid
+{
+       namespace Msg
+       {
+               
+                       MsgException::MsgException()
+                       {
+                               this->reason = (char*) calloc(strlen("Internal exception : unknown reason") + 1, sizeof(char));
+                               strcpy(this->reason, "Internal exception : unknown reason");
+                       }
+               
+               
+                       MsgException::MsgException(const MsgException& rMsgException)
+                       {
+                               const char* reason = rMsgException.toString();
+                               this->reason = (char*) calloc(strlen(reason) + 1, sizeof(char));
+                               strcpy(this->reason, reason);
+                               
+                       }
+               
+                       MsgException::MsgException(const char* reason)
+                       {
+                               this->reason = (char*) calloc(strlen("Internal exception : ") + strlen(reason) + 1, sizeof(char));
+                               sprintf(this->reason, "Invalid exception : %s", reason);
+                       }
+               
+               
+                       MsgException::~MsgException()
+                       {
+                               if(this->reason)
+                                       free(this->reason);
+                       }
+                               
+                       const char* MsgException::toString(void) const
+                       {
+                               return (const char*)(this->reason);     
+                       }
+               
+               
+                       const MsgException& MsgException::operator = (const MsgException& rMsgException)
+                       {
+                               const char* reason = rMsgException.toString();
+                               this->reason = (char*) calloc(strlen(reason) + 1, sizeof(char));
+                               
+                               return *this;
+                       }
+               
+       } // namespace Msg      
+
+}// namespace SimGrid
+
+
+