Horizon
ipool.hpp
1#pragma once
2#include <string>
3#include <set>
4#include <map>
5
6namespace horizon {
7class UUID;
8enum class ObjectType;
9
10namespace SQLite {
11class Database;
12}
13
14class IPool {
15public:
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:18
Definition: ipool.hpp:14
Definition: package.hpp:29
Definition: padstack.hpp:19
Definition: part.hpp:14
Definition: pool_info.hpp:11
Definition: pool_parametric.hpp:10
Definition: sqlite.hpp:72
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:71