summaryrefslogtreecommitdiff
path: root/2.3-1/macros/FunctionAnnotation/FA_GetResizeApproach.sci
blob: 9542700188321819e26118a0ee17d079bfac3dfc (plain)
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