LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
line_warning.m
1function line_warning(caller, MSG, varargin)
2% LINE_WARNING(CALLER, ERRMSG)
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6
7if ~coder.target('MATLAB')
8 return; % No-op in codegen mode
9end
10
11%global GlobalConstants.Verbose
12persistent lastWarning;
13persistent suppressedWarnings;
14persistent suppressedWarningsTic;
15persistent lastWarningTime;
16persistent suppressedAnnouncement;
17
18if GlobalConstants.Verbose == VerboseLevel.SILENT
19 return
20end
21
22suppressedAnnouncement = false;
23errmsg=sprintf(MSG, varargin{:});
24w = warning('QUERY','ALL');
25w(1).state = 'on'; % always print warnings by default
26switch w(1).state
27 case 'on'
28 %warning('[%s] %s',caller,MSG);
29 finalmsg = sprintf('Warning [%s.m]: %s',caller,errmsg);
30 try
31 if ~strcmp(finalmsg, lastWarning) || (toc(suppressedWarningsTic)-toc(lastWarningTime))>60
32 line_printf(finalmsg);
33 %warning(finalmsg);
34 lastWarning = finalmsg;
35 suppressedWarnings = false;
36 suppressedWarningsTic = tic;
37 else
38 if ~suppressedWarnings && ~suppressedAnnouncement
39 %line_printf(finalmsg);
40 %warning(finalmsg);
41 finalmsg = sprintf('\nWarning [%s.m]: %s',caller,errmsg);
42 line_printf(sprintf('[%s.m] %s',caller,'Message casted more than once, repetitions will not be printed on screen for 60 seconds.\n'));
43 %warning(sprintf('[%s.m] %s',caller,'Message casted more than once, repetitions will not be printed on screen for 60 seconds.'));
44 suppressedAnnouncement = true;
45 suppressedWarnings = true;
46 suppressedWarningsTic = tic;
47 end
48 end
49 lastWarningTime=tic;
50 catch ME
51 switch ME.identifier
52 case 'MATLAB:toc:callTicFirstNoInputs'
53 %warning(finalmsg);
54 line_printf(finalmsg);
55 lastWarning = finalmsg;
56 suppressedWarnings = false;
57 suppressedWarningsTic = -1;
58 lastWarningTime=tic;
59 end
60 end
61 case 'off'
62 %line_printf(sprintf('Warning [%s.m]: %s',caller,errmsg));
63end
64end