Subversion Repositories Kolibri OS

Rev

Rev 6986 | Rev 7746 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6986 Rev 7437
Line 1... Line 1...
1
enum { TAG, OPTION_VALUE, TEXT, COMMENT };
1
enum { TAG, OPTION_VALUE, TEXT, COMMENT, INLINE_COMMENT, CODE };
Line 2... Line 2...
2
 
2
 
3
//you are butifull, you are butifull
3
//you are butifull, you are butifull
4
dword ShowSource()
4
dword ShowSource()
5
{
5
{
6
	dword new_buf, new_buf_start, i;
6
	dword new_buf, new_buf_start, i;
Line 7... Line 7...
7
	byte ww, mode;
7
	int mode;
8
 
8
 
9
	if (souce_mode) return;
9
	if (souce_mode) return;
10
	souce_mode = true;
10
	souce_mode = true;
11
	new_buf = malloc(bufsize*5);
11
	new_buf = malloc(bufsize*5);
12
	new_buf_start = new_buf;
12
	new_buf_start = new_buf;
13
	header[strrchr(#header, '-')-2]=0;
13
	header[strrchr(#header, '-')-2]=0;
14
	sprintf(new_buf,"Source: %s
",#header);
14
	sprintf(new_buf,"Source: %s
",#header);
15
	new_buf += strlen(new_buf);
15
	new_buf += strlen(new_buf);
16
	for (i=bufpointer; i
16
	for (i=bufpointer; i
17
	{
-
 
18
		ww = ESBYTE[i];
17
	{
19
		switch (ww)
18
		switch (ESBYTE[i])
20
		{
19
		{
21
			case '<':
20
			case '<':
22
				if (mode == COMMENT)
21
				if (mode == COMMENT)
Line 84... Line 83...
84
					new_buf+=12;
83
					new_buf+=12;
85
					mode = TAG;
84
					mode = TAG;
86
					break;
85
					break;
87
				}
86
				}
88
			default:
87
			default:
89
				ESBYTE[new_buf] = ww;
88
				ESBYTE[new_buf] = ESBYTE[i];
90
				new_buf++;
89
				new_buf++;
91
		}
90
		}
92
	}
91
	}
93
	ESBYTE[new_buf] = 0;
92
	ESBYTE[new_buf] = 0;
94
	bufsize = new_buf - new_buf_start;
93
	bufsize = new_buf - new_buf_start;
95
	free(bufpointer);
94
	free(bufpointer);
96
	bufpointer = new_buf_start;
95
	bufpointer = new_buf_start;
97
}
96
}
98
>
97
 
-
 
98
/*
-
 
99
char* C_HL_keywords[] = {
-
 
100
    "switch", "if", "while", "for", "break", "continue", "return", "else",
-
 
101
    "union", "typedef", "static", "class", "case", "#include",
-
 
102
    "volatile", "register", "sizeof", "typedef", "union", "goto", "const", "auto",
-
 
103
    "#define", "#endif", "#error", "#ifdef", "#ifndef", "#undef", "#if", "#else", 
-
 
104
    "inline", 
-
 
105
 
-
 
106
    "int ", "dword ", "long ", "double ", "float ", "char ", "unsigned ", "signed ",
-
 
107
    "void ", "bool ", "enum ", "byte ", "word ", "struct ", "NULL", "loop", "stdcall ",
-
 
108
    ":void ", ":int ", ":bool ", ":dword ", NULL
-
 
109
};
-
 
110
 
-
 
111
dword ShowCodeSource()
-
 
112
{
-
 
113
	dword new_buf, new_buf_start, i;
-
 
114
	int mode = CODE;
-
 
115
 
-
 
116
	char spstr[64];
-
 
117
	dword keylen;
-
 
118
	dword keyn;
-
 
119
	dword keycolor;
-
 
120
 
-
 
121
	new_buf = malloc(bufsize*10);
-
 
122
	new_buf_start = new_buf;
-
 
123
	sprintf(new_buf,"C/C++/C-- source: %s
",#URL);
-
 
124
	new_buf += strlen(new_buf);
-
 
125
	for (i=bufpointer; i
-
 
126
	{
-
 
127
		if ('<' == ESBYTE[i]) {
-
 
128
			strcpy(new_buf, "<");
-
 
129
			new_buf+=4;
-
 
130
			continue;
-
 
131
		}
-
 
132
		if ('>' == ESBYTE[i]) {
-
 
133
			strcpy(new_buf, ">");
-
 
134
			new_buf+=4;
-
 
135
			continue;
-
 
136
		}
-
 
137
		if (ESBYTE[i] >= '0') && (ESBYTE[i] <= '9') && (CODE == mode) {
-
 
138
			strcpy(new_buf, "?");
-
 
139
			ESBYTE[new_buf+20] = ESBYTE[i];
-
 
140
			new_buf+=28;
-
 
141
			if (ESBYTE[i+1] == 'x') {
-
 
142
				strcpy(new_buf, "x");
-
 
143
				new_buf+=28;
-
 
144
				i++;
-
 
145
			}
-
 
146
			continue;
-
 
147
		}
-
 
148
 
-
 
149
		if (CODE == mode) && ('\"' == ESBYTE[i]) {
-
 
150
			mode = TEXT;
-
 
151
			strcpy(new_buf, "\"");
-
 
152
			new_buf+=18;
-
 
153
			continue;
-
 
154
		}
-
 
155
		if (TEXT == mode) && ('\"' == ESBYTE[i]) {
-
 
156
			mode = CODE;
-
 
157
			strcpy(new_buf, "\"");
-
 
158
			new_buf+=8;
-
 
159
			continue;		
-
 
160
		}
-
 
161
 
-
 
162
		if (! strncmp(i, "//", 2) ) && (mode == CODE) {
-
 
163
			mode = INLINE_COMMENT;
-
 
164
			strcpy(new_buf, "//");
-
 
165
			new_buf+=19;
-
 
166
			i++;
-
 
167
			continue;
-
 
168
		}
-
 
169
 
-
 
170
		if (INLINE_COMMENT == mode) {
-
 
171
			if (13 == ESBYTE[i]) {
-
 
172
				mode = CODE;
-
 
173
				strcpy(new_buf, "\13");
-
 
174
				new_buf+=8;
-
 
175
				continue;				
-
 
176
			}
-
 
177
		}
-
 
178
 
-
 
179
		if (! strncmp(i, "/*", 2) ) {
-
 
180
			mode = COMMENT;
-
 
181
			strcpy(new_buf, "/*");
-
 
182
			new_buf+=19;
-
 
183
			i++;
-
 
184
			continue;
-
 
185
		}
-
 
186
		if (! strncmp(i, "*/", 2) ) {
-
 
187
			mode = CODE;
-
 
188
			strcpy(new_buf, "*/");
-
 
189
			new_buf+=9;
-
 
190
			i++;
-
 
191
			continue;
-
 
192
		}
-
 
193
 
-
 
194
		if (CODE == mode) for (keyn=0; C_HL_keywords[keyn]!=NULL; keyn++) 
-
 
195
		{
-
 
196
			keylen = strlen(C_HL_keywords[keyn]);
-
 
197
			if (! strncmp(i, C_HL_keywords[keyn], keylen) ) {
-
 
198
 
-
 
199
				if (keyn<31) keycolor="#f00"; else keycolor="#00f";
-
 
200
				sprintf(#spstr, "%s", keycolor, C_HL_keywords[keyn]);
-
 
201
				strcpy(new_buf, #spstr);
-
 
202
 
-
 
203
				new_buf += keylen + 24;
-
 
204
				i += keylen-1;
-
 
205
				goto _CONTINUE;
-
 
206
			}
-
 
207
		}
-
 
208
		ESBYTE[new_buf] = ESBYTE[i];
-
 
209
		new_buf++;
-
 
210
		_CONTINUE:		
-
 
211
	}
-
 
212
	ESBYTE[new_buf] = 0;
-
 
213
	bufsize = new_buf - new_buf_start;
-
 
214
	free(bufpointer);
-
 
215
	bufpointer = new_buf_start;
-
 
216
}
-
 
217
*/
-
 
218
>
99
219