def gentest_set(t): """Returns the test snippet for a set of type t.""" t = ts.canon(t) return _testset.format(*[repr(i) for i in testvals[t]], clsname=ts.cython_classname(t)[1], fncname=ts.cython_functionname(t)[1], stlcontainers=ts.STLCONTAINERS)
def genpxd_vector(t): """Returns the pxd snippet for a vector of type t.""" t = ts.canon(t) kw = dict(clsname=ts.cython_classname(t)[1], humname=ts.humanname(t)[1], ctype=ts.cython_ctype(t), pytype=ts.cython_pytype(t), fncname=ts.cython_functionname(t)[1], cytype=ts.cython_cytype(t),) return _pxdvector.format(**kw)
def gentest_vector(t): """Returns the test snippet for a set of type t.""" t = ts.canon(t) if ('vector', t, 0) in testvals: s = _testvector.format(*[repr(i) for i in testvals['vector', t, 0]], clsname=ts.cython_classname(t)[1], fncname=ts.cython_functionname(t)[1], stlcontainers=ts.STLCONTAINERS) else: s = "" return s
def gentest_map(t, u): """Returns the test snippet for a map of type t.""" t = ts.canon(t) u = ts.canon(u) if t not in testvals or u not in testvals: return "" ulowt = u ulowu = u while ulowu[-1] == 0: ulowt, ulowu = ulowu[-3:-1] a = '_array' if ulowt == 'vector' else '' a += '_almost' if ulowu not in ['str', 'char'] else '' if a != '' and "NPY_" not in ts.cython_nptype(ulowu): return "" return _testmap.format(*[repr(i) for i in testvals[t] + testvals[u][::-1]], tclsname=ts.cython_classname(t)[1], uclsname=ts.cython_classname(u)[1], tfncname=ts.cython_functionname(t)[1], ufncname=ts.cython_functionname(u)[1], array=a, stlcontainers=ts.STLCONTAINERS)
def genpyx_vector(t): """Returns the pyx snippet for a vector of type t.""" t = ts.canon(t) kw = dict(clsname=ts.cython_classname(t)[1], humname=ts.humanname(t)[1], fncname=ts.cython_functionname(t)[1], ctype=ts.cython_ctype(t), pytype=ts.cython_pytype(t), cytype=ts.cython_cytype(t), stlcontainers=ts.STLCONTAINERS, extra_types=ts.EXTRA_TYPES) t0 = t while not isinstance(t0, basestring): t0 = t[0] fpt = ts.from_pytypes[t0] kw['isinst'] = " or ".join(["isinstance(value, {0})".format(x) for x in fpt]) c2pykeys = ['c2pydecl', 'c2pybody', 'c2pyrtn'] c2py = ts.cython_c2py("deref(<{0} *> data)".format(kw['ctype']), t, cached=False, proxy_name="data_proxy") kw.update([(k, indentstr(v or '')) for k, v in zip(c2pykeys, c2py)]) cself2pykeys = ['cself2pydecl', 'cself2pybody', 'cself2pyrtn'] cself2py = ts.cython_c2py("(cself.obval)", t, cached=False, proxy_name="val_proxy") kw.update([(k, indentstr(v or '')) for k, v in zip(cself2pykeys, cself2py)]) py2ckeys = ['py2cdecl', 'py2cbody', 'py2crtn'] py2c = ts.cython_py2c("value", t) kw.update([(k, indentstr(v or '')) for k, v in zip(py2ckeys, py2c)]) return _pyxvector.format(**kw)