Source code for ffc.uflacs.backends.ufc.utils

# -*- coding: utf-8 -*-


# TODO: Move these to uflacs.language utils?


[docs]def generate_return_new(L, classname, factory): if factory: return L.Return(L.Call("create_" + classname)) else: return L.Return(L.New(classname))
[docs]def generate_return_new_switch(L, i, classnames, args=None, factory=False): if factory: def create(classname): return L.New(classname) else: def create(classname): return L.Call("create_" + classname) if classnames: cases = [] if args is None: args = list(range(len(classnames))) for j, classname in zip(args, classnames): if classname: cases.append((j, L.Return(create(classname)))) code = [L.Switch(i, cases, autobreak=False, autoscope=False)] else: code = [] code.append(L.Return(L.Null())) return L.StatementList(code)