📄 extcaller.m
字号:
function fromwhere = extcaller(varargin)
% extcaller - from where was a call issued
%
% FORMAT: callername = extcaller
%
% See also DBSTACK
% Version: v0.5c
% Build: 6120415
% Date: Dec-04 2006, 3:15 PM CET
% Author: Jochen Weber, Brain Innovation, B.V., Maastricht, NL
% URL/Info: http://wiki.brainvoyager.com/BVQXtools
% persistent versioning information
persistent ec_mlv;
if isempty(ec_mlv)
ec_mlv = version;
if ec_mlv(1) > '6'
ec_mlv = 'file';
else
ec_mlv = 'name';
end
end
% how to get stack info
switch (ec_mlv), case {'file'}
pathstack = dbstack('-completenames');
case {'name'}
pathstack = dbstack;
otherwise
error( ...
'BVQXtools:MemoryCorruption', ...
'Interal variable glitch.' ...
);
end
% set default caller name
fromwhere = 'CONSOLE_OR_GUI';
if length(pathstack) < 3
return;
end
% input argument handling
if nargin < 1
func = lower(pathstack(2).(ec_mlv));
elseif ischar(varargin{1})
func = lower(varargin{1});
elseif isnumeric(varargin{1}) && ...
~isempty(varargin{1}) && ...
~isnan(varargin{1}(1))
func = lower(pathstack(2).(ec_mlv));
if varargin{1}(1) == 1
func = fileparts(func);
end
else
error( ...
'BVQXtools:BadArgument', ...
'Unsupported input argument.' ...
);
end
% try to find matching caller
for dbsi = 3:length(pathstack)
if isempty(strfind(lower(pathstack(dbsi).(ec_mlv)), func))
break;
end
end
if dbsi < length(pathstack) || ...
isempty(strfind(lower(pathstack(dbsi).(ec_mlv)), func))
fromwhere = pathstack(dbsi).(ec_mlv);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -