Libraryless. Click here for Pure Java version (5042L/28K).
1 | please include function tempInterceptPrintIfNotIntercepted. // cmodules need this |
2 | |
3 | ifdef NotifyingPrintLog |
4 | static volatile new NotifyingStringBuffer local_log; // not redirected |
5 | svoid _onLoad_print() { |
6 | print_autoRotate(); |
7 | } |
8 | endifdef |
9 | ifndef NotifyingPrintLog |
10 | static volatile new StringBuffer local_log; // not redirected |
11 | endifndef |
12 | |
13 | ifdef print_rst |
14 | static new StringBuffer rst_printBuf; |
15 | static ReliableSingleThread rst_print = rst(r rst_print_flush); |
16 | |
17 | svoid rst_print_flush() { |
18 | System.out.print(getAndClearStringBuffer(rst_printBuf)); |
19 | } |
20 | endifdef |
21 | |
22 | sbool printAlsoToSystemOut = true; |
23 | |
24 | static volatile Appendable print_log = local_log; // might be redirected, e.g. to main bot |
25 | |
26 | // in bytes - will cut to half that |
27 | static volatile int print_log_max = 1024*1024; |
28 | static volatile int local_log_max = 100*1024; |
29 | |
30 | static boolean print_silent; // total mute if set |
31 | |
32 | static new O print_byThread_lock; |
33 | static volatile ThreadLocal<O> print_byThread; // special handling by thread - prefers F1<S, Bool> |
34 | static volatile O print_allThreads; |
35 | static volatile O print_preprocess; |
36 | |
37 | static void print() { |
38 | print(""); |
39 | } |
40 | |
41 | static <A> A mapMethodLike print(S s, A o) { |
42 | print(combinePrintParameters(s, o)); |
43 | ret o; |
44 | } |
45 | |
46 | // slightly overblown signature to return original object... |
47 | static <A> A print(A o) { |
48 | ping_okInCleanUp(); |
49 | if (print_silent) return o; |
50 | S s = o + "\n"; |
51 | print_noNewLine(s); |
52 | return o; |
53 | } |
54 | |
55 | static void print_noNewLine(String s) { |
56 | ifndef LeanMode |
57 | try { |
58 | O f = getThreadLocal(print_byThread_dontCreate()); |
59 | if (f == null) f = print_allThreads; |
60 | if (f != null) |
61 | // We do need the general callF machinery here as print_byThread is sometimes shared between modules |
62 | if (isFalse( |
63 | ifclass F1 |
64 | f instanceof F1 ? f/F1.get(s) : |
65 | endif |
66 | callF(f, s))) ret; |
67 | } catch e { |
68 | System.out.println(getStackTrace(e)); |
69 | } |
70 | endifndef |
71 | |
72 | print_raw(s); |
73 | } |
74 | |
75 | static void print_raw(String s) { |
76 | ifndef LeanMode |
77 | if (print_preprocess != null) s = (S) callF(print_preprocess, s); |
78 | s = fixNewLines(s); |
79 | endifndef |
80 | Appendable loc = local_log; |
81 | Appendable buf = print_log; |
82 | int loc_max = print_log_max; |
83 | if (buf != loc && buf != null) { |
84 | print_append(buf, s, print_log_max); |
85 | loc_max = local_log_max; |
86 | } |
87 | if (loc != null) |
88 | print_append(loc, s, loc_max); |
89 | ifdef print_rst |
90 | rst_printBuf.append(s); |
91 | rst_print.trigger(); |
92 | endifdef |
93 | ifndef print_rst |
94 | if (printAlsoToSystemOut) |
95 | System.out.print(s); |
96 | endifndef |
97 | ifndef NoVMBus |
98 | vmBus_send printed(mc(), s); |
99 | endifndef |
100 | } |
101 | |
102 | svoid print_autoRotate() { |
103 | ifdef NotifyingPrintLog |
104 | makeNotifyingStringBufferRotate(local_log, () -> local_log_max); |
105 | endifdef |
106 | } |
download show line numbers debug dex old transpilations
Travelled to 21 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, ekrmjmnbrukm, gwrvuhgaqvyk, irmadwmeruwu, ishqpsrjomds, jtubtzbbkimh, lpdgvwnxivlt, mowyntqkapby, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt, wnsclhtenguj, xrpafgyirdlv
No comments. add comment
Snippet ID: | #1000658 |
Snippet name: | print function (=System.out.println + logging in memory) |
Eternal ID of this version: | #1000658/41 |
Text MD5: | 875fa57776cb0f989485c314e8f6e799 |
Transpilation MD5: | 93c0b78ac655bc2d4163483a2be4bc61 |
Author: | stefan |
Category: | |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-03-12 22:45:19 |
Source code size: | 2782 bytes / 106 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 1650 / 12491 |
Version history: | 40 change(s) |
Referenced in: | [show references] |