www.gusucode.com > mbcdesign 工具箱 matlab 源码程序 > mbcdesign/@designdev/log.m

    function obj = Log(obj, action, varargin)
%LOG

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



persistent currentState
persistent logFilename
persistent logServer
persistent logMethod
persistent logProgID

if nargin < 2
	action = 'log';
end

switch lower(action)
case 'clear'
	currentState = [];
	if exist(logFilename) == 2
		delete(logFilename)
	end
	logFilename = '';
	return
case 'release'
	if ~isempty(logServer)
		release(logServer)
		logServer = [];
		logProgID = [];
	end
case 'server'
	progID = varargin{1};
	if ~isempty(logServer)
		if strcmp(logProgID, progID)
			return
		else
			release(logServer)
		end
	end
	logMethod = varargin{2};
	logServer = actxserver(progID);
	logProgID = progID;
case 'file'
	filename = varargin{1};
	[path, name, ext] = fileparts(filename);
	if isempty(ext)
		ext = '.mat';
	end
	filename = fullfile(path, [name ext]);
	logFilename = filename;
	return
case 'restore'
	if ~isempty(logFilename)
		load(logFilename);
		obj = currentState;
	end
	return
case 'log'
	if ~isempty(logFilename)
		lObj = count(obj);
		if lObj > length(currentState)
			currentState = obj;
		else
			S.type = '()';
			S.subs = {1:lObj};
			currentState = subsasgn(currentState, S, obj);
		end
		save(logFilename, 'currentState');
	end
case 'message'
	if ~isempty(logServer)
		messageString = varargin{1};
		invoke(logServer, logMethod, [datestr(now) ' : ' messageString]);
	end
otherwise
	error(message('mbc:designdev:InvalidArgument4'));
end