www.gusucode.com > mbc 工具箱 matlab 源码程序 > mbc/@mbcprefs/private/pr_datastore.m
function varargout = pr_datastore(action,varargin) %PR_DATASTORE Private persistent data for prefs % % OUT=PR_DATASTORE(ACTION,IN) executes ACTION on the datastore % using any inputs IN and returns outputs OUT. % % Various I/O syntax are allowed: % % prefname :- String, Name of preference % data :- Variant, Data to store/retrieve % flg :- Boolean, Normally a success indicator % name :- String, Name of preference set % % PR_DATASTORE('init',[prefset]) % PR_DATASTORE('reset') % flg = PR_DATASTORE('isprefset') % val = PR_DATASTORE('property', prop) gets a PrefsData property. % PR_DATASTORE('property', prop, val) sets a PrefsData property. % PR_DATASTORE(meth, [args]) calls a PrefsData method. % Copyright 2000-2008 The MathWorks, Inc. and Ford Global Technologies, Inc. if ~nargin % No action specified return end mlock persistent PrefsData % Check static data is initialized if isempty(PrefsData) PrefsData = mbcutils.PrefsData; end switch lower(action) case 'init' if nargin<2 % Open the existing set openprefs = PrefsData.Name; if isempty(openprefs) openprefs = 'Default'; end else openprefs = varargin{1}; end if ~strcmp(openprefs, PrefsData.Name) PrefsData.Name = openprefs; end case 'unlock' % undocumented feature, to aid debugging munlock case 'reset' munlock clear PrefsData case 'isprefset' AllSets = PrefsData.setNames; if isempty(AllSets) % No registered sets is unusual and more likely to be because % the list of sets could not be accessed. For the moment we'll % pretend that we know about it but it might not work when the % user tries to access it. varargout{1} = true; else varargout{1} = any(strcmp(varargin{1}, AllSets)); end case 'property' if length(varargin)==1 % Get a property varargout{1} = PrefsData.(varargin{1}); else % Set a property PrefsData.(varargin{1}) = varargin{2}; end otherwise % Call a PrefsData method [varargout{1:nargout}] = feval(action, PrefsData, varargin{:}); end