From f844e10c2992fa68f2eb9a3636c51c0cea77d2ca Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Keck <Jean-Baptiste.Keck@imag.fr> Date: Fri, 29 Sep 2017 16:29:23 +0200 Subject: [PATCH] Fixed 1D enum array code generation, closes #4 --- hysop/tools/enum.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hysop/tools/enum.py b/hysop/tools/enum.py index c8b16b1a9..ece07b748 100644 --- a/hysop/tools/enum.py +++ b/hysop/tools/enum.py @@ -172,15 +172,19 @@ class EnumFactory(object): return CodegenVariable(name=name,typegen=typegen,ctype=dtype_to_ctype(cls.dtype), value=value,svalue=svalue,**kwds) def __array_variable(cls,name,typegen,vals,**kwds): - from hysop.backend.device.codegen.base.variables import CodegenArray, \ - dtype_to_ctype + from hysop.backend.device.codegen.base.variables import dtype_to_ctype, \ + CodegenVariable, CodegenArray assert vals is not None size = len(vals) value = [getattr(cls,cls.svalue(v)) if isinstance(v, (int,long)) else v for v in vals] svalue = [cls.svalue(v) if isinstance(v, (int,long)) else str(v) for v in vals] - return CodegenArray(name=name,typegen=typegen,ctype=dtype_to_ctype(cls.dtype), - value=value,svalue=svalue,dim=1,**kwds) + if len(vals)==1: + return CodegenVariable(name=name,typegen=typegen,ctype=dtype_to_ctype(cls.dtype), + value=value[0],svalue=svalue[0],**kwds) + else: + return CodegenArray(name=name,typegen=typegen,ctype=dtype_to_ctype(cls.dtype), + value=value,svalue=svalue,dim=1,**kwds) mcls_dic = {'name':name, 'dtype':dtype, -- GitLab