MDAL
mdal_driver_manager.hpp
1 /*
2  MDAL - Mesh Data Abstraction Library (MIT License)
3  Copyright (C) 2018 Peter Petrik (zilolv at gmail dot com)
4 */
5 
6 #ifndef MDAL_DRIVER_MANAGER_HPP
7 #define MDAL_DRIVER_MANAGER_HPP
8 
9 #include <string>
10 #include <memory>
11 #include <vector>
12 #include <map>
13 
14 #include "mdal.h"
15 #include "mdal_data_model.hpp"
16 #include "mdal_logger.hpp"
17 #include "frmts/mdal_driver.hpp"
18 
19 namespace MDAL
20 {
21 
23  {
24  public:
25  static DriverManager &instance()
26  {
27  static DriverManager sInstance;
28  return sInstance;
29  }
30  DriverManager( DriverManager const & ) = delete;
31  void operator=( DriverManager const & ) = delete;
32 
33  std::string getUris( const std::string &file, const std::string &driverName = "" ) const;
34 
35  std::unique_ptr< Mesh > load( const std::string &meshFile, const std::string &meshName ) const;
36  std::unique_ptr< Mesh > load( const std::string &driverName,
37  const std::string &meshFile,
38  const std::string &meshName ) const;
39  void loadDatasets( Mesh *mesh, const std::string &datasetFile ) const;
40 
41  void save( Mesh *mesh, const std::string &uri ) const;
42 
43  size_t driversCount() const;
44  std::shared_ptr<MDAL::Driver> driver( const std::string &driverName ) const;
45  std::shared_ptr<MDAL::Driver> driver( size_t index ) const;
46 
47  void loadDynamicDrivers();
48 
49  private:
50  DriverManager();
51 
52  std::vector<std::shared_ptr<MDAL::Driver>> mDrivers;
53  };
54 
55 } // namespace MDAL
56 #endif //MDAL_DRIVER_MANAGER_HPP
Definition: mdal_driver_manager.hpp:23
Definition: mdal_data_model.hpp:238