]> AND Public Git Repository - simgrid.git/blobdiff - include/simgrid/Exception.hpp
Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix simcall_blocking returning a value.
[simgrid.git] / include / simgrid / Exception.hpp
index 613c527abf56aaa78f1b850a85b1a499eaba63f4..000a0e206bdbced1e2d3603da79c2b4c106c04de 100644 (file)
@@ -81,8 +81,8 @@ public:
 /** Ancestor class of all SimGrid exception */
 class Exception : public std::runtime_error {
 public:
-  Exception(const simgrid::xbt::ThrowPoint& throwpoint, const std::string& message)
-      : std::runtime_error(message), throwpoint_(throwpoint)
+  Exception(simgrid::xbt::ThrowPoint&& throwpoint, const std::string& message)
+      : std::runtime_error(message), throwpoint_(std::move(throwpoint))
   {
   }
   Exception(const Exception&)     = default;
@@ -92,18 +92,20 @@ public:
   /** Return the information about where the exception was thrown */
   xbt::ThrowPoint const& throw_point() const { return throwpoint_; }
 
+  /** Allow to carry a value (used by testany/waitany) */
+  int get_value() const { return value_; }
+  void set_value(int value) { value_ = value; }
+
   std::string resolve_backtrace() const { return throwpoint_.backtrace_.resolve(); }
 
-  virtual void rethrow_nested(const simgrid::xbt::ThrowPoint& throwpoint, const std::string& message) const
+  virtual void rethrow_nested(simgrid::xbt::ThrowPoint&& throwpoint, const std::string& message) const
   {
-    std::throw_with_nested(Exception(throwpoint, message));
+    std::throw_with_nested(Exception(std::move(throwpoint), message));
   }
 
-  /** Allow to carry a value (used by waitall/waitany) */
-  int value = 0;
-
 private:
   xbt::ThrowPoint throwpoint_;
+  int value_ = 0;
 };
 
 #define DECLARE_SIMGRID_EXCEPTION(AnyException, ...)                                                                   \
@@ -112,9 +114,9 @@ private:
     using Exception::Exception;                                                                                        \
     __VA_ARGS__                                                                                                        \
     ~AnyException() override;                                                                                          \
-    void rethrow_nested(const simgrid::xbt::ThrowPoint& throwpoint, const std::string& message) const override         \
+    void rethrow_nested(simgrid::xbt::ThrowPoint&& throwpoint, const std::string& message) const override              \
     {                                                                                                                  \
-      std::throw_with_nested(AnyException(throwpoint, message));                                                       \
+      std::throw_with_nested(AnyException(std::move(throwpoint), message));                                            \
     }                                                                                                                  \
   }