Horizon
ipool.hpp
1 #pragma once
2 #include <string>
3 #include <set>
4 #include <map>
5 
6 namespace horizon {
7 class UUID;
8 enum class ObjectType;
9 
10 namespace SQLite {
11 class Database;
12 }
13 
14 class IPool {
15 public:
16  virtual const class Unit *get_unit(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
17  virtual const class Entity *get_entity(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
18  virtual const class Symbol *get_symbol(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
19  virtual const class Padstack *get_padstack(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
20  virtual const class Padstack *get_well_known_padstack(const std::string &name, UUID *pool_uuid_out = nullptr) = 0;
21  virtual const class Package *get_package(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
22  virtual const class Part *get_part(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
23  virtual const class Frame *get_frame(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
24  virtual const class Decal *get_decal(const UUID &uu, UUID *pool_uuid_out = nullptr) = 0;
25  virtual SQLite::Database &get_db() = 0;
26  virtual const std::string &get_base_path() const = 0;
27 
28  virtual std::string get_model_filename(const UUID &pkg_uuid, const UUID &model_uuid) = 0;
29  virtual std::set<UUID> get_alternate_packages(const UUID &uu) = 0;
30 
31  virtual void clear() = 0;
32 
33  virtual class PoolParametric *get_parametric() = 0;
34 
35  virtual const class PoolInfo &get_pool_info() const = 0;
36 
37  static const std::map<ObjectType, std::string> type_names;
38  virtual std::map<std::string, UUID> get_actually_included_pools(bool include_self) = 0;
39 
40  virtual ~IPool()
41  {
42  }
43 };
44 } // namespace horizon
Definition: decal.hpp:16
Definition: entity.hpp:13
Definition: frame.hpp:21
Definition: ipool.hpp:14
Definition: package.hpp:30
Definition: padstack.hpp:21
Definition: part.hpp:14
Definition: pool_info.hpp:11
Definition: pool_parametric.hpp:10
Definition: sqlite.hpp:69
Definition: symbol.hpp:72
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16
A Unit is the template for a Gate inside of an Entity.
Definition: unit.hpp:58