-boost::unordered_map <std::string, Storage *> *Storage::storages_ = new boost::unordered_map<std::string, Storage*> ();
-Storage::Storage(std::string name, smx_storage_t inferior) {
- name_ = name;
- pimpl_ = inferior;
+std::map<std::string, Storage*>* allStorages()
+{
+ std::unordered_map<std::string, surf::StorageImpl*>* map = surf::StorageImpl::storagesMap();
+ std::map<std::string, Storage*>* res = new std::map<std::string, Storage*>;
+ for (auto s : *map)
+ res->insert({s.first, &(s.second->piface_)}); // Convert each entry into its interface
+
+ return res;
+}
+
+Storage* Storage::byName(std::string name)
+{
+ surf::StorageImpl* res = surf::StorageImpl::byName(name);
+ if (res == nullptr)
+ return nullptr;
+ return &res->piface_;
+}
+
+const char* Storage::getName()
+{
+ return pimpl_->cname();
+}
+
+const char* Storage::getType()
+{
+ return pimpl_->typeId_.c_str();
+}