def serialize_run_module_implementation(self, stream, operand_kinds, truth_vectors): self.set_stream(stream) self.add_include(self.SUPPORT_MODULE) self.add_include(self.TYPES_MODULE) self.add_include(self.COMPUTING_MODULE) self.newline() # For each truth vector, generate a run procedure. for i, truth_vector in enumerate(truth_vectors): if i > 0: self.newline() self.add_subprogram_signature( self.get_run_procedure_name(truth_vector), None, [], [], False) self.write('{') self.newline() with self.indent(self.INDENT): call_to_run = ast.Call( ast.VariableUsage(self.ENTRY_POINT_NAME), [ op_kind.actuals[op_truth] for op_kind, op_truth in itertools.izip( operand_kinds, truth_vector) ]) self.handle( ast.Call(ast.VariableUsage(self.ASSERT_PROC_NAME), [ ast.Comparison(ast.RelOp.EQ, call_to_run, ast.LitteralBoolean(truth_vector[-1])) ])) self.write(';') self.newline() self.write('}') self.newline()
def get_operand(self, param): return ast.Comparison(self.operator, ast.VariableUsage(param), self.value)