icedb  version 0.5.1
Snow particle scattering database API
Database.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <map>
3 #include <memory>
4 #include <string>
5 #include "compat/gsl/span"
6 #include "compat/gsl/pointers"
7 #include "util.hpp"
8 #include "Data_Types.hpp"
9 #include "fs.hpp"
10 #include "Group.hpp"
11 
12 namespace icedb {
14  namespace Databases {
15 
16  class Database {
17  protected:
18  Database();
19  public:
20  typedef std::unique_ptr<Database> Database_ptr;
21  //typedef std::unique_ptr<Database, mem::icedb_delete<Database> > Database_ptr;
22  virtual ~Database();
23  static Database_ptr createSampleDatabase(const std::string &location);
24  static Database_ptr createSingleFileDatabase(const std::string &location);
25  static Database_ptr openDatabase(const std::string &location, fs::IOopenFlags flags = fs::IOopenFlags::READ_ONLY);
26  static Database_ptr openVirtualDatabase(size_t memSizeInBytes);
27  static void indexDatabase(const std::string &location);
28 
29  //static Database copyDatabase(const Database& sourceDB, const std::string &location);
30  virtual Groups::Group::Group_ptr openGroup(const std::string &path) = 0;
31  virtual Groups::Group::Group_ptr createGroup(const std::string &path) = 0;
32  virtual Groups::Group::Group_ptr createGroupStructure(const std::string &groupName) = 0;
33  virtual Groups::Group::Group_ptr createGroupStructure(const std::vector<std::string> &groupNames) = 0;
34 
35  //ObjectIdPathSet_Type findObjects(ObjectTypes type, const std::string &base, bool recurse = true);
36  };
37  }
38 
39  // Search functions
40  // Get all objects that match a set of object identifiers, under a certain base object.
41  typedef std::map<std::string, fs::ObjectTypes> ObjectIdPathSet_Type;
42 }
std::map< std::string, fs::ObjectTypes > ObjectIdPathSet_Type
Definition: Database.hpp:41
static void indexDatabase(const std::string &location)
Definition: databases.cpp:161
IOopenFlags
Definition: fs.hpp:16
static Database_ptr createSampleDatabase(const std::string &location)
Definition: databases.cpp:68
virtual Groups::Group::Group_ptr openGroup(const std::string &path)=0
std::unique_ptr< Database > Database_ptr
Definition: Database.hpp:20
virtual Groups::Group::Group_ptr createGroup(const std::string &path)=0
static Database_ptr createSingleFileDatabase(const std::string &location)
Definition: databases.cpp:95
std::unique_ptr< Groups::Group > Group_ptr
Definition: Group.hpp:30
static Database_ptr openVirtualDatabase(size_t memSizeInBytes)
Definition: databases.cpp:107
static Database_ptr openDatabase(const std::string &location, fs::IOopenFlags flags=fs::IOopenFlags::READ_ONLY)
Definition: databases.cpp:118
virtual Groups::Group::Group_ptr createGroupStructure(const std::string &groupName)=0