www.gusucode.com > mbcexpr 工具箱 matlab 源码程序 > mbcexpr/@cglookup/loadobj.m

    function obj = loadobj(obj)
%LOADOBJ Laod-time reconstruction of cglookup
%
%  OBJ = LOADOBJ(OBJ) is called during the loading of cglookup objects.

%  Copyright 2000-2015 The MathWorks, Inc. and Ford Global Technologies, Inc.


if isstruct(obj) && ~isfield(obj,'version');
    % Version 1 had no version field
    obj.sizelocks = guidarray(0);
    obj.version = 2;
end

if obj.version<3
    % Add new fields to support extrapolation procedures for all tables
    obj.ExtrapolationMask = true(0);
    obj.ExtrapolationRegions = true(0);
    obj.version = 3;
end

if obj.version<4
    % Add a post load function that checks feature and table links.  The
    % date number is datenum('1-December-2004').
    hLoad = mbcloadrecorder('current');
    hLoad.addSingleton(@i_checklinks, 732282);
end

if obj.version<5
    obj.UseLocksInExtrapolation = true;
    obj.version = 5;
end

if obj.version<6
    if isfield(obj,'UserData')
        ud = obj.UserData;
        % make sure that UserData is added to the end of the property list
        obj = rmfield(obj,'UserData');
    else
        ud = [];
    end
    obj.UserData = ud;
    obj.version = 6;
end

% If the object came in as a structure it needs to be turned back into a
% class by the constructor
if isstruct(obj)
    obj = cglookup(obj);
end



function i_checklinks(Proj, evt)
ptrs = evt.LoadedPointers;

% Only update data that has not been deleted by another post-load process
ptrs = ptrs(isvalid(ptrs));

% Get all data and find cglookups
data = infoarray(ptrs);
DoUpdate = false(size(data));
for n = 1:numel(data)
    if isa(data{n}, 'cglookup')
        data{n} = checkLinks(data{n});
        DoUpdate(n) = true;
    end    
end
passign(ptrs(DoUpdate), data(DoUpdate));