CIRCT 23.0.0git
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Static Protected Member Functions | Protected Attributes | List of all members
esiaccel.codegen.generator.CppGenerator Class Reference
Inheritance diagram for esiaccel.codegen.generator.CppGenerator:
Inheritance graph
[legend]
Collaboration diagram for esiaccel.codegen.generator.CppGenerator:
Collaboration graph
[legend]

Public Member Functions

None __init__ (self, AcceleratorConnection conn)
 
str get_consts_str (self, ModuleInfo module_info)
 
None write_modules (self, Path output_dir, str system_name)
 
None generate (self, Path output_dir, str system_name)
 

Public Attributes

 type_planner
 
 type_emitter
 
- Public Attributes inherited from esiaccel.codegen.generator.Generator
 manifest
 

Static Public Attributes

str language = "C++"
 
- Static Public Attributes inherited from esiaccel.codegen.generator.Generator
Optional language = None
 

Protected Member Functions

Dict[str, Instance_build_module_instance_map (self)
 
List[Tuple[str, str]] _port_using_aliases (self, CppPortKind kind, str alias_prefix, types.BundlePort port)
 
CppPortGroup _scalar_port_group (self, str member_name, types.BundlePort port, AppID appid)
 
CppPortGroup _indexed_ports_group (self, str member_name, str appid_name, List[Tuple[AppID, types.BundlePort]] port_list)
 
CppPortGroup _mixed_struct_group (self, str member_name, str appid_name, List[Tuple[AppID, types.BundlePort]] port_list)
 
List[CppPortGroup_collect_port_groups (self, Dict[AppID, types.BundlePort] ports)
 
None _emit_module_class (self, str name, str system_name, ModuleInfo module_info, List[CppPortGroup] port_groups, TextIO out)
 

Static Protected Member Functions

str _sanitize_id (str name)
 
str _appid_expr (AppID appid)
 

Protected Attributes

 _conn
 

Detailed Description

Generate C++ headers from an ESI manifest.

Definition at line 41 of file generator.py.

Constructor & Destructor Documentation

◆ __init__()

None esiaccel.codegen.generator.CppGenerator.__init__ (   self,
AcceleratorConnection  conn 
)

Member Function Documentation

◆ _appid_expr()

str esiaccel.codegen.generator.CppGenerator._appid_expr ( AppID  appid)
staticprotected
Return `esi::AppID(...)` expression for an AppID.

Definition at line 118 of file generator.py.

Referenced by esiaccel.codegen.generator.CppGenerator._mixed_struct_group(), and esiaccel.codegen.generator.CppGenerator._scalar_port_group().

◆ _build_module_instance_map()

Dict[str, Instance] esiaccel.codegen.generator.CppGenerator._build_module_instance_map (   self)
protected
Walk the live hierarchy and return {module_name: first Instance}.

Definition at line 77 of file generator.py.

References esiaccel.codegen.generator.CppGenerator._conn.

Referenced by esiaccel.codegen.generator.CppGenerator.write_modules().

◆ _collect_port_groups()

List[CppPortGroup] esiaccel.codegen.generator.CppGenerator._collect_port_groups (   self,
Dict[AppID, types.BundlePort ports 
)
protected

◆ _emit_module_class()

None esiaccel.codegen.generator.CppGenerator._emit_module_class (   self,
str  name,
str  system_name,
ModuleInfo  module_info,
List[CppPortGroup port_groups,
TextIO  out 
)
protected
Emit the full module class to `out`.

Definition at line 301 of file generator.py.

References esiaccel.codegen.generator.CppGenerator.get_consts_str().

Referenced by esiaccel.codegen.generator.CppGenerator.write_modules().

◆ _indexed_ports_group()

CppPortGroup esiaccel.codegen.generator.CppGenerator._indexed_ports_group (   self,
str  member_name,
str  appid_name,
List[Tuple[AppID, types.BundlePort]]  port_list 
)
protected
Build a CppPortGroup for a same-name, same-type indexed port array.

Definition at line 155 of file generator.py.

References esiaccel.codegen.generator.CppGenerator._port_using_aliases().

Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().

◆ _mixed_struct_group()

CppPortGroup esiaccel.codegen.generator.CppGenerator._mixed_struct_group (   self,
str  member_name,
str  appid_name,
List[Tuple[AppID, types.BundlePort]]  port_list 
)
protected
Build a CppPortGroup for a same-name, mixed-type indexed port group.

Definition at line 201 of file generator.py.

References esiaccel.codegen.generator.CppGenerator._appid_expr(), and esiaccel.codegen.generator.CppGenerator._port_using_aliases().

Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().

◆ _port_using_aliases()

List[Tuple[str, str]] esiaccel.codegen.generator.CppGenerator._port_using_aliases (   self,
CppPortKind  kind,
str  alias_prefix,
types.BundlePort  port 
)
protected
Return (alias_name, type_id) pairs to emit as `using` declarations at
module-class scope for the typed-port template parameters.

Definition at line 92 of file generator.py.

References esiaccel.codegen.generator.CppGenerator.type_emitter.

Referenced by esiaccel.codegen.generator.CppGenerator._indexed_ports_group(), esiaccel.codegen.generator.CppGenerator._mixed_struct_group(), and esiaccel.codegen.generator.CppGenerator._scalar_port_group().

◆ _sanitize_id()

str esiaccel.codegen.generator.CppGenerator._sanitize_id ( str  name)
staticprotected
Return a C++-safe identifier from an AppID name.

Definition at line 66 of file generator.py.

References isdigit.

Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().

◆ _scalar_port_group()

CppPortGroup esiaccel.codegen.generator.CppGenerator._scalar_port_group (   self,
str  member_name,
types.BundlePort  port,
AppID  appid 
)
protected

◆ generate()

None esiaccel.codegen.generator.CppGenerator.generate (   self,
Path  output_dir,
str  system_name 
)

◆ get_consts_str()

str esiaccel.codegen.generator.CppGenerator.get_consts_str (   self,
ModuleInfo  module_info 
)
Get the C++ code for a constant in a module.

Definition at line 52 of file generator.py.

Referenced by esiaccel.codegen.generator.CppGenerator._emit_module_class().

◆ write_modules()

None esiaccel.codegen.generator.CppGenerator.write_modules (   self,
Path  output_dir,
str  system_name 
)

Member Data Documentation

◆ _conn

esiaccel.codegen.generator.CppGenerator._conn
protected

◆ language

str esiaccel.codegen.generator.CppGenerator.language = "C++"
static

Definition at line 44 of file generator.py.

◆ type_emitter

esiaccel.codegen.generator.CppGenerator.type_emitter

◆ type_planner

esiaccel.codegen.generator.CppGenerator.type_planner

Definition at line 49 of file generator.py.


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