1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
function ResizeApproach = FA_GetResizeApproach(scifilename,ReportFileName)
// function ResizeApproach = FA_GetResizeApproach(scifilename,ReportFileName)
// -----------------------------------------------------------------
// Extracts the resize approach from the file .sci passed in input.
// The following annotation will be searched in the scilab code:
// //SCI2C: RESIZE_APPROACH= NO_RESIZE
// //SCI2C: RESIZE_APPROACH= RESIZE_ALL
// //SCI2C: RESIZE_APPROACH= REALLOC_ALL_RESIZE_ALL
// //SCI2C: RESIZE_APPROACH= RESIZE_TEMP
// //SCI2C: RESIZE_APPROACH= RESIZE_LOCAL
// //SCI2C: RESIZE_APPROACH= RESIZE_GLOBAL
// If the annotation is missing the default NO_RESIZE approach will be
// implicitly used.
//
// Input data:
// ---
//
// Output data:
// ResizeApproach: string which specifies the resize approach
// used in the translation of scifilename.
//
// Status:
// 12-Jul-2008 -- Raffaele Nutricato: Author.
//
// Copyright 2008 Raffaele Nutricato & Alberto Morea.
// Contact: raffaele.nutricato@tiscali.it
// -----------------------------------------------------------------
// ------------------------------
// --- Check input arguments. ---
// ------------------------------
SCI2CNInArgCheck(argn(2),2,2);
// -----------------------
// --- Initialization. ---
// -----------------------
ResizeApproach = 'NO_RESIZE';
annotationstring = '//SCI2C: RESIZE_APPROACH='
PrintStringInfo('***Get resize approach from: '+scifilename,ReportFileName,'file','y'); // #RNUREM_ME
// ---------------------------
// --- End Initialization. ---
// ---------------------------
// --- Open the .sci file (read only). ---
scifid = SCI2COpenFileRead(scifilename);
// --- Loop over the lines of the input file. ---
// Position file pointer to the desired NInArg/NOutArg section,
// and read the NOutArg annotation.
foundannotation = 0;
line_position = 0;
while ((meof(scifid) == 0) & (foundannotation == 0))
check_string = stripblanks(mgetl(scifid,1));
line_position = line_position + 1;
if (~isempty(check_string))
if (SCI2Cstrncmps1size(annotationstring,check_string))
tmpresize = stripblanks(part(check_string,length(annotationstring)+1:length(check_string)));
// #RNU_RES_B
PrintStringInfo(' Line '+string(line_position)+...
' - Found annotation for resize approach'+' ""'+check_string+' ""',...
ReportFileName,'file','y');
// #RNU_RES_E
foundannotation = 1;
end
end
end
if (foundannotation == 0)
// #RNU_RES_B
PrintStringInfo('Annotation for resize approach not found.',ReportFileName,'file','y');
PrintStringInfo('Using the ''NO_RESIZE'' resize approach.',ReportFileName,'file','y');
// #RNU_RES_E
else
ResizeApproach = tmpresize;
end
mclose(scifid);
endfunction
|