1# Copyright (c) 1999-2008 Mark D. Hill and David A. Wood 2# Copyright (c) 2009 The Hewlett-Packard Development Company 3# All rights reserved. 4# 5# Redistribution and use in source and binary forms, with or without 6# modification, are permitted provided that the following conditions are 7# met: redistributions of source code must retain the above copyright 8# notice, this list of conditions and the following disclaimer; --- 37 unchanged lines hidden (view full) --- 46 47 def __repr__(self): 48 return "[InPortDecl: %s]" % self.ident 49 50 def generate(self): 51 symtab = self.symtab 52 void_type = symtab.find("void", Type) 53 |
54 machine = symtab.state_machine 55 if machine is None: 56 self.error("InPort declaration not part of a machine.") 57 |
58 code = self.slicc.codeFormatter() 59 queue_type = self.var_expr.generate(code) 60 if not queue_type.isInPort: 61 self.error("The inport queue's type must have the 'inport' " + \ 62 "attribute. Type '%s' does not have this attribute.", 63 queue_type) 64 65 type = self.queue_type.type --- 12 unchanged lines hidden (view full) --- 78 79 # Check for Address 80 type = symtab.find("Address", Type) 81 if type is None: 82 self.error("in_port decls require 'Address' type to be defined") 83 84 param_types.append(type) 85 |
86 if machine.EntryType != None: 87 param_types.append(machine.EntryType) 88 if machine.TBEType != None: 89 param_types.append(machine.TBEType) 90 |
91 # Add the trigger method - FIXME, this is a bit dirty 92 pairs = { "external" : "yes" } 93 func = Func(self.symtab, "trigger", self.location, void_type, 94 param_types, [], "", pairs, None) 95 symtab.newSymbol(func) 96 97 param_types = [] 98 # Check for Event2 --- 28 unchanged lines hidden (view full) --- 127 symtab.newSymbol(func) 128 129 if self.statements is not None: 130 rcode = self.slicc.codeFormatter() 131 rcode.indent() 132 rcode.indent() 133 self.statements.generate(rcode, None) 134 in_port["c_code_in_port"] = str(rcode) |
135 |
136 symtab.popFrame() 137 138 # Add port to state machine |
139 machine.addInPort(in_port) 140 141 # Include max_rank to be used by StateMachine.py 142 in_port["max_port_rank"] = InPortDeclAST.max_port_rank |