PeekStatementAST.py (6863:21fbf0412e0d) | PeekStatementAST.py (7007:79413d1ec307) |
---|---|
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; --- 45 unchanged lines hidden (view full) --- 54 # Check the queue type 55 self.queue_name.assertType("InPort") 56 57 # Declare the new "in_msg_ptr" variable 58 mtid = msg_type.ident 59 qcode = self.queue_name.var.code 60 code(''' 61{ | 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; --- 45 unchanged lines hidden (view full) --- 54 # Check the queue type 55 self.queue_name.assertType("InPort") 56 57 # Declare the new "in_msg_ptr" variable 58 mtid = msg_type.ident 59 qcode = self.queue_name.var.code 60 code(''' 61{ |
62 // Declare message |
|
62 const $mtid* in_msg_ptr; 63 in_msg_ptr = dynamic_cast<const $mtid *>(($qcode).${{self.method}}()); | 63 const $mtid* in_msg_ptr; 64 in_msg_ptr = dynamic_cast<const $mtid *>(($qcode).${{self.method}}()); |
64 assert(in_msg_ptr != NULL); | 65 assert(in_msg_ptr != NULL); // Check the cast result |
65''') | 66''') |
67 |
|
66 if self.pairs.has_key("block_on"): 67 address_field = self.pairs['block_on'] 68 code(''' 69 if ( (m_is_blocking == true) && 70 (m_block_map.count(in_msg_ptr->m_$address_field) == 1) ) { 71 if (m_block_map[in_msg_ptr->m_$address_field] != &$qcode) { 72 $qcode.delayHead(); 73 continue; 74 } 75 } 76 ''') 77 78 # The other statements 79 self.statements.generate(code, return_type) 80 self.symtab.popFrame() 81 code("}") 82 83 def findResources(self, resources): 84 self.statements.findResources(resources) | 68 if self.pairs.has_key("block_on"): 69 address_field = self.pairs['block_on'] 70 code(''' 71 if ( (m_is_blocking == true) && 72 (m_block_map.count(in_msg_ptr->m_$address_field) == 1) ) { 73 if (m_block_map[in_msg_ptr->m_$address_field] != &$qcode) { 74 $qcode.delayHead(); 75 continue; 76 } 77 } 78 ''') 79 80 # The other statements 81 self.statements.generate(code, return_type) 82 self.symtab.popFrame() 83 code("}") 84 85 def findResources(self, resources): 86 self.statements.findResources(resources) |