systemc-clang 2.0.0
Parsing SystemC constructs
Loading...
Searching...
No Matches
parselib.transforms.typedef_expansion.TypedefExpansion Class Reference
Inheritance diagram for parselib.transforms.typedef_expansion.TypedefExpansion:
Collaboration diagram for parselib.transforms.typedef_expansion.TypedefExpansion:

Public Types

typedef # detect the first type that is in the typedef list types = node.children[0]
 

Public Member Functions

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

Public Attributes

# this is the only type that gets expanded types = types
 
list expanded = [dict()]
 
 ctx = ContextManager()
 
int types = 1
 
str types = 'sigdecltype':
 
bool is_in_initblock = True
 
list is_in_initblock = []
 

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)
 
 __check_stmt_portbinding (self, stmt)
 

Detailed Description

Expands block assignment of custom types into primitive types

Definition at line 12 of file typedef_expansion.py.

Member Typedef Documentation

◆ types

detect the first type that is in the typedef list parselib.transforms.typedef_expansion.TypedefExpansion.types = node.children[0]

Definition at line 212 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 316 of file typedef_expansion.py.

◆ __check_stmt_portbinding()

parselib.transforms.typedef_expansion.TypedefExpansion.__check_stmt_portbinding ( self,
stmt )
private

Definition at line 585 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 353 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 488 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 415 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 268 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 275 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 344 of file typedef_expansion.py.

◆ __set_expanded()

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

Definition at line 421 of file typedef_expansion.py.

◆ forbody()

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

Definition at line 571 of file typedef_expansion.py.

◆ hfunction()

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

Definition at line 438 of file typedef_expansion.py.

◆ hfunctionlocalvars()

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

Definition at line 483 of file typedef_expansion.py.

◆ hfunctionparams()

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

Definition at line 444 of file typedef_expansion.py.

◆ hmethodcall()

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

Definition at line 451 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 516 of file typedef_expansion.py.

◆ hmodule()

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

Definition at line 745 of file typedef_expansion.py.

◆ hnamedsensvar()

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

Definition at line 161 of file typedef_expansion.py.

◆ hprocess()

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

Definition at line 426 of file typedef_expansion.py.

◆ hsenslist()

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

Definition at line 712 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 191 of file typedef_expansion.py.

◆ portbinding()

parselib.transforms.typedef_expansion.TypedefExpansion.portbinding ( self,
binding )

Definition at line 626 of file typedef_expansion.py.

◆ portbindinglist()

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

Definition at line 673 of file typedef_expansion.py.

◆ stmt()

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

Definition at line 592 of file typedef_expansion.py.

◆ stmts()

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

Definition at line 546 of file typedef_expansion.py.

◆ vardecl()

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

Definition at line 477 of file typedef_expansion.py.

Member Data Documentation

◆ ctx

parselib.transforms.typedef_expansion.TypedefExpansion.ctx = ContextManager()

Definition at line 19 of file typedef_expansion.py.

◆ expanded

parselib.transforms.typedef_expansion.TypedefExpansion.expanded = [dict()]

Definition at line 18 of file typedef_expansion.py.

◆ is_in_initblock [1/2]

bool parselib.transforms.typedef_expansion.TypedefExpansion.is_in_initblock = True

Definition at line 522 of file typedef_expansion.py.

◆ is_in_initblock [2/2]

list parselib.transforms.typedef_expansion.TypedefExpansion.is_in_initblock = []

Definition at line 573 of file typedef_expansion.py.

◆ types [1/3]

Definition at line 16 of file typedef_expansion.py.

◆ types [2/3]

◆ types [3/3]


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