Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[sonar] Declare functions "const" in src/s4u/.
[simgrid.git] / include / simgrid / s4u / Engine.hpp
index b1405ca..58e0e8f 100644 (file)
@@ -41,24 +41,24 @@ public:
   static void shutdown();
 
   /** Run the simulation after initialization */
-  void run();
+  void run() const;
 
   /** @brief Retrieve the simulation time (in seconds) */
   static double get_clock();
   /** @brief Retrieve the engine singleton */
   static s4u::Engine* get_instance();
 
-  void load_platform(const std::string& platf);
+  void load_platform(const std::string& platf) const;
 
   XBT_ATTRIB_DEPRECATED_v330("Please change the return code of your actors to void") void register_function(
       const std::string& name, int (*code)(int, char**));
 
-  void register_function(const std::string& name, std::function<void(int, char**)> code);
-  void register_function(const std::string& name, std::function<void(std::vector<std::string>)> code);
+  void register_function(const std::string& name, const std::function<void(int, char**)>& code);
+  void register_function(const std::string& name, const std::function<void(std::vector<std::string>)>& code);
 
   XBT_ATTRIB_DEPRECATED_v330("Please change the return code of your actors to void") void register_default(
       int (*code)(int, char**));
-  void register_default(std::function<void(int, char**)> code);
+  void register_default(const std::function<void(int, char**)>& code);
   void register_default(const kernel::actor::ActorCodeFactory& factory);
 
   void register_function(const std::string& name, const kernel::actor::ActorCodeFactory& factory);
@@ -103,44 +103,44 @@ protected:
 
 public:
   /** Returns the amount of hosts existing in the platform. */
-  size_t get_host_count();
+  size_t get_host_count() const;
   /** Returns a vector of all hosts found in the platform.
    *
    * The order is generally different from the creation/declaration order in the XML platform because we use a hash
    * table internally.
    */
-  std::vector<Host*> get_all_hosts();
-  std::vector<Host*> get_filtered_hosts(const std::function<bool(Host*)>& filter);
-  Host* host_by_name(const std::string& name);
-  Host* host_by_name_or_null(const std::string& name);
+  std::vector<Host*> get_all_hosts() const;
+  std::vector<Host*> get_filtered_hosts(const std::function<bool(Host*)>& filter) const;
+  Host* host_by_name(const std::string& name) const;
+  Host* host_by_name_or_null(const std::string& name) const;
 
-  size_t get_link_count();
-  std::vector<Link*> get_all_links();
-  std::vector<Link*> get_filtered_links(const std::function<bool(Link*)>& filter);
-  Link* link_by_name(const std::string& name);
-  Link* link_by_name_or_null(const std::string& name);
+  size_t get_link_count() const;
+  std::vector<Link*> get_all_links() const;
+  std::vector<Link*> get_filtered_links(const std::function<bool(Link*)>& filter) const;
+  Link* link_by_name(const std::string& name) const;
+  Link* link_by_name_or_null(const std::string& name) const;
 
-  size_t get_actor_count();
-  std::vector<ActorPtr> get_all_actors();
-  std::vector<ActorPtr> get_filtered_actors(const std::function<bool(ActorPtr)>& filter);
+  size_t get_actor_count() const;
+  std::vector<ActorPtr> get_all_actors() const;
+  std::vector<ActorPtr> get_filtered_actors(const std::function<bool(ActorPtr)>& filter) const;
 
 #ifndef DOXYGEN
-  size_t get_storage_count();
-  std::vector<Storage*> get_all_storages();
-  Storage* storage_by_name(const std::string& name);
-  Storage* storage_by_name_or_null(const std::string& name);
+  size_t get_storage_count() const;
+  std::vector<Storage*> get_all_storages() const;
+  Storage* storage_by_name(const std::string& name) const;
+  Storage* storage_by_name_or_null(const std::string& name) const;
 #endif
 
-  std::vector<kernel::routing::NetPoint*> get_all_netpoints();
-  kernel::routing::NetPoint* netpoint_by_name_or_null(const std::string& name);
+  std::vector<kernel::routing::NetPoint*> get_all_netpoints() const;
+  kernel::routing::NetPoint* netpoint_by_name_or_null(const std::string& name) const;
 
-  NetZone* get_netzone_root();
+  NetZone* get_netzone_root() const;
   void set_netzone_root(const NetZone* netzone);
 
-  NetZone* netzone_by_name_or_null(const std::string& name);
+  NetZone* netzone_by_name_or_null(const std::string& name) const;
 
   /** @brief Retrieves all netzones of the type indicated by the template argument */
-  template <class T> std::vector<T*> get_filtered_netzones()
+  template <class T> std::vector<T*> get_filtered_netzones() const
   {
     static_assert(std::is_base_of<kernel::routing::NetZoneImpl, T>::value,
                   "Filtering netzones is only possible for subclasses of kernel::routing::NetZoneImpl");
@@ -165,7 +165,7 @@ public:
   void set_config(const std::string& name, int value);
   void set_config(const std::string& name, bool value);
   void set_config(const std::string& name, double value);
-  void set_config(const std::string& name, std::string value);
+  void set_config(const std::string& name, const std::string& value);
 
   /** Callback fired when the platform is created (ie, the xml file parsed),
    * right before the actual simulation starts. */
@@ -181,7 +181,8 @@ public:
   /** Callback fired when the time jumps into the future */
   static xbt::signal<void(double)> on_time_advance;
 
-  /** Callback fired when the time cannot advance because of inter-actors deadlock */
+  /** Callback fired when the time cannot advance because of inter-actors deadlock. Note that the on_exit of each actor
+   * is also executed on deadlock. */
   static xbt::signal<void(void)> on_deadlock;
 
 private: