systemc-clang 2.0.0
Parsing SystemC constructs
Loading...
Searching...
No Matches
Public Member Functions | Public Attributes | Private Member Functions | List of all members
parselib.transforms.typedef_expansion.TypedefExpansion Class Reference
Inheritance diagram for parselib.transforms.typedef_expansion.TypedefExpansion:
Inheritance graph
[legend]
Collaboration diagram for parselib.transforms.typedef_expansion.TypedefExpansion:
Collaboration graph
[legend]

Public Member Functions

 __init__ (self, types)
 
 hsensvars (self, tree)
 
 modportsiglist (self, tree)
 
 stmt (self, tree)
 
 hprocess (self, tree)
 
 hfunction (self, tree)
 
 hfunctionparams (self, tree)
 
 hmethodcall (self, tree)
 
 vardecl (self, tree)
 
 hfunctionlocalvars (self, tree)
 
 hmodinitblock (self, tree)
 
 portbindinglist (self, tree)
 
 hsenslist (self, tree)
 
 hmodule (self, tree)
 
- Public Member Functions inherited from parselib.transforms.top_down.TopDown
 __default__ (self, t)
 

Public Attributes

 types
 
 expanded
 
 current_module
 

Private Member Functions

 __expand_htype (self, htype)
 
 __expand_typeinfo (self, typeinfo)
 
 __expand_helper (self, portdecl, typeinfo)
 
 __expand_portdecltype (self, tree)
 
 __expand_vardecltype (self, tree)
 
 __expand_sigdecltype (self, tree)
 
 __get_expandable_type_from_htype (self, htype)
 
 __get_expandable_var_from_tree (self, tree)
 
 __append_to_expandable_var_to_tree (self, tree, field_name)
 
 __is_all_none (self, v)
 
 __expand_blkassign (self, tree)
 
 __expanded_type (self, var_name)
 
 __set_expanded (self, var_name, var_type)
 
 __expand_decl_in_tree_children (self, tree, expand_data=None)
 

Detailed Description

Expands block assignment of custom types into primitive types

Definition at line 12 of file typedef_expansion.py.

Constructor & Destructor Documentation

◆ __init__()

parselib.transforms.typedef_expansion.TypedefExpansion.__init__ ( self,
types )

Reimplemented from parselib.transforms.top_down.TopDown.

Definition at line 14 of file typedef_expansion.py.

Member Function Documentation

◆ __append_to_expandable_var_to_tree()

parselib.transforms.typedef_expansion.TypedefExpansion.__append_to_expandable_var_to_tree ( self,
tree,
field_name )
private
append the field_name to the expandable variable in tree

Definition at line 282 of file typedef_expansion.py.

◆ __expand_blkassign()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_blkassign ( self,
tree )
private
detects the expandable variable on lhs and rhs and
expand them with the fields

Definition at line 319 of file typedef_expansion.py.

◆ __expand_decl_in_tree_children()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_decl_in_tree_children ( self,
tree,
expand_data = None )
private

Definition at line 459 of file typedef_expansion.py.

◆ __expand_helper()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_helper ( self,
portdecl,
typeinfo )
private
portdecl is the name:
Tree(outportdecl, [Token(ID, 'dout')])
typeinfo is the real type info:
Tree(htypeinfo, [Tree(htype, [Token(TYPESTR, 'sc_out'), Tree(htype, [Token(TYPESTR, 'fp_t'), 52, 11])])])

Definition at line 71 of file typedef_expansion.py.

◆ __expand_htype()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_htype ( self,
htype )
private
expand non-primitive htype into primitive sub-field type

Definition at line 21 of file typedef_expansion.py.

◆ __expand_portdecltype()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_portdecltype ( self,
tree )
private
The expansion is achieved by first traverse the type subtree to detect the expandable type,
then, any parent path is duplicated
An example of tree:
Tree(portdecltype, [Tree(inportdecl, [Token(ID, 'clk')]), Tree(htypeinfo,
    [Tree(htype, [Token(TYPESTR, 'sc_in'), Tree(htype, [Token(TYPESTR, '_Bool')])])])])

Definition at line 90 of file typedef_expansion.py.

◆ __expand_sigdecltype()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_sigdecltype ( self,
tree )
private

Definition at line 138 of file typedef_expansion.py.

◆ __expand_typeinfo()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_typeinfo ( self,
typeinfo )
private

