source: MML/trunk/mml/@AccObj/AccObj.m @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 2.0 KB
Line 
1function p = AccObj(Family, Field, DeviceList)
2%AccObj - Class constructor for middle layer data objects
3%
4%  Written by Greg Portmann
5
6
7AO = getao;
8Families = fieldnames(AO);
9for i = 1:length(Families)
10    DataStruct.(Families{i}) = [];
11end
12
13if nargin == 0
14    % Empty struture
15    %error('Family name input required');
16
17elseif isa(Family,'AccObj')
18    if nargin >= 2
19        Family.DeviceList = DeviceList;
20    end
21    p = get(Family);
22    return;
23
24elseif nargin == 1
25    Field = 'Monitor';
26
27    if iscell(Family)
28        for i = 1:length(Family)
29            if isstruct(Family{i})
30                DataStruct.(Family{i}.FamilyName) = Family{i};
31            elseif ischar(Family{i})
32                DataStruct.(Family{i}) = family2datastruct(Family{i}, Field);
33            end
34        end
35    elseif isstruct(Family)
36        Families = fieldnames(Family);
37        if any(strcmp(Families,'FamilyName'))
38            % Data Structure
39            DataStruct.(Family.FamilyName) = Family;
40        else
41            % AO structure
42            DataStruct = Family;
43        end
44    elseif ischar(Family)
45        DataStruct.(Family) = family2datastruct(Family, Field);
46    else
47        % Default AccObj
48        DeviceList = Family;
49        Family = findmemberof({'BPM','BPMx'});
50        if isempty(Family)
51            Family = 'BPMx';
52        else
53            Family = Family{1};
54        end
55        DataStruct.(Family) = family2datastruct(Family, Field, DeviceList);
56    end
57
58elseif nargin == 2
59    if ischar(Field)
60        DataStruct.(Family) = family2datastruct(Family, Field);
61    else
62        DeviceList = Field;
63        Field = 'Monitor';
64        DataStruct.(Family) = family2datastruct(Family, Field, DeviceList);
65    end
66   
67elseif nargin >=3
68    DataStruct.(Family) = family2datastruct(Family, Field, DeviceList);
69end
70
71
72% % Order fields (you can't change the field order of an object!!!)
73% i = find(strcmp(Family, Families) == 1);
74% Families(i) = [];
75% Families = [{Family}; Families];
76% DataStruct = orderfields(DataStruct, Families);
77
78
79p = class(DataStruct, 'AccObj');
80
Note: See TracBrowser for help on using the repository browser.