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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
function GetVarAnnotationsSciFile(FileInfoDatFile);
// function GetVarAnnotationsSciFile(FileInfoDatFile);
// --------------------------------------------------------------------------------
// This function reads the .sci input file and returns all the variable annotations
// found in that file.
//
// Input data:
// FileInfoDatFile: name of the .dat file containing the FileInfo structure.
// SharedInfoDatFile: it is a buffer containing parameters that are exchanged by the
// functions of the SCI2C tool.
//
// Output data:
//
// Status:
// 21-Jun-2007 -- Nutricato Raffaele: Author.
// -----------------------------------------------------------------
// ---------------------
// --- Load section. ---
// ---------------------
// --- Load File Info Structure. ---
load(FileInfoDatFile,'FileInfo');
// --- Load Shared Info Structure. ---
load(FileInfo.SharedInfoDatFile,'SharedInfo');
// --- Extraction of the function name and number. ---
funname = SharedInfo.Next(1).SCIFunName;
funnumber = SharedInfo.NextSCIFunNumber;
// --- Load GlobalVars Structure. ---
load(FileInfo.GlobalVarFileName,'GlobalVars');
// --- Load LocalVars Structure. ---
load(FileInfo.Funct(funnumber).LocalVarFileName,'LocalVars');
// -------------------------
// --- End load section. ---
// -------------------------
SciFileName = FileInfo.Funct(funnumber).SCIFileName;
PrintStepInfo('Get annotations from '+SciFileName,...
FileInfo.GeneralReport,'both');
// ---------------------------------------
// --- Open the .sci file (read only). ---
// ---------------------------------------
[inscifid,inscierr] = mopen(SciFileName,'r');
if (inscierr < 0)
SCI2Cerror(['Cannot open: '+SciFileName])
end
// --- Loop Initialization. ---
GlobalVarNames = [];
// ----------------------------------------------
// --- Loop over the lines of the input file. ---
// ----------------------------------------------
line_position = 0;
while (meof(inscifid) == 0)
check_string = stripblanks(mgetl(inscifid,1));
line_position = line_position + 1;
if (length(check_string) >= 1)
if (SCI2Cstrncmps1size(SharedInfo.Annotations.GBLVAR,check_string))
PrintStringInfo('Line '+string(line_position)+' - Global Variables: '+' ""'+check_string+' ""',...
FileInfo.GeneralReport,'both','y');
TmpGlobalAnn = stripblanks(tokens(check_string,' '));
GlobalVarNames = [GlobalVarNames,TmpGlobalAnn(2:max(size(TmpGlobalAnn)))];
clear TmpGlobalAnn
elseif (SCI2Cstrncmps1size(SharedInfo.Annotations.VARTYPE,check_string))
// Assuming the following annotation:
// //_SCI2C_VARTYPE: name | type | size
// Ex.:
// //_SCI2C_VARTYPE: myvar | z | [10,4]
TmpVarAnn = GetVarTypeAnnotation(check_string);
PrintStringInfo('Line '+string(line_position)+' - VARTYPE annotation: '+' ""'+check_string+' ""',...
FileInfo.GeneralReport,'file','y');
// Check if the variable is global or local
if length(find(GlobalVarNames==TmpVarAnn(2))) > 0
//RN Qui manca un check per verificare se sto ridefinendo una global gia definita
GlobalVarsNum = size(GlobalVars,1) + 1;
GlobalVars(GlobalVarsNum).Name = TmpVarAnn(2);
GlobalVars(GlobalVarsNum).CName = TmpVarAnn(2);
GlobalVars(GlobalVarsNum).Type = TmpVarAnn(3);
GlobalVars(GlobalVarsNum).Size = eval(TmpVarAnn(4));
else
//RN Qui manca un check per verificare se sto ridefinendo una local gia definita
LocalVarsNum = size(LocalVars,1) + 1;
LocalVars(LocalVarsNum).Name = TmpVarAnn(2);
LocalVars(LocalVarsNum).CName = TmpVarAnn(2);
LocalVars(LocalVarsNum).Type = TmpVarAnn(3);
LocalVars(LocalVarsNum).Size = eval(TmpVarAnn(4));
end
clear TmpVarAnn
end
end
end
// --------------------------------------------------
// --- End loop over the lines of the input file. ---
// --------------------------------------------------
mclose(inscifid);
// ---------------------
// --- Save section. ---
// ---------------------
// --- Save File Info Structure. ---
save(FileInfoDatFile,FileInfo);
// Save Global and Local variables info into .dat files.
save(FileInfo.GlobalVarFileName,GlobalVars);
save(FileInfo.Funct(funnumber).LocalVarFileName,LocalVars);
endfunction
|