- size_t get_host_count();
- std::vector<Host*> get_all_hosts();
- simgrid::s4u::Host* host_by_name(std::string name);
- simgrid::s4u::Host* host_by_name_or_null(std::string name);
-
- size_t get_link_count();
- std::vector<Link*> get_all_links();
-
- size_t get_storage_count();
- std::vector<Storage*> get_all_storages();
- simgrid::s4u::Storage* storage_by_name(std::string name);
- simgrid::s4u::Storage* storage_by_name_or_null(std::string name);
-
- /** @brief Run the simulation */
- void run();
-
- /** @brief Retrieve the simulation time */
- static double get_clock();
-
- /** @brief Retrieve the engine singleton */
- static s4u::Engine* getInstance();
-
- /** @brief Retrieve the root netzone, containing all others */
- simgrid::s4u::NetZone* getNetRoot();
-
- /** @brief Retrieve the netzone of the given name (or nullptr if not found) */
- simgrid::s4u::NetZone* getNetzoneByNameOrNull(const char* name);
-
- /** @brief Retrieves all netzones of the same type than the subtype of the whereto vector */
- template <class T> void getNetzoneByType(std::vector<T*> * whereto) { netzoneByTypeRecursive(getNetRoot(), whereto); }
- /** @brief Retrieve the netcard of the given name (or nullptr if not found) */
- simgrid::kernel::routing::NetPoint* getNetpointByNameOrNull(std::string name);
- void getNetpointList(std::vector<simgrid::kernel::routing::NetPoint*> * list);
+ /** Returns the amount of hosts existing in the platform. */
+ 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() 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() 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() 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() 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() const;
+ kernel::routing::NetPoint* netpoint_by_name_or_null(const std::string& name) const;
+
+ NetZone* get_netzone_root() const;
+ void set_netzone_root(const NetZone* netzone);
+
+ 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() const
+ {
+ static_assert(std::is_base_of<kernel::routing::NetZoneImpl, T>::value,
+ "Filtering netzones is only possible for subclasses of kernel::routing::NetZoneImpl");
+ std::vector<T*> res;
+ get_filtered_netzones_recursive(get_netzone_root(), &res);
+ return res;
+ }