summaryrefslogtreecommitdiff
path: root/macros/SymbolTable/ST_Get.sci
blob: 636a873a3aa28c27d721b7d109c8d43e3f381217 (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
function [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
   ST_Get(Field_Name,SymbolTableFileName)
// function [TBFlagfound,TBType,TBSize,TBValue,TBFindLike,TBDimension] = ...
//    ST_Get(Field_Name,SymbolTableFileName)
// -----------------------------------------------------------------
// #RNU_RES_B
// Get function for the symbol table.
//
// #RNU_RES_E
// Input data:
// //NUT: add description here
//
// Output data:
// //NUT: add description here
//
// Status:
// 26-Oct-2007 -- Raffaele Nutricato: Author.
// 26-Oct-2007 -- Alberto Morea: Test Ok.
//
// Copyright 2007 Raffaele Nutricato & Alberto Morea.
// Contact: raffaele.nutricato@tiscali.it
// -----------------------------------------------------------------

// ------------------------------
// --- Check input arguments. ---
// ------------------------------
SCI2CNInArgCheck(argn(2),2,2);

// --------------------------
// --- Load Symbol Table. ---
// --------------------------
[tmpnams,tmptyps,tmpdims,tmpvols]=listvarinfile(SymbolTableFileName);
if (max(size(tmpnams)) > 1)
    error(9999, 'More than one variable found in ""'+SymbolTableFileName+'"".');
end
load(SymbolTableFileName,tmpnams);
SCI2CSymbolTable = eval(tmpnams);
// ------------------------------
// --- End Load Symbol Table. ---
// ------------------------------

TBFlagfound = 0;
TBType      = '';
TBSize(1)   = '';
TBSize(2)   = '';
TBValue     = %nan;
TBFindLike  = %nan;
TBDimension = %nan;
NEntries = max(size(SCI2CSymbolTable));
for countertable = 1:NEntries
  if (mtlb_strcmp(Field_Name,SCI2CSymbolTable(countertable).Name))
    TBFlagfound = TBFlagfound + 1;
    TBType      = SCI2CSymbolTable(countertable).Type; // String
    TBSize      = SCI2CSymbolTable(countertable).Size; // String
    TBValue     = SCI2CSymbolTable(countertable).Value; 
    TBFindLike  = SCI2CSymbolTable(countertable).FindLike; // Number: 0 or 1.
    TBDimension = SCI2CSymbolTable(countertable).Dimension; // Number: 0 or 1 or 2.
  end
end

if (TBFlagfound > 1)
   error(9999, 'Symbol table conflict: found two symbols with the same name ""'+TBName+'"".');
end
endfunction