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 22 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, ekrmjmnbrukm, elmgxqgtpvxh, 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: | 3196 / 14314 |
| Version history: | 40 change(s) |
| Referenced in: | [show references] |