File: stdlib_terminal.c

package info (click to toggle)
nim 0.16.0-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 290,936 kB
  • ctags: 1,049,726
  • sloc: sh: 7,408; ansic: 1,464; makefile: 358; objc: 224; asm: 199; xml: 129; java: 56; pascal: 32; python: 20
file content (242 lines) | stat: -rw-r--r-- 7,579 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
/* Generated by Nim Compiler v0.16.0 */
/*   (c) 2017 Andreas Rumpf */
/* The generated code is subject to the original license. */
#define NIM_INTBITS 32

#include "nimbase.h"
#include <string.h>
#include <stdio.h>
#include <io.h>
#undef linux
typedef struct TGenericSeq TGenericSeq;
typedef struct NimStringDesc NimStringDesc;
typedef struct Consolescreenbufferinfo_r6d5R6U7A9aP1xHUbo2o04A Consolescreenbufferinfo_r6d5R6U7A9aP1xHUbo2o04A;
typedef struct Coord_38Oq1GgFPIYv2ksRi9c0fZA Coord_38Oq1GgFPIYv2ksRi9c0fZA;
typedef struct Smallrect_GSDbaE1SdabWptSZYJG3XA Smallrect_GSDbaE1SdabWptSZYJG3XA;
typedef N_STDCALL_PTR(NI, TY_zP2zGemcuVRvOUE82f9a0Pw) (NI32 nstdhandle0);
struct  TGenericSeq  {
NI len;
NI reserved;
};
struct  NimStringDesc  {
  TGenericSeq Sup;
NIM_CHAR data[SEQ_DECL_SIZE];
};
typedef N_STDCALL_PTR(NI32, TY_oew1DfaGl5XhHmnBK0HYXQ) (NI hsourceprocesshandle0, NI hsourcehandle0, NI htargetprocesshandle0, NI* lptargethandle0, NI32 dwdesiredaccess0, NI32 binherithandle0, NI32 dwoptions0);
typedef N_STDCALL_PTR(NI, TY_uryidYWkntM7ddjZSyxvyQ) (void);
struct  Coord_38Oq1GgFPIYv2ksRi9c0fZA  {
NI16 X;
NI16 Y;
};
struct  Smallrect_GSDbaE1SdabWptSZYJG3XA  {
NI16 Left;
NI16 Top;
NI16 Right;
NI16 Bottom;
};
struct  Consolescreenbufferinfo_r6d5R6U7A9aP1xHUbo2o04A  {
Coord_38Oq1GgFPIYv2ksRi9c0fZA dwsize;
Coord_38Oq1GgFPIYv2ksRi9c0fZA dwcursorposition;
NI16 wattributes;
Smallrect_GSDbaE1SdabWptSZYJG3XA srwindow;
Coord_38Oq1GgFPIYv2ksRi9c0fZA dwmaximumwindowsize;
};
typedef N_STDCALL_PTR(NI32, TY_vjGHiWUJwFzOgSxDffBb6Q) (NI hconsoleoutput0, Consolescreenbufferinfo_r6d5R6U7A9aP1xHUbo2o04A* lpconsolescreenbufferinfo0);
typedef NU8 Style_NXKayqTLMsAibFwNceBlpA_Set;
typedef NU8 Style_NXKayqTLMsAibFwNceBlpA;
typedef N_STDCALL_PTR(NI32, TY_oPCjp4xTgEl9a8fqSzOv8lw) (NI hconsoleoutput0, NI16 wattributes0);
typedef NU8 Foregroundcolor_ez9ah4IgQc0AbdW68acioDg;
typedef NI TY_e7dTfxuKO1YfQGLA3anCHg[8];
N_NIMCALL(void*, nimLoadLibrary)(NimStringDesc* path0);
N_NOINLINE(void, nimLoadLibraryError)(NimStringDesc* path0);
N_NIMCALL(void*, nimGetProcAddr)(void* lib0, NCSTRING name0);
N_NIMCALL(NI16, getattributes_PnaHeFPQ8QlJWgnEjaRyCg)(NI h0);
N_NIMCALL(int, getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg)(FILE* f0);
NI hstdout_Q6LBG8sK28zNgldP5VHBBA;
NI hstderr_6C9cOGHD37RMptVLFSz9ckEQ;
NI hstdouttemp_Frgc1hZhHtHmhQpuiOhypw;
extern TY_zP2zGemcuVRvOUE82f9a0Pw Dl_119820;
static void* T_CN3raB9atujkEiPpxYAdlgQ_2;
TY_oew1DfaGl5XhHmnBK0HYXQ Dl_190038;
TY_uryidYWkntM7ddjZSyxvyQ Dl_190048;
NI hstderrtemp_lkKJFEg9bMgFJ9bv6dAcceSQ;
NI16 oldstdoutattr_vkHOZle9bmebv77fjQpEGqw;
TY_vjGHiWUJwFzOgSxDffBb6Q Dl_190050;
NI16 oldstderrattr_ZXyw45dCi8lkCMLSUcaIBw;
TY_oPCjp4xTgEl9a8fqSzOv8lw Dl_190160;
STRING_LITERAL(T_CN3raB9atujkEiPpxYAdlgQ_4, "kernel32", 8);
STRING_LITERAL(T_CN3raB9atujkEiPpxYAdlgQ_5, "kernel32", 8);
NIM_CONST TY_e7dTfxuKO1YfQGLA3anCHg lookup_iBTamPHB6H8lJIzDyv8epw = {((NI) 0),
((NI) 4),
((NI) 2),
((NI) 6),
((NI) 1),
((NI) 5),
((NI) 3),
((NI) 7)}
;

