summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsimon2009-08-17 09:35:00 +0000
committersimon2009-08-17 09:35:00 +0000
commit839d659e6b1c25be20bd556aba6386eaceb1245f (patch)
treedb14979c751b0fb88cb194bb78756dcf1347fc98
parentc413c4e2a17838912c95bedc34fdf258390f13b2 (diff)
downloadscilab2c-839d659e6b1c25be20bd556aba6386eaceb1245f.tar.gz
scilab2c-839d659e6b1c25be20bd556aba6386eaceb1245f.tar.bz2
scilab2c-839d659e6b1c25be20bd556aba6386eaceb1245f.zip
Updated FA_REAL to handle the case where there is a %i which has not been handled by other functions ( as in OpColon)
added test for OpColon updated INIT_FillSCI2LibCDirs
-rw-r--r--macros/FunctionAnnotation/FA_REAL.sci8
-rw-r--r--macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci9
-rw-r--r--macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci10
-rw-r--r--tests/unit_tests/test_double_OpColon.sci41
4 files changed, 56 insertions, 12 deletions
diff --git a/macros/FunctionAnnotation/FA_REAL.sci b/macros/FunctionAnnotation/FA_REAL.sci
index 2b030f7e..e55583d7 100644
--- a/macros/FunctionAnnotation/FA_REAL.sci
+++ b/macros/FunctionAnnotation/FA_REAL.sci
@@ -40,7 +40,11 @@ if (SCI2Cisnum(in1))
else
opout = string(outnum);
end
-else
- opout = in2+"0real"+FA_TP_REAL(in2)+"0"+"("+in1+")";
+else
+ if (in1 == "%i")
+ opout = " 0 ";
+ else
+ opout = in2+"0real"+FA_TP_REAL(in2)+"0"+"("+in1+")";
+ end
end
endfunction
diff --git a/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci b/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci
index 238bfc20..b1f8f982 100644
--- a/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci
+++ b/macros/FunctionAnnotation/FA_SZ_FROM_VAL.sci
@@ -1,5 +1,5 @@
-function opout = FA_SZ_FROM_VAL(in1)
-// function opout = FA_SZ_FROM_VAL(in1)
+function opout = FA_SZ_FROM_VAL(in1,in2)
+// function opout = FA_SZ_FROM_VAL(in1,in2)
// -----------------------------------------------------------------
// Return a size according to the floored value of the first argument
//
@@ -11,7 +11,7 @@ function opout = FA_SZ_FROM_VAL(in1)
//
// -----------------------------------------------------------------
-SCI2CNInArgCheck(argn(2),1,1);
+SCI2CNInArgCheck(argn(2),2,2);
if (SCI2Cisnum(in1))
@@ -33,5 +33,4 @@ else
end
-
-endfunction
+endfunction:
diff --git a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
index 0aac9f18..3648265d 100644
--- a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
+++ b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci
@@ -493,8 +493,8 @@ PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
//Was FA_TP_USER
//Cause some trouble if user specify some precision and if input(and also output) is complex.
PrintStringInfo('OUT(1).TP= IN(1).TP',ClassFileName,'file','y');
-PrintStringInfo('OUT(1).SZ(1)= FA_SZ_FROM_VAL(IN(1).VAL)',ClassFileName,'file','y');
-PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(IN(2).VAL)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(1)= FA_SZ_FROM_VAL(IN(1).VAL,IN(1).TP)',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(IN(2).VAL,IN(2).TP)',ClassFileName,'file','y');
// --- Function List Class. ---
ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
@@ -1545,12 +1545,12 @@ PrintStringInfo('NIN= 2',ClassFileName,'file','y');
PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
PrintStringInfo('OUT(1).TP= FA_TP_MIN_REAL(IN(1).TP,IN(2).TP)',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
-PrintStringInfo('OUT(1).SZ(2)= FA_INT(FA_ADD(FA_SUB(FA_REAL(IN(2).VAL,IN(2).TP),FA_REAL(IN(1).VAL,IN(1).TP)),''1''))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(FA_ADD(FA_SUB(FA_REAL(IN(2).VAL,IN(2).TP),FA_REAL(IN(1).VAL,IN(1).TP)),''1''),FA_TP_REAL(IN(2).TP))',ClassFileName,'file','y');
PrintStringInfo('NIN= 3',ClassFileName,'file','y');
PrintStringInfo('NOUT= 1',ClassFileName,'file','y');
PrintStringInfo('OUT(1).TP= FA_TP_MIN_REAL(IN(1).TP,FA_TP_MIN_REAL(IN(2).TP,IN(3).TP))',ClassFileName,'file','y');
PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y');
-PrintStringInfo('OUT(1).SZ(2)= FA_INT(FA_ADD(FA_DIV(FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REAL(IN(1).VAL, IN(3).TP)),FA_REAL(IN(2).VAL,IN(2).TP)),''1''))',ClassFileName,'file','y');
+PrintStringInfo('OUT(1).SZ(2)= FA_SZ_FROM_VAL(FA_ADD(FA_DIV(FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REAL(IN(1).VAL, IN(1).TP)),FA_REAL(IN(2).VAL,IN(2).TP)),''1''),FA_TP_REAL(IN(3).TP))',ClassFileName,'file','y');
// --- Function List Class. ---
ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls);
@@ -1625,7 +1625,7 @@ PrintStringInfo('z0d0z0'+ArgSeparator+'d2',ClassFileName,'file','y');
// --- Annotation Function And Function List Function. ---
-FunctionName = 'OpColon';
+FunctionName = 'OpColon'; // AS : done
PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'both','y');
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun);
INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun);
diff --git a/tests/unit_tests/test_double_OpColon.sci b/tests/unit_tests/test_double_OpColon.sci
new file mode 100644
index 00000000..a7fbe196
--- /dev/null
+++ b/tests/unit_tests/test_double_OpColon.sci
@@ -0,0 +1,41 @@
+function test_double_OpColon()
+
+
+// A = [1 2 3 4 ; 5 6 7 8 ; 9 10 11 12];
+// B = A * %i ;
+d = %i ;
+a = %pi ;
+b = %e ;
+c = [7 8 5 ];
+disp(zeros ( a , %e ));
+
+disp(zeros ( %pi , %e));
+disp(zeros(c));
+disp(zeros ([4 5 6 ; 4 5 6]) );
+
+ disp(0:1:3);
+ disp(1:1);
+ disp(4+53*%i:0);
+//
+
+ disp(2:5);
+ disp(4+3*%i:8+%i);
+//
+
+ disp(1:5:1);
+ disp(%i:%i+1:2);
+//
+
+ disp(2:7:5);
+ disp(4+3*%i:4:8+%i);
+//a =4 + 53 *%i : 0 ;
+endfunction
+//OUT(1).SZ(2)= FA_INT(
+// FA_ADD(
+// FA_DIV(
+// FA_SUB(FA_REAL(IN(3).VAL,IN(3).TP),FA_REAL(IN(1).VAL, IN(3).TP))
+// ,FA_REAL(IN(2).VAL,IN(2).TP)
+// )
+// ,''1''
+// )
+// )