Allow "let" blocks to add code to the output files.

--HG--
extra : convert_revision : 0ffddb2b40dccbf2a3790464c843cfc1b43eaa02
This commit is contained in:
Gabe Black 2007-03-29 00:47:46 -07:00
parent 55614caecc
commit 0d5f6167ff

View file

@ -311,12 +311,19 @@ def p_output_exec(t):
def p_global_let(t):
'global_let : LET CODELIT SEMI'
updateExportContext()
exportContext["header_output"] = ''
exportContext["decoder_output"] = ''
exportContext["exec_output"] = ''
exportContext["decode_block"] = ''
try:
exec fixPythonIndentation(t[2]) in exportContext
except Exception, exc:
error(t.lineno(1),
'error: %s in global let block "%s".' % (exc, t[2]))
t[0] = GenCode() # contributes nothing to the output C++ file
t[0] = GenCode(header_output = exportContext["header_output"],
decoder_output = exportContext["decoder_output"],
exec_output = exportContext["exec_output"],
decode_block = exportContext["decode_block"])
# Define the mapping from operand type extensions to C++ types and bit
# widths (stored in operandTypeMap).