提交 84935fcf authored 作者: Hengjean's avatar Hengjean

Added chck_input to c_declare

上级 991c794d
......@@ -308,10 +308,15 @@ def get_nothing(r, name, sub):
def get_c_declare(r, name, sub):
"""Wrapper around c_declare that declares py_name"""
if r.owner:
c_declare = r.type.c_declare(name, sub,
getattr(r.owner.op, 'check_input', True))
else:
c_declare = r.type.c_declare(name, sub, True)
pre = """
PyObject* py_%(name)s;
""" % locals()
return pre + r.type.c_declare(name, sub)
return pre + c_declare
def get_c_init(r, name, sub):
......
......@@ -44,7 +44,7 @@ class CLinkerType(CLinkerObject):
"""
raise MethodNotDefined("c_literal", type(self), self.__class__.__name__)
def c_declare(self, name, sub):
def c_declare(self, name, sub, check_input=True):
"""Required: Return c code to declare variables that will be
instantiated by `c_extract`.
......@@ -434,7 +434,7 @@ class Generic(SingletonType):
def is_valid_value(self, a):
return True
def c_declare(self, name, sub):
def c_declare(self, name, sub, check_input=True):
return """
PyObject* %(name)s;
""" % locals()
......
......@@ -274,7 +274,7 @@ class CudaNdarrayType(Type):
return str(self)
#"CudaNdarrayType{%s, %s}" % (str(self.dtype), str(self.broadcastable))
def c_declare(self, name, sub):
def c_declare(self, name, sub, check_input=True):
return """ CudaNdarray * %(name)s;""" % locals()
def c_init(self, name, sub):
......
......@@ -155,7 +155,7 @@ class GpuArrayType(Type):
else:
return numpy.dtype(self.dtype).itemsize
def c_declare(self, name, sub):
def c_declare(self, name, sub, check_input=True):
return """
PyGpuArrayObject *%(name)s;
""" % locals()
......
......@@ -254,7 +254,7 @@ class Scalar(Type):
raise NotImplementedError("No literal for complex values.")
return str(data)
def c_declare(self, name, sub):
def c_declare(self, name, sub, check_input=True):
return """
%(dtype)s %(name)s;
typedef %(dtype)s %(name)s_dtype; // Deprecated use dtype_%(name)s instead.
......
......@@ -232,7 +232,7 @@ class T_extending(unittest.TestCase):
div = BinaryDoubleOp(name = 'div',
fn = lambda x, y: x / y)
def c_declare(name, sub):
def c_declare(name, sub, check_input=True):
return """
double %(name)s;
""" % dict(name = name)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论