Definition at line 64 of file typedef_expansion.py.

◆ __expand_vardecltype()

parselib.transforms.typedef_expansion.TypedefExpansion.__expand_vardecltype ( self,
tree )
private

Definition at line 102 of file typedef_expansion.py.

◆ __expanded_type()

parselib.transforms.typedef_expansion.TypedefExpansion.__expanded_type ( self,
var_name )
private

Definition at line 391 of file typedef_expansion.py.

◆ __get_expandable_type_from_htype()

parselib.transforms.typedef_expansion.TypedefExpansion.__get_expandable_type_from_htype ( self,
htype )
private

Definition at line 234 of file typedef_expansion.py.

◆ __get_expandable_var_from_tree()

parselib.transforms.typedef_expansion.TypedefExpansion.__get_expandable_var_from_tree ( self,
tree )
private

Definition at line 241 of file typedef_expansion.py.

◆ __is_all_none()

parselib.transforms.typedef_expansion.TypedefExpansion.__is_all_none ( self,
v )
private
checks if v is None or is a (nested) list containing only none

Definition at line 310 of file typedef_expansion.py.

◆ __set_expanded()

parselib.transforms.typedef_expansion.TypedefExpansion.__set_expanded ( self,
var_name,
var_type )
private

Definition at line 397 of file typedef_expansion.py.

◆ hfunction()

parselib.transforms.typedef_expansion.TypedefExpansion.hfunction ( self,
tree )

Definition at line 409 of file typedef_expansion.py.

◆ hfunctionlocalvars()

parselib.transforms.typedef_expansion.TypedefExpansion.hfunctionlocalvars ( self,
tree )

Definition at line 454 of file typedef_expansion.py.

◆ hfunctionparams()

parselib.transforms.typedef_expansion.TypedefExpansion.hfunctionparams ( self,
tree )

Definition at line 415 of file typedef_expansion.py.

◆ hmethodcall()

parselib.transforms.typedef_expansion.TypedefExpansion.hmethodcall ( self,
tree )

Definition at line 422 of file typedef_expansion.py.

◆ hmodinitblock()

parselib.transforms.typedef_expansion.TypedefExpansion.hmodinitblock ( self,
tree )
expands the hmodinitblock
hmodinitblock includes a initialization block and portdecl block, both of which can include
aggregated types

Definition at line 487 of file typedef_expansion.py.

◆ hmodule()

parselib.transforms.typedef_expansion.TypedefExpansion.hmodule ( self,
tree )
add another scope for a module

Definition at line 565 of file typedef_expansion.py.

◆ hprocess()

parselib.transforms.typedef_expansion.TypedefExpansion.hprocess ( self,
tree )
add another scope for a process

Definition at line 402 of file typedef_expansion.py.

◆ hsenslist()

parselib.transforms.typedef_expansion.TypedefExpansion.hsenslist ( self,
tree )

Definition at line 532 of file typedef_expansion.py.

◆ hsensvars()

parselib.transforms.typedef_expansion.TypedefExpansion.hsensvars ( self,
tree )
expand identifiers in sensitivity list with fields

Definition at line 141 of file typedef_expansion.py.

◆ modportsiglist()

parselib.transforms.typedef_expansion.TypedefExpansion.modportsiglist ( self,
tree )

Definition at line 161 of file typedef_expansion.py.

◆ portbindinglist()

parselib.transforms.typedef_expansion.TypedefExpansion.portbindinglist ( self,
tree )

Definition at line 496 of file typedef_expansion.py.

◆ stmt()

parselib.transforms.typedef_expansion.TypedefExpansion.stmt ( self,
tree )

Definition at line 378 of file typedef_expansion.py.

◆ vardecl()

parselib.transforms.typedef_expansion.TypedefExpansion.vardecl ( self,
tree )
for variable expansion in statement

Definition at line 448 of file typedef_expansion.py.

Member Data Documentation

◆ current_module

parselib.transforms.typedef_expansion.TypedefExpansion.current_module

Definition at line 19 of file typedef_expansion.py.

◆ expanded

parselib.transforms.typedef_expansion.TypedefExpansion.expanded

Definition at line 18 of file typedef_expansion.py.

◆ types

parselib.transforms.typedef_expansion.TypedefExpansion.types

Definition at line 16 of file typedef_expansion.py.


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