CIRCT 20.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Private Member Functions | Private Attributes | Friends | List of all members
Manifest::Impl Class Reference
Collaboration diagram for Manifest::Impl:
Collaboration graph
[legend]

Public Member Functions

 Impl (Context &ctxt, const std::string &jsonManifest)
 
auto at (const std::string &key) const
 
std::optional< ModuleInfogetModInfo (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 ModuleInfosymbolInfoCache
 

Friends

class ::esi::Manifest
 

Detailed Description

Definition at line 31 of file Manifest.cpp.

Constructor & Destructor Documentation

◆ Impl()

Manifest::Impl::Impl ( Context &  ctxt,
const std::string &  jsonManifest 
)

Member Function Documentation

◆ at()

auto Manifest::Impl::at ( const std::string &  key) const
inline

Definition at line 37 of file Manifest.cpp.

References manifestJson.

◆ buildAccelerator()

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().

◆ createEngine()

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().

◆ getAny()

std::any Manifest::Impl::getAny ( const nlohmann::json &  value) const
private

Convert the json value to a 'std::any', which can be exposed outside of this file.

Definition at line 155 of file Manifest.cpp.

References getAny(), getType(), and parseID().

Referenced by getAny().

◆ getBundlePorts()

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().

◆ getChildInstance()

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().

◆ getChildInstances()

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().

◆ getModInfo()

std::optional< ModuleInfo > Manifest::Impl::getModInfo ( const nlohmann::json &  json) const

Definition at line 307 of file Manifest.cpp.

References getModInfo().

Referenced by getModInfo().

◆ getService()

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().

◆ getServices()

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().

◆ getSymbolInfo()

const std::map< std::string, const ModuleInfo > & Manifest::Impl::getSymbolInfo ( ) const
inline

Definition at line 98 of file Manifest.cpp.

References symbolInfoCache.

◆ getType()

std::optional< const Type * > Manifest::Impl::getType ( Type::ID  id) const
inlineprivate

Definition at line 106 of file Manifest.cpp.

References ctxt.

Referenced by getAny().

◆ getTypeTable()

const std::vector< const Type * > & Manifest::Impl::getTypeTable ( ) const
inline

Get the ordered list of types from the manifest.

Definition at line 89 of file Manifest.cpp.

References _typeTable.

◆ parseModuleConsts()

void Manifest::Impl::parseModuleConsts ( ModuleInfo info,
const nlohmann::json &  mod 
) const
private

Definition at line 235 of file Manifest.cpp.

References parseModuleConsts().

Referenced by Impl(), and parseModuleConsts().

◆ parseModuleMetadata()

void Manifest::Impl::parseModuleMetadata ( ModuleInfo info,
const nlohmann::json &  mod 
) const
private

Definition at line 214 of file Manifest.cpp.

References parseModuleMetadata().

Referenced by Impl(), and parseModuleMetadata().

◆ parseType()

const Type * Manifest::Impl::parseType ( const nlohmann::json &  typeJson)

Definition at line 617 of file Manifest.cpp.

References parseType().

Referenced by parseType().

◆ populateTypes()

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().

◆ scanServiceDecls()

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().

Friends And Related Symbol Documentation

◆ ::esi::Manifest

friend class ::esi::Manifest
friend

Definition at line 32 of file Manifest.cpp.

Member Data Documentation

◆ _typeTable

std::vector<const Type *> Manifest::Impl::_typeTable
private

Definition at line 104 of file Manifest.cpp.

Referenced by getTypeTable().

◆ ctxt

Context& Manifest::Impl::ctxt
private

Definition at line 103 of file Manifest.cpp.

Referenced by getType().

◆ manifestJson

nlohmann::json Manifest::Impl::manifestJson
private

Definition at line 115 of file Manifest.cpp.

Referenced by at(), and Impl().

◆ symbolInfoCache

std::map<std::string, const ModuleInfo> Manifest::Impl::symbolInfoCache
private

Definition at line 117 of file Manifest.cpp.

Referenced by getSymbolInfo(), and Impl().


The documentation for this class was generated from the following file: