Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
The pimpl of s4u objects is const
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 26 Jan 2019 17:43:11 +0000 (18:43 +0100)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Sat, 26 Jan 2019 17:43:45 +0000 (18:43 +0100)
But the one of activities and the cpu_pimpl of host (the codebase is
not ready yet).

include/simgrid/s4u/Actor.hpp
include/simgrid/s4u/ConditionVariable.hpp
include/simgrid/s4u/Engine.hpp
include/simgrid/s4u/Mailbox.hpp
include/simgrid/s4u/Mutex.hpp
include/simgrid/s4u/NetZone.hpp
include/simgrid/s4u/VirtualMachine.hpp
src/kernel/context/Context.cpp
src/s4u/s4u_Engine.cpp

index f0c4143..e9cc96b 100644 (file)
@@ -126,7 +126,7 @@ class XBT_PUBLIC Actor : public simgrid::xbt::Extendable<Actor> {
   friend simgrid::kernel::actor::ActorImpl;
   friend simgrid::kernel::activity::MailboxImpl;
 
-  kernel::actor::ActorImpl* pimpl_ = nullptr;
+  kernel::actor::ActorImpl* const pimpl_ = nullptr;
 
   explicit Actor(smx_actor_t pimpl) : pimpl_(pimpl) {}
 
index 7d8ebe0..773e5e0 100644 (file)
@@ -24,9 +24,10 @@ namespace s4u {
 class XBT_PUBLIC ConditionVariable {
 private:
   friend simgrid::kernel::activity::ConditionVariableImpl;
-  smx_cond_t cond_;
+  simgrid::kernel::activity::ConditionVariableImpl* const cond_;
+
+  explicit ConditionVariable(simgrid::kernel::activity::ConditionVariableImpl* cond) : cond_(cond) {}
 
-  explicit ConditionVariable(smx_cond_t cond) : cond_(cond) {}
 public:
   ConditionVariable(ConditionVariable const&) = delete;
   ConditionVariable& operator=(ConditionVariable const&) = delete;
@@ -38,7 +39,8 @@ public:
 
 #ifndef DOXYGEN
   /** @deprecated See Comm::get_mailbox() */
-  XBT_ATTRIB_DEPRECATED_v323("Please use Comm::get_mailbox()") ConditionVariablePtr createConditionVariable()
+  XBT_ATTRIB_DEPRECATED_v323("Please use ConditionVariableImpl::create()") ConditionVariablePtr
+      createConditionVariable()
   {
     return create();
   }
index 54874d3..6737949 100644 (file)
@@ -155,7 +155,7 @@ public:
   void set_config(std::string str);
 
 private:
-  simgrid::kernel::EngineImpl* pimpl;
+  simgrid::kernel::EngineImpl* const pimpl;
   static s4u::Engine* instance_;
 
   //////////////// Deprecated functions
index a768d84..e226df2 100644 (file)
@@ -19,7 +19,7 @@ class XBT_PUBLIC Mailbox {
   friend simgrid::s4u::Comm;
   friend simgrid::kernel::activity::MailboxImpl;
 
-  simgrid::kernel::activity::MailboxImpl* pimpl_;
+  simgrid::kernel::activity::MailboxImpl* const pimpl_;
 
   explicit Mailbox(kernel::activity::MailboxImpl * mbox) : pimpl_(mbox) {}
 
index 4a483ce..0689f52 100644 (file)
@@ -30,7 +30,7 @@ class XBT_PUBLIC Mutex {
   friend simgrid::s4u::ConditionVariable;
   friend simgrid::kernel::activity::MutexImpl;
 
-  simgrid::kernel::activity::MutexImpl* pimpl_;
+  simgrid::kernel::activity::MutexImpl* const pimpl_;
   explicit Mutex(simgrid::kernel::activity::MutexImpl* mutex) : pimpl_(mutex) {}
 
   /* refcounting */
index d96c8a5..41971ae 100644 (file)
@@ -44,7 +44,7 @@ public:
   kernel::routing::NetZoneImpl* get_impl() { return pimpl_; }
 
 private:
-  kernel::routing::NetZoneImpl* pimpl_;
+  kernel::routing::NetZoneImpl* const pimpl_;
   std::unordered_map<std::string, std::string> properties_;
 
 public:
index 92572fc..4c28ac5 100644 (file)
@@ -20,7 +20,7 @@ namespace s4u {
  *
  */
 class XBT_PUBLIC VirtualMachine : public s4u::Host {
-  simgrid::vm::VirtualMachineImpl* pimpl_vm_ = nullptr;
+  simgrid::vm::VirtualMachineImpl* const pimpl_vm_ = nullptr;
   virtual ~VirtualMachine();
 
 public:
index 855d11a..c2ea68a 100644 (file)
@@ -95,7 +95,7 @@ void Context::stop()
   actor_->finished_ = true;
   SIMIX_process_on_exit_runall(actor_);
 
-  /* cancel non-blocking communications */
+  /* cancel non-blocking activities */
   while (not actor_->comms.empty()) {
     smx_activity_t synchro = actor_->comms.front();
     actor_->comms.pop_front();
index 06aba95..ccdce47 100644 (file)
@@ -34,14 +34,13 @@ xbt::signal<void(void)> on_deadlock;
 
 Engine* Engine::instance_ = nullptr; /* That singleton is awful, but I don't see no other solution right now. */
 
-Engine::Engine(int* argc, char** argv)
+Engine::Engine(int* argc, char** argv) : pimpl(new kernel::EngineImpl())
 {
   xbt_assert(s4u::Engine::instance_ == nullptr,
              "It is currently forbidden to create more than one instance of s4u::Engine");
   TRACE_global_init();
   SIMIX_global_init(argc, argv);
 
-  pimpl                  = new kernel::EngineImpl();
   s4u::Engine::instance_ = this;
 }