source: MML/trunk/mml/links/tango/tango2handle.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 11 years ago

Initial import--MML version from SOLEIL@2013

File size: 3.0 KB
Line 
1function [Handle, ErrorFlag] = tango2handle(TangoNames, FamilyList);
2% TANGO2HANDLE - Converts TANGO name to handle name
3% [Handle, ErrorFlag] = tango2handle(TangoNames, Family)
4%
5% INPUTS
6% 1. TangoNames = List of Tango names (string, matrix, or cell array)
7% 2. Family = optional input to limit the search (string, matrix, structure, or cell array)
8%
9% OUTPUTS
10% 1. Handle = Handles corresponding to the Tango name
11%             0 if Tango name cannot be found
12% 2. ErrorFlag = Number of errors found
13%
14% Written by Laurent S. Nadolski
15
16if nargin < 1
17    error('Must have 1 input (''TangoNames'')');
18end
19if nargin < 2
20    FamilyList = [];
21end
22
23% Cell inputs
24if iscell(TangoNames)
25    if iscell(FamilyList)
26        if length(FamilyList) ~= length(CommonNames)
27            error('Family and CommonNames must be the same size cell arrays.');
28        end
29    end
30   
31    for i = 1:length(TangoNames)
32        if iscell(FamilyList)
33            [Handle{i}, ErrorFlag{i}] = tango2handle(TangoNames{i}, FamilyList{i});
34        else
35            [Handle{i}, ErrorFlag{i}] = tango2handle(TangoNames{i}, FamilyList);
36        end
37        return   
38    end
39end
40% End cell input
41
42
43ErrorFlag = 0;
44Handle = [];
45if isempty(FamilyList)
46    FamilyList = getfamilylist;
47elseif isstruct(FamilyList)
48    % Structures are ok
49    FamilyList = FamilyList.FamilyName;
50end
51
52for i = 1:size(TangoNames,1)
53    Found = 0;
54    for l = 1:size(FamilyList, 1)
55       
56        FamilyTest = deblank(FamilyList(l,:));
57       
58        Fields = fieldnames(getfamilydata(FamilyTest));
59        for m = 1:length(Fields)
60            TangoNamesTotal = getfamilydata(FamilyTest, Fields{m}, 'TangoNames');
61           
62            if ~isempty(TangoNamesTotal)
63                Name = deblank(TangoNames(i,:));
64                [name,j,k] = intersect(Name, TangoNamesTotal, 'rows');
65               
66                if isempty(name) & length(Name)~=size(TangoNamesTotal)
67                    Name = [repmat(' ',size(Name,1),size(TangoNamesTotal,2)-size(Name,2)) Name];
68                    [name,j,k] = intersect(Name, TangoNamesTotal, 'rows');
69                end
70               
71                if isempty(name)
72                    Name = deblank(TangoNames(i,:));
73                    if length(Name)~=size(TangoNamesTotal)
74                        Name = [Name repmat(' ',size(Name,1),size(TangoNamesTotal,2)-size(Name,2))];
75                        [name,j,k] = intersect(Name, TangoNamesTotal, 'rows');
76                    end
77                end
78               
79                if ~isempty(k)
80                    Found = 1;
81                    break
82                end
83            end
84            if Found
85                break
86            end
87        end
88        if Found
89            break
90        end
91    end
92    if Found
93        HandleTotal = getfamilydata(FamilyTest, Fields{m}, 'Handles');
94        h = HandleTotal(k,:);
95    else
96        h = 0;
97        ErrorFlag = ErrorFlag + 1;
98    end
99   
100    Handle = [Handle; h];
101end
102% if all(~Handle)
103%     Handle = [];
104% end
105% End all family search
106
107
108
Note: See TracBrowser for help on using the repository browser.