コード例 #1
0
ファイル: qit.py プロジェクト: msurkovsky/qit
 def run(self, obj, args=None):
     obj = obj.get_expression()
     variables = obj.get_variables()
     validate_variables(variables)
     if args is None:
         args = {}
     return self.env.run_collect(obj,
                                 assign_values(variables, args))
コード例 #2
0
ファイル: builder.py プロジェクト: spirali/qit
    def build_collect(self, exprs, args):
        variables = self.get_used_variables(exprs, args)
        validate_variables(variables)
        deps = { v: args[v].get_variables() for v in variables }
        variables = sort_by_deps(deps)

        write_functions = [ expr.type.write_function for expr in exprs ]
        self.write_header()
        for v in variables:
            args[v].declare_all(self)
        for expr in exprs:
            expr.declare_all(self)
        for f in write_functions:
            f.declare_all(self)
        self.main_begin()
        self.init_fifo()
        self.init_variables(variables, args)
        for expr, f in zip(exprs, write_functions):
            self.writer.line(
                 "{}(output, {});", f.build(self), expr.build(self))
        self.writer.line("fclose(output);")
        self.main_end()