Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cast once for all at surf level and not in the APIs
authorFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 30 Mar 2017 10:15:59 +0000 (12:15 +0200)
committerFrederic Suter <frederic.suter@cc.in2p3.fr>
Thu, 30 Mar 2017 10:15:59 +0000 (12:15 +0200)
include/simgrid/forward.h
src/include/surf/surf.h
src/msg/msg_io.cpp
src/s4u/s4u_storage.cpp

index 94f5465..5081b05 100644 (file)
@@ -35,6 +35,7 @@ namespace simgrid {
     class Cpu;
     class LinkImpl;
     class HostImpl;
+    class Storage;
   }
   namespace trace_mgr {
     class trace;
index 586a2dd..6cf5b49 100644 (file)
@@ -52,6 +52,7 @@ typedef simgrid::surf::CpuModel surf_CpuModel;
 typedef simgrid::surf::Cpu surf_Cpu;
 typedef simgrid::surf::HostModel surf_HostModel;
 typedef simgrid::surf::NetworkModel surf_NetworkModel;
+typedef simgrid::surf::Storage surf_Storage;
 typedef simgrid::surf::StorageModel surf_StorageModel;
 typedef simgrid::surf::Resource surf_Resource;
 typedef simgrid::surf::HostImpl surf_Host;
@@ -64,6 +65,7 @@ typedef struct surf_CpuModel surf_CpuModel;
 typedef struct surf_Cpu surf_Cpu;
 typedef struct surf_HostModel surf_HostModel;
 typedef struct surf_NetworkModel surf_NetworkModel;
+typedef struct surf_Storage surf_Storage;
 typedef struct surf_StorageModel surf_StorageModel;
 typedef struct surf_Resource surf_Resource;
 typedef struct surf_Host surf_Host;
@@ -82,6 +84,7 @@ typedef surf_CpuModel *surf_cpu_model_t;
 typedef surf_HostModel *surf_host_model_t;
 typedef surf_NetworkModel *surf_network_model_t;
 typedef surf_StorageModel *surf_storage_model_t;
+typedef surf_Storage* surf_storage_t;
 
 typedef xbt_dictelm_t surf_resource_t;
 
@@ -114,8 +117,9 @@ XBT_PUBLIC(void) model_help(const char *category, s_surf_model_description_t * t
 /* Generic model object */
 /***************************/
 
-static inline void *surf_storage_resource_priv(const void *storage){
-  return (void*)xbt_lib_get_level((xbt_dictelm_t)storage, SURF_STORAGE_LEVEL);
+static inline surf_storage_t surf_storage_resource_priv(const void* storage)
+{
+  return (surf_storage_t)xbt_lib_get_level((xbt_dictelm_t)storage, SURF_STORAGE_LEVEL);
 }
 
 static inline void *surf_storage_resource_by_name(const char *name){
index a013379..3b06812 100644 (file)
@@ -587,8 +587,7 @@ void *MSG_storage_get_data(msg_storage_t storage)
  */
 xbt_dict_t MSG_storage_get_content(msg_storage_t storage)
 {
-  std::map<std::string, sg_size_t*>* content =
-      static_cast<simgrid::surf::Storage*>(surf_storage_resource_priv(storage))->getContent();
+  std::map<std::string, sg_size_t*>* content = surf_storage_resource_priv(storage)->getContent();
   xbt_dict_t content_dict = xbt_dict_new_homogeneous(nullptr);
 
   for (auto entry : *content) {
index e816d0d..952ec8d 100644 (file)
@@ -88,8 +88,7 @@ void Storage::setProperty(const char* key, char* value)
 
 std::map<std::string, sg_size_t*>* Storage::content()
 {
-  return simgrid::simix::kernelImmediate(
-      [this] { return static_cast<simgrid::surf::Storage*>(surf_storage_resource_priv(this->pimpl_))->getContent(); });
+  return simgrid::simix::kernelImmediate([this] { return surf_storage_resource_priv(this->pimpl_)->getContent(); });
 }
 
 std::unordered_map<std::string, Storage*>* Storage::allStorages()