#ifndef DOMAIN_LIBRARY_H #define DOMAIN_LIBRARY_H #include "addressspace.h" #include "bus.h" #include "component.h" #include "connection.h" #include #include namespace domain { using namespace std; class Library { std::string name; std::string libraryInfo; std::string header; std::string componentDirectory; std::optional componentHeader; std::vector addressSpaces; std::vector components; std::vector buses; std::vector connections; std::map messages; public: Library(string name, string libraryInfo, string header, string componentDirectory, std::optional componentHeader, vector addressSpaces, vector components, vector buses, vector connection, map messages); std::string getName(); std::string getLibraryInfo(); std::string getHeader(); std::string getComponentDirectory(); std::optional getComponentHeader(); std::vector getAddressSpaces(); std::vector getComponents(); std::vector getBuses(); std::vector getConnections(); bool hasComponent(std::string name); bool hasBus(std::string name); std::map getMessages(); AddressSpace &getAddressSpace(std::string name); Component &getComponent(std::string name); Bus &getBus(std::string bus); std::string getMessage(std::string key); bool hasConnection(ConnectionComponent component, std::string bus); std::optional getConnection(ConnectionComponent component, std::string bus); bool hasConnection(ConnectionComponent component, std::string bus, ConnectionComponent secondComponent); std::optional getConnection(ConnectionComponent component, std::string bus, ConnectionComponent secondComponent); bool hasConnection(ConnectionComponent component, ConnectionComponent secondComponent); std::optional getConnection(ConnectionComponent component, ConnectionComponent secondComponent); }; } // namespace domain #endif // DOMAIN_LIBRARY_H