Subversion Repositories Kolibri OS

Rev

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

Rev 8728 Rev 9174
Line 27... Line 27...
27
CONST
27
CONST
Line 28... Line 28...
28
 
28
 
29
    CR = 0DX; LF = 0AX; TAB = 9X; SPACE = 20X;
29
    CR = 0DX; LF = 0AX; TAB = 9X; SPACE = 20X;
Line 30... Line -...
30
    BOM = 0FEFFX;
-
 
31
 
-
 
32
    TAB_SIZE* = 4;
30
    BOM = 0FEFFX;
Line 33... Line 31...
33
 
31
 
Line 34... Line 32...
34
    BUF_SIZE = 65536;
32
    BUF_SIZE = 65536;
Line 164... Line 162...
164
PROCEDURE getCharUTF16LE (file: tInput): INTEGER;
162
PROCEDURE getCharUTF16LE (file: tInput): INTEGER;
165
    RETURN getByte(file) + getByte(file) * 256
163
    RETURN getByte(file) + getByte(file) * 256
166
END getCharUTF16LE;
164
END getCharUTF16LE;
Line 167... Line 165...
167
 
165
 
168
 
166
 
169
PROCEDURE getString* (file: tInput; line: Lines.tLine; VAR eol: BOOLEAN): INTEGER;
167
PROCEDURE getString* (file: tInput; line: Lines.tLine; tabs: BOOLEAN; VAR eol: BOOLEAN): INTEGER;
170
VAR
168
VAR
171
    c: WCHAR;
169
    c: WCHAR;
172
    i, L, k, n: INTEGER;
170
    i, L, k, n: INTEGER;
Line 176... Line 174...
176
    eol := FALSE;
174
    eol := FALSE;
177
    n := 0;
175
    n := 0;
178
    i := ORD(file.cnt > 0) - 1;
176
    i := ORD(file.cnt > 0) - 1;
179
    WHILE (file.cnt > 0) & ~eol DO
177
    WHILE (file.cnt > 0) & ~eol DO
180
        c := WCHR(file.getChar(file) MOD 65536);
178
        c := WCHR(file.getChar(file) MOD 65536);
-
 
179
        IF c = Lines.TAB1 THEN
-
 
180
        	c := SPACE
-
 
181
        END;
181
        IF c = CR THEN
182
        IF c = CR THEN
182
            eol := TRUE;
183
            eol := TRUE;
183
            file.CR := TRUE
184
            file.CR := TRUE
184
        ELSIF (c = LF) OR (c = 0X) THEN
185
        ELSIF (c = LF) OR (c = 0X) THEN
185
            IF ~file.CR THEN
186
            IF ~file.CR THEN
186
                eol := TRUE
187
                eol := TRUE
187
            END;
188
            END;
188
            file.CR := FALSE
189
            file.CR := FALSE
189
        ELSIF c = TAB THEN
190
        ELSIF c = TAB THEN
190
            k := TAB_SIZE - i MOD TAB_SIZE;
191
            k := Lines.tab - i MOD Lines.tab;
-
 
192
            IF tabs THEN
-
 
193
                s[i] := TAB
-
 
194
            ELSE
-
 
195
                s[i] := SPACE
-
 
196
            END;
-
 
197
            INC(i);
-
 
198
            DEC(k);
191
            WHILE k > 0 DO
199
            WHILE k > 0 DO
-
 
200
                IF tabs THEN
-
 
201
                    s[i] := Lines.TAB1
-
 
202
                ELSE
192
                s[i] := SPACE;
203
                    s[i] := SPACE
-
 
204
                END;
193
                INC(i);
205
                INC(i);
194
                IF i = L THEN
206
                IF i = L THEN
195
                    Lines.concat(line, s);
207
                    Lines.concat(line, s);
196
                    INC(n, i);
208
                    INC(n, i);
197
                    i := 0
209
                    i := 0
Line 352... Line 364...
352
 
364
 
353
 
365
 
354
PROCEDURE putString* (file: tOutput; line: Lines.tLine; n: INTEGER): INTEGER;
366
PROCEDURE putString* (file: tOutput; line: Lines.tLine; n: INTEGER): INTEGER;
-
 
367
VAR
-
 
368
    i: INTEGER;
355
VAR
369
    c: WCHAR;
356
    i: INTEGER;
370
    err: BOOLEAN;
-
 
371
BEGIN
-
 
372
    i := 0;
-
 
373
    err := FALSE;
-
 
374
    WHILE (i < n) & ~err DO
357
BEGIN
375
        c := Lines.getChar(line, i);
-
 
376
        IF c # Lines.TAB1 THEN
-
 
377
            IF ~file.putChar(file, ORD(c)) THEN
-
 
378
                err := TRUE;
-
 
379
                DEC(i)
358
    i := 0;
380
            END
359
    WHILE (i < n) & file.putChar(file, ORD(Lines.getChar(line, i))) DO
381
        END;
360
        INC(i)
382
        INC(i)
361
    END
383
    END