CIRCT 20.0.0git
|
Public Member Functions | |
Impl (Context &ctxt, const std::string &jsonManifest) | |
auto | at (const std::string &key) const |
std::optional< ModuleInfo > | getModInfo (const nlohmann::json &) const |
void | scanServiceDecls (AcceleratorConnection &, const nlohmann::json &, ServiceTable &) const |
Go through the "service_decls" section of the manifest and populate the services table as appropriate. | |
void | createEngine (AcceleratorConnection &, AppIDPath appID, const nlohmann::json &) const |
TODO: Hack. | |
services::Service * | getService (AppIDPath idPath, AcceleratorConnection &, const nlohmann::json &, ServiceTable &activeServices, bool isEngine=false) const |
Get a Service for the service specified in 'json'. | |
std::vector< services::Service * > | getServices (AppIDPath idPath, AcceleratorConnection &, const nlohmann::json &, ServiceTable &activeServices) const |
Get all the services in the description of an instance. | |
std::vector< std::unique_ptr< BundlePort > > | getBundlePorts (AcceleratorConnection &acc, AppIDPath idPath, const ServiceTable &activeServices, const nlohmann::json &instJson) const |
Get the bundle ports for the instance at 'idPath' and specified in 'instJson'. | |
std::vector< std::unique_ptr< Instance > > | getChildInstances (AppIDPath idPath, AcceleratorConnection &acc, const ServiceTable &activeServices, const nlohmann::json &instJson) const |
Build the set of child instances (recursively) for the module instance description. | |
std::unique_ptr< Instance > | getChildInstance (AppIDPath idPath, AcceleratorConnection &acc, ServiceTable activeServices, const nlohmann::json &childJson) const |
Get a single child instance. | |
void | populateTypes (const nlohmann::json &typesJson) |
Parse all the types and populate the types table. | |
const std::vector< const Type * > & | getTypeTable () const |
Get the ordered list of types from the manifest. | |
std::unique_ptr< Accelerator > | buildAccelerator (AcceleratorConnection &acc) const |
Build a dynamic API for the Accelerator connection 'acc' based on the manifest stored herein. | |
const Type * | parseType (const nlohmann::json &typeJson) |
const std::map< std::string, const ModuleInfo > & | getSymbolInfo () const |
Private Member Functions | |
std::optional< const Type * > | getType (Type::ID id) const |
std::any | getAny (const nlohmann::json &value) const |
Convert the json value to a 'std::any', which can be exposed outside of this file. | |
void | parseModuleMetadata (ModuleInfo &info, const nlohmann::json &mod) const |
void | parseModuleConsts (ModuleInfo &info, const nlohmann::json &mod) const |
Private Attributes | |
Context & | ctxt |
std::vector< const Type * > | _typeTable |
nlohmann::json | manifestJson |
std::map< std::string, const ModuleInfo > | symbolInfoCache |
Friends | |
class | ::esi::Manifest |
Definition at line 31 of file Manifest.cpp.
Manifest::Impl::Impl | ( | Context & | ctxt, |
const std::string & | jsonManifest | ||
) |
Definition at line 252 of file Manifest.cpp.
References manifestJson, parseModuleConsts(), parseModuleMetadata(), populateTypes(), and symbolInfoCache.
|
inline |
Definition at line 37 of file Manifest.cpp.
References manifestJson.
std::unique_ptr< Accelerator > Manifest::Impl::buildAccelerator | ( | AcceleratorConnection & | acc | ) | const |
Build a dynamic API for the Accelerator connection 'acc' based on the manifest stored herein.
Definition at line 278 of file Manifest.cpp.
References buildAccelerator().
Referenced by buildAccelerator().
void Manifest::Impl::createEngine | ( | AcceleratorConnection & | acc, |
AppIDPath | idPath, | ||
const nlohmann::json & | eng | ||
) | const |
TODO: Hack.
This method is a giant hack to reuse the getService method for engines. It works, but it ain't pretty and it ain't right.
Definition at line 319 of file Manifest.cpp.
References createEngine().
Referenced by createEngine().
|
private |
std::vector< std::unique_ptr< BundlePort > > Manifest::Impl::getBundlePorts | ( | AcceleratorConnection & | acc, |
AppIDPath | idPath, | ||
const ServiceTable & | activeServices, | ||
const nlohmann::json & | instJson | ||
) | const |
Get the bundle ports for the instance at 'idPath' and specified in 'instJson'.
Look them up in 'activeServies'.
Definition at line 467 of file Manifest.cpp.
References getBundlePorts(), parseIDChecked(), and parseServicePort().
Referenced by getBundlePorts().
std::unique_ptr< Instance > Manifest::Impl::getChildInstance | ( | AppIDPath | idPath, |
AcceleratorConnection & | acc, | ||
ServiceTable | activeServices, | ||
const nlohmann::json & | childJson | ||
) | const |
Get a single child instance.
Implicitly copy the active services table so that it can be safely updated for the child's branch of the tree.
Definition at line 362 of file Manifest.cpp.
References getChildInstance(), and parseIDChecked().
Referenced by getChildInstance().
std::vector< std::unique_ptr< Instance > > Manifest::Impl::getChildInstances | ( | AppIDPath | idPath, |
AcceleratorConnection & | acc, | ||
const ServiceTable & | activeServices, | ||
const nlohmann::json & | instJson | ||
) | const |
Build the set of child instances (recursively) for the module instance description.
Definition at line 349 of file Manifest.cpp.
References getChildInstances().
Referenced by getChildInstances().
std::optional< ModuleInfo > Manifest::Impl::getModInfo | ( | const nlohmann::json & | json | ) | const |
services::Service * Manifest::Impl::getService | ( | AppIDPath | idPath, |
AcceleratorConnection & | acc, | ||
const nlohmann::json & | svcJson, | ||
ServiceTable & | activeServices, | ||
bool | isEngine = false |
||
) | const |
Get a Service for the service specified in 'json'.
Update the activeServices table. TODO: re-using this for the engines section is a terrible hack. Figure out a better way.
Definition at line 378 of file Manifest.cpp.
References getService(), parseIDChecked(), parseIDPath(), and parseServicePort().
Referenced by getService().
std::vector< services::Service * > Manifest::Impl::getServices | ( | AppIDPath | idPath, |
AcceleratorConnection & | acc, | ||
const nlohmann::json & | svcsJson, | ||
ServiceTable & | activeServices | ||
) | const |
Get all the services in the description of an instance.
Update the active services table.
Definition at line 453 of file Manifest.cpp.
References getServices().
Referenced by getServices().
|
inline |
Definition at line 98 of file Manifest.cpp.
References symbolInfoCache.
|
inlineprivate |
|
inline |
Get the ordered list of types from the manifest.
Definition at line 89 of file Manifest.cpp.
References _typeTable.
|
private |
Definition at line 235 of file Manifest.cpp.
References parseModuleConsts().
Referenced by Impl(), and parseModuleConsts().
|
private |
Definition at line 214 of file Manifest.cpp.
References parseModuleMetadata().
Referenced by Impl(), and parseModuleMetadata().
const Type * Manifest::Impl::parseType | ( | const nlohmann::json & | typeJson | ) |
void Manifest::Impl::populateTypes | ( | const nlohmann::json & | typesJson | ) |
Parse all the types and populate the types table.
Definition at line 621 of file Manifest.cpp.
References parseType(), and populateTypes().
Referenced by Impl(), and populateTypes().
void Manifest::Impl::scanServiceDecls | ( | AcceleratorConnection & | acc, |
const nlohmann::json & | svcDecls, | ||
ServiceTable & | activeServices | ||
) | const |
Go through the "service_decls" section of the manifest and populate the services table as appropriate.
Definition at line 325 of file Manifest.cpp.
References scanServiceDecls().
Referenced by scanServiceDecls().
|
friend |
Definition at line 32 of file Manifest.cpp.
|
private |
Definition at line 104 of file Manifest.cpp.
Referenced by getTypeTable().
|
private |
Definition at line 103 of file Manifest.cpp.
Referenced by getType().
|
private |
Definition at line 115 of file Manifest.cpp.
|
private |
Definition at line 117 of file Manifest.cpp.
Referenced by getSymbolInfo(), and Impl().