From 33755eb085a3ca8154cf83773b23fbb8aac4ba3e Mon Sep 17 00:00:00 2001 From: ClĂ©ment DAVID Date: Thu, 22 Jun 2017 20:21:34 +0000 Subject: Extended support for file related functions, try/catch Fix ",d0" output argument generation --- macros/ASTManagement/%trycatch_string.sci | 17 +- macros/FunctionList/FL_ExistCFunction.sci | 11 + macros/FunctionList/FL_InOutArgs2CFunNames.sci | 24 +-- .../ToolInitialization/INIT_FillSCI2LibCDirs.sci | 223 ++++++++++++++++++++- 4 files changed, 249 insertions(+), 26 deletions(-) (limited to 'macros') diff --git a/macros/ASTManagement/%trycatch_string.sci b/macros/ASTManagement/%trycatch_string.sci index 54441f75..e7c4f24d 100644 --- a/macros/ASTManagement/%trycatch_string.sci +++ b/macros/ASTManagement/%trycatch_string.sci @@ -4,11 +4,14 @@ function txt=%trycatch_string(p) //fields: // trystat : list('EOL') (the instructions list) // catchstat : list('EOL') (the instructions list on error) - - txt=['Statements' - ' '+objectlist2string(p.trystat) - 'CatchStatements' - ' '+objectlist2string(p.catchstat) - 'EndProgram' - ] + +// FIXME: catch statement should be handled : how ? +// txt=['Statements' +// ' '+objectlist2string(p.trystat) +// 'CatchStatements' +// ' '+objectlist2string(p.catchstat) +// 'EndProgram' +// ] + + txt = objectlist2string(p.trystat); endfunction diff --git a/macros/FunctionList/FL_ExistCFunction.sci b/macros/FunctionList/FL_ExistCFunction.sci index 5b63ec5b..dbb9121f 100644 --- a/macros/FunctionList/FL_ExistCFunction.sci +++ b/macros/FunctionList/FL_ExistCFunction.sci @@ -99,7 +99,18 @@ end if (flagexist == %F) // #RNU_RES_B + AvailableDat = SCI2CAvailableCDat; + PrintStringInfo(' C Function Name not found in the ""Available"" , ""Converted"" and ""ToBeConverted"" function lists.',ReportFileName,'file','y'); + load(AvailableDat,'Available'); + PrintStringInfo('Available: ' + strcat(Available(grep(Available, ASTFunName)), ' '),ReportFileName,'file','y'); + clear Available + load(ConvertedDat,'Converted'); + PrintStringInfo('Converted: ' + strcat(Converted(grep(Converted, ASTFunName)), ' '),ReportFileName,'file','y'); + clear Converted + load(ToBeConvertedDat,'ToBeConverted'); + PrintStringInfo('ToBeConverted: ' + ToBeConverted.SCIFunctionName + ' ' + ToBeConverted.CFunctionName,ReportFileName,'file','y'); + clear ToBeConverted // #RNU_RES_E end diff --git a/macros/FunctionList/FL_InOutArgs2CFunNames.sci b/macros/FunctionList/FL_InOutArgs2CFunNames.sci index e559f385..782a06d4 100644 --- a/macros/FunctionList/FL_InOutArgs2CFunNames.sci +++ b/macros/FunctionList/FL_InOutArgs2CFunNames.sci @@ -27,25 +27,13 @@ function FunNameCFuncList = FL_InOutArgs2CFunNames(FunctionName,CommaSepCFuncLis // ------------------------------ SCI2CNInArgCheck(argn(2),3,3); - -FunNameCFuncList = ''; SepChar = ','; -for cntelem = 1:CFuncListNElem - tmptokens = tokens(CommaSepCFuncList(cntelem),SepChar); - if (size(tmptokens,1) == 0) - FunNameCFuncList(cntelem) = FunctionName; - elseif (size(tmptokens,1) == 1) - if part(tmptokens,1:1) == ',' - FunNameCFuncList(cntelem) = FunctionName+tmptokens(2); - else - FunNameCFuncList(cntelem) = tmptokens(1)+FunctionName; - end - elseif (size(tmptokens,1) == 2) - FunNameCFuncList(cntelem) = tmptokens(1)+FunctionName+tmptokens(2); - else - disp('Incorrect format for the function list class.'); - error(9999, 'Check the following function list class item: ""'+CommaSepCFuncList(cntelem)+'"".'); - end +scanned = csvTextScan(CommaSepCFuncList, ",", [], "string"); +if size(scanned, 'c') <> 2 then + disp('Incorrect format for the function list class.'); + error(9999, 'Check the following function list class item: ""'+strcat(CommaSepCFuncList, " ")+'"".'); end +FunNameCFuncList = scanned(:,1)+FunctionName+scanned(:,2); + endfunction diff --git a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci index 30fa92bd..7ae2d413 100644 --- a/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci +++ b/macros/ToolInitialization/INIT_FillSCI2LibCDirs.sci @@ -218,6 +218,92 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file', INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + +// --------------------- +// --- Class String. --- +// --------------------- +ClassName = 'String'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); +PrintStringInfo('NIN= 1',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''g''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo('s0'+ArgSeparator+'g0',ClassFileName,'file','y'); +PrintStringInfo('d0'+ArgSeparator+'g0',ClassFileName,'file','y'); +PrintStringInfo('c0'+ArgSeparator+'g0',ClassFileName,'file','y'); +PrintStringInfo('z0'+ArgSeparator+'g0',ClassFileName,'file','y'); +PrintStringInfo('s2'+ArgSeparator+'g2',ClassFileName,'file','y'); +PrintStringInfo('d2'+ArgSeparator+'g2',ClassFileName,'file','y'); +PrintStringInfo('c2'+ArgSeparator+'g2',ClassFileName,'file','y'); +PrintStringInfo('z2'+ArgSeparator+'g2',ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'string'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + + +// --------------------- +// --- Class String. --- +// --------------------- +ClassName = 'Strtod'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); +PrintStringInfo('NIN= 1',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1 ',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo('g0'+ArgSeparator+'d0',ClassFileName,'file','y'); +PrintStringInfo('g2'+ArgSeparator+'d2',ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'strtod'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + + +// --------------------- +// --- Class String. --- +// --------------------- +ClassName = 'Strcmp'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); +PrintStringInfo('NIN= 2',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= IN(1).SZ(1)',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= IN(1).SZ(2)',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo('g0g0'+ArgSeparator+'f0',ClassFileName,'file','y'); +PrintStringInfo('g1g1'+ArgSeparator+'f1',ClassFileName,'file','y'); +PrintStringInfo('g2g2'+ArgSeparator+'f2',ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'strcmp'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + + // ------------------ // --- Class Sin. --- // ------------------ @@ -249,6 +335,16 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file', INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); +FunctionName = 'sind'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + +FunctionName = 'asind'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + FunctionName = 'sinh'; //BJ : Done AS : Float_Done PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); @@ -264,6 +360,16 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file', INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); +FunctionName = 'cosd'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + +FunctionName = 'acosd'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + FunctionName = 'cosh'; //BJ : Done AS : Float_Done PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); @@ -274,6 +380,16 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file', INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); +FunctionName = 'tand'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + +FunctionName = 'atand'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + FunctionName = 'tanh'; //BJ : Done AS : Float_Done PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); @@ -2228,6 +2344,7 @@ FunctionName = 'mput'; PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); +PrintStringInfo('d0g2f0'+ArgSeparator+'i0',ClassFileName,'file','y'); // ------------------- // --- Class Mget. --- @@ -2316,6 +2433,110 @@ PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file', INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); +// --------------------- +// --- Class Save. --- +// --------------------- +ClassName = 'Save'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); + +PrintStringInfo('NIN= 2',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''f''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo('g2g2'+ArgSeparator+'f0',ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'save'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + + +// --------------------- +// --- Class Load. --- +// --------------------- +ClassName = 'Load'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); +PrintStringInfo('NIN= 1',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo('g2'+ArgSeparator+'d0',ClassFileName,'file','y'); +PrintStringInfo('g2'+ArgSeparator+'d1',ClassFileName,'file','y'); +PrintStringInfo('g2'+ArgSeparator+'d2',ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'load'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + + +// --------------------- +// --- Class Deletefile. --- +// --------------------- +ClassName = 'Deletefile'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); +PrintStringInfo('NIN= 1',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo('g2'+ArgSeparator+'d0',ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'deletefile'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + + +// --------------------- +// --- Class Timer. --- +// --------------------- +ClassName = 'Timer'; + +// --- Class Annotation. --- +PrintStringInfo(' Adding Class: '+ClassName+'.',GeneralReport,'file','y'); +ClassFileName = fullfile(SCI2CLibCAnnClsDir,ClassName+ExtensionCAnnCls); +PrintStringInfo('NIN= 0',ClassFileName,'file','y'); +PrintStringInfo('NOUT= 1',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).TP= ''d''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(1)= ''1''',ClassFileName,'file','y'); +PrintStringInfo('OUT(1).SZ(2)= ''1''',ClassFileName,'file','y'); + +// --- Function List Class. --- +ClassFileName = fullfile(SCI2CLibCFLClsDir,ClassName+ExtensionCFuncListCls); +PrintStringInfo(ArgSeparator+"s0",ClassFileName,'file','y'); +PrintStringInfo(ArgSeparator+"d0",ClassFileName,'file','y'); +PrintStringInfo("s0"+ArgSeparator+"d0",ClassFileName,'file','y'); + +// --- Annotation Function And Function List Function. --- +FunctionName = 'timer'; +PrintStringInfo(' Adding Function: '+FunctionName+'.',GeneralReport,'file','y'); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCAnnFunDir,ClassName,GeneralReport,ExtensionCAnnFun); +INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,ExtensionCFuncListFun); + // --------------------- // --- Class Convol. --- // --------------------- @@ -3536,7 +3757,7 @@ INIT_GenAnnFLFunctions(FunctionName,SCI2CLibCFLFunDir,ClassName,GeneralReport,Ex // 9) CxC->{C,C} // 10) RxRxR->{R,R} // 11) RxCxC->{C,C} - // and so on ….. + // and so on ….. // //////////////////////////////// -- cgit