N_NIMCALL(NI16, getattributes_PnaHeFPQ8QlJWgnEjaRyCg)(NI h0) {
	NI16 result0;
	Consolescreenbufferinfo_r6d5R6U7A9aP1xHUbo2o04A c0;
{	result0 = (NI16)0;
	memset((void*)(&c0), 0, sizeof(c0));
	{
		NI32 LOC3;
		LOC3 = (NI32)0;
		LOC3 = Dl_190050(h0, (&c0));
		if (!!((LOC3 == ((NI32) 0)))) goto LA4;
		result0 = c0.wattributes;
		goto BeforeRet;
	}
	LA4: ;
	result0 = ((NI16) 112);
	goto BeforeRet;
	}BeforeRet: ;
	return result0;
}

N_NIMCALL(void, setstyle_GclWadYUouE9aXrU2KZQtoQ)(FILE* f0, Style_NXKayqTLMsAibFwNceBlpA_Set style0) {
	NI h0;
	NI16 old0;
	NI16 LOC6;
	NI16 a0;
	NI32 LOC23;
	{
		if (!(f0 == stderr)) goto LA3;
		h0 = hstderr_6C9cOGHD37RMptVLFSz9ckEQ;
	}
	goto LA1;
	LA3: ;
	{
		h0 = hstdout_Q6LBG8sK28zNgldP5VHBBA;
	}
	LA1: ;
	LOC6 = (NI16)0;
	LOC6 = getattributes_PnaHeFPQ8QlJWgnEjaRyCg(h0);
	old0 = (NI16)(LOC6 & ((NI16) 119));
	a0 = ((NI16) 0);
	{
		if (!((style0 &(1U<<((NU)((((Style_NXKayqTLMsAibFwNceBlpA) 1)- 1))&7U)))!=0)) goto LA9;
		a0 = (NI16)(a0 | ((NI16) 8));
	}
	LA9: ;
	{
		if (!((style0 &(1U<<((NU)((((Style_NXKayqTLMsAibFwNceBlpA) 5)- 1))&7U)))!=0)) goto LA13;
		a0 = (NI16)(a0 | ((NI16) 128));
	}
	LA13: ;
	{
		if (!((style0 &(1U<<((NU)((((Style_NXKayqTLMsAibFwNceBlpA) 7)- 1))&7U)))!=0)) goto LA17;
		a0 = (NI16)(a0 | ((NI16) 16384));
	}
	LA17: ;
	{
		if (!((style0 &(1U<<((NU)((((Style_NXKayqTLMsAibFwNceBlpA) 4)- 1))&7U)))!=0)) goto LA21;
		a0 = (NI16)(a0 | ((NI16) -32768));
	}
	LA21: ;
	LOC23 = (NI32)0;
	LOC23 = Dl_190160(h0, (NI16)(old0 | a0));
}

N_NIMCALL(void, resetattributes_6DYwjcHkAz0BG9bT24wH4dw)(FILE* f0) {
	{
		NI32 LOC5;
		if (!(f0 == stderr)) goto LA3;
		LOC5 = (NI32)0;
		LOC5 = Dl_190160(hstderr_6C9cOGHD37RMptVLFSz9ckEQ, oldstderrattr_ZXyw45dCi8lkCMLSUcaIBw);
	}
	goto LA1;
	LA3: ;
	{
		NI32 LOC7;
		LOC7 = (NI32)0;
		LOC7 = Dl_190160(hstdout_Q6LBG8sK28zNgldP5VHBBA, oldstdoutattr_vkHOZle9bmebv77fjQpEGqw);
	}
	LA1: ;
}

N_NIMCALL(void, setforegroundcolor_Tw7yxMupneOmAicqiYt3NA)(FILE* f0, Foregroundcolor_ez9ah4IgQc0AbdW68acioDg fg0, NIM_BOOL bright0) {
	NI h0;
	NI16 old0;
	NI16 LOC6;
	NI32 LOC11;
	{
		if (!(f0 == stderr)) goto LA3;
		h0 = hstderr_6C9cOGHD37RMptVLFSz9ckEQ;
	}
	goto LA1;
	LA3: ;
	{
		h0 = hstdout_Q6LBG8sK28zNgldP5VHBBA;
	}
	LA1: ;
	LOC6 = (NI16)0;
	LOC6 = getattributes_PnaHeFPQ8QlJWgnEjaRyCg(h0);
	old0 = (NI16)(LOC6 & ((NI16) -8));
	{
		if (!bright0) goto LA9;
		old0 = (NI16)(old0 | ((NI16) 8));
	}
	LA9: ;
	LOC11 = (NI32)0;
	LOC11 = Dl_190160(h0, ((NI16)(NU16)(NU)((NI)(((NI) (old0)) | lookup_iBTamPHB6H8lJIzDyv8epw[(fg0)- 30]))));
}

N_NIMCALL(NIM_BOOL, isatty_POoHvosCWg3Yl5ieYeLHrg)(FILE* f0) {
	NIM_BOOL result0;
	int LOC1;
	int LOC2;
	result0 = (NIM_BOOL)0;
	LOC1 = (int)0;
	LOC1 = getfilehandle_bZ9c2yojtXoDTUpfyl8h8Rg(f0);
	LOC2 = (int)0;
	LOC2 = _isatty(LOC1);
	result0 = !((LOC2 == ((NI32) 0)));
	return result0;
}
NIM_EXTERNC N_NOINLINE(void, stdlib_terminalInit000)(void) {
	{
		hstdouttemp_Frgc1hZhHtHmhQpuiOhypw = Dl_119820(((NI32) -11));
		{
			NI LOC4;
			NI LOC5;
			NI32 LOC6;
			LOC4 = (NI)0;
			LOC4 = Dl_190048();
			LOC5 = (NI)0;
			LOC5 = Dl_190048();
			LOC6 = (NI32)0;
			LOC6 = Dl_190038(LOC4, hstdouttemp_Frgc1hZhHtHmhQpuiOhypw, LOC5, (&hstdout_Q6LBG8sK28zNgldP5VHBBA), ((NI32) 0), ((NI32) 1), ((NI32) 2));
			if (!(LOC6 == ((NI32) 0))) goto LA7;
		}
		LA7: ;
		hstderrtemp_lkKJFEg9bMgFJ9bv6dAcceSQ = Dl_119820(((NI32) -12));
		{
			NI LOC11;
			NI LOC12;
			NI32 LOC13;
			LOC11 = (NI)0;
			LOC11 = Dl_190048();
			LOC12 = (NI)0;
			LOC12 = Dl_190048();
			LOC13 = (NI32)0;
			LOC13 = Dl_190038(LOC11, hstderrtemp_lkKJFEg9bMgFJ9bv6dAcceSQ, LOC12, (&hstderr_6C9cOGHD37RMptVLFSz9ckEQ), ((NI32) 0), ((NI32) 1), ((NI32) 2));
			if (!(LOC13 == ((NI32) 0))) goto LA14;
		}
		LA14: ;
	}
	oldstdoutattr_vkHOZle9bmebv77fjQpEGqw = getattributes_PnaHeFPQ8QlJWgnEjaRyCg(hstdout_Q6LBG8sK28zNgldP5VHBBA);
	oldstderrattr_ZXyw45dCi8lkCMLSUcaIBw = getattributes_PnaHeFPQ8QlJWgnEjaRyCg(hstderr_6C9cOGHD37RMptVLFSz9ckEQ);
}

NIM_EXTERNC N_NOINLINE(void, stdlib_terminalDatInit000)(void) {
if (!((T_CN3raB9atujkEiPpxYAdlgQ_2 = nimLoadLibrary((NimStringDesc*) &T_CN3raB9atujkEiPpxYAdlgQ_4))
)) nimLoadLibraryError((NimStringDesc*) &T_CN3raB9atujkEiPpxYAdlgQ_5);
	Dl_190038 = (TY_oew1DfaGl5XhHmnBK0HYXQ) nimGetProcAddr(T_CN3raB9atujkEiPpxYAdlgQ_2, "DuplicateHandle");
	Dl_190048 = (TY_uryidYWkntM7ddjZSyxvyQ) nimGetProcAddr(T_CN3raB9atujkEiPpxYAdlgQ_2, "GetCurrentProcess");
	Dl_190050 = (TY_vjGHiWUJwFzOgSxDffBb6Q) nimGetProcAddr(T_CN3raB9atujkEiPpxYAdlgQ_2, "GetConsoleScreenBufferInfo");
	Dl_190160 = (TY_oPCjp4xTgEl9a8fqSzOv8lw) nimGetProcAddr(T_CN3raB9atujkEiPpxYAdlgQ_2, "SetConsoleTextAttribute");
}