Skip to content

Commit 7cdbb9b

Browse files
authored
Merge pull request #171 from peterdell/way2js4
Adapt remaining I/O to use IFile
2 parents cb02e26 + 0e88624 commit 7cdbb9b

File tree

14 files changed

+853
-330
lines changed

14 files changed

+853
-330
lines changed

src/Common.pas

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,8 +365,8 @@ interface
365365

366366
);
367367

368-
TString = string [MAXSTRLENGTH];
369-
TName = string [MAXNAMELENGTH];
368+
TString = string;
369+
TName = string;
370370

371371
TDefinesParam = array [1..MAXPARAMS] of TString;
372372

@@ -581,7 +581,7 @@ TIdentifier = record
581581

582582
FastMul: Integer = -1;
583583

584-
OutFile: TextFile;
584+
OutFile: ITextFile;
585585

586586
//AsmLabels: array of integer;
587587

@@ -616,7 +616,7 @@ TIdentifier = record
616616

617617
{$IFDEF USEOPTFILE}
618618

619-
OptFile: TextFile;
619+
OptFile: ITextFile;
620620

621621
{$ENDIF}
622622

src/Console.pas

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,23 @@ procedure NormVideo;
2828

2929
implementation
3030

31+
{$IFNDEF PAS2JS}
3132
uses Crt;
33+
{$ENDIF}
34+
3235

3336
procedure TextColor(color: Byte);
3437
begin
38+
{$IFNDEF PAS2JS}
3539
Crt.TextColor(color);
40+
{$ENDIF}
3641
end;
3742

3843
procedure NormVideo();
3944
begin
45+
{$IFNDEF PAS2JS}
4046
Crt.Normvideo;
47+
{$ENDIF}
4148
end;
4249

4350

src/Diagnostic.pas

Lines changed: 41 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,68 +19,75 @@ implementation
1919

2020
procedure Diagnostics;
2121
var i, CharIndex, ChildIndex: Integer;
22-
DiagFile: textfile;
22+
DiagFile: ITextFile;
2323
begin
2424

25-
AssignFile(DiagFile, ChangeFileExt( UnitName[1].Name, '.txt') );
26-
Rewrite(DiagFile);
25+
DiagFile:=TFileSystem.CreateTextFile;
26+
DiagFile.Assign(ChangeFileExt( UnitName[1].Name, '.txt') );
27+
DiagFile.Rewrite;
2728

28-
WriteLn(DiagFile);
29-
WriteLn(DiagFile, 'Token list: ');
30-
WriteLn(DiagFile);
31-
WriteLn(DiagFile, '#': 6, 'Unit': 30, 'Line': 6, 'Token': 30);
32-
WriteLn(DiagFile);
29+
DiagFile.WriteLn;
30+
DiagFile.WriteLn('Token list: ');
31+
DiagFile.WriteLn;
32+
// DiagFile.WriteLn('#' : 6, 'Unit': 30, 'Line': 6, 'Token': 30);
33+
DiagFile.Write('# ',6).Write( 'Unit',30).Write( 'Line',6).Write('Token',30).WriteLn;
34+
35+
DiagFile.WriteLn;
3336

3437
for i := 1 to NumTok do
3538
begin
36-
Write(DiagFile, i: 6, UnitName[Tok[i].UnitIndex].Name: 30, Tok[i].Line: 6, GetSpelling(i): 30);
39+
// DiagFile.Write(i: 6, UnitName[Tok[i].UnitIndex].Name: 30, Tok[i].Line: 6, GetSpelling(i): 30);
40+
DiagFile.Write(i,6).Write( UnitName[Tok[i].UnitIndex].Name, 30).Write(Tok[i].Line, 6).Write(GetSpelling(i), 30).WriteLn;
3741
if Tok[i].Kind = INTNUMBERTOK then
38-
WriteLn(DiagFile, ' = ', Tok[i].Value)
42+
DiagFile.WriteLn(' = ', IntToStr(Tok[i].Value))
3943
else if Tok[i].Kind = FRACNUMBERTOK then
40-
WriteLn(DiagFile, ' = ', Tok[i].FracValue: 8: 4)
44+
// DiagFile.WriteLn(' = ', Tok[i].FracValue: 8: 4)
45+
DiagFile.WriteLn(' = ', FloatToStr(Tok[i].FracValue))
4146
else if Tok[i].Kind = IDENTTOK then
42-
WriteLn(DiagFile, ' = ', Tok[i].Name)
47+
DiagFile.WriteLn(' = ', Tok[i].Name)
4348
else if Tok[i].Kind = CHARLITERALTOK then
44-
WriteLn(DiagFile, ' = ', Chr(Tok[i].Value))
49+
DiagFile.WriteLn(' = ', Chr(Tok[i].Value))
4550
else if Tok[i].Kind = STRINGLITERALTOK then
4651
begin
47-
Write(DiagFile, ' = ');
52+
DiagFile.Write(' = ');
4853
for CharIndex := 1 to Tok[i].StrLength do
49-
Write(DiagFile, StaticStringData[Tok[i].StrAddress - CODEORIGIN + (CharIndex - 1)]);
50-
WriteLn(DiagFile);
54+
DiagFile.Write( StaticStringData[Tok[i].StrAddress - CODEORIGIN + (CharIndex - 1)],-1);
55+
DiagFile.WriteLn;
5156
end
5257
else
53-
WriteLn(DiagFile);
58+
DiagFile.WriteLn;
5459
end;// for
5560

56-
WriteLn(DiagFile);
57-
WriteLn(DiagFile, 'Identifier list: ');
58-
WriteLn(DiagFile);
59-
WriteLn(DiagFile, '#': 6, 'Block': 6, 'Name': 30, 'Kind': 15, 'Type': 15, 'Items/Params': 15, 'Value/Addr': 15, 'Dead': 5);
60-
WriteLn(DiagFile);
61+
DiagFile.WriteLn;
62+
DiagFile.WriteLn( 'Identifier list: ');
63+
DiagFile.WriteLn;
64+
DiagFile.Write( '#',6).Write('Block',6).Write( 'Name',30).Write('Kind',15).Write( 'Type', 15).Write( 'Items/Params', 15).Write( 'Value/Addr', 15).Write( 'Dead',5).WriteLn;
65+
DiagFile.WriteLn;
6166

6267
for i := 1 to NumIdent do
6368
begin
64-
Write(DiagFile, i: 6, Ident[i].Block: 6, Ident[i].Name: 30, Spelling[Ident[i].Kind]: 15);
65-
if Ident[i].DataType <> 0 then Write(DiagFile, Spelling[Ident[i].DataType]: 15) else Write(DiagFile, 'N/A': 15);
66-
Write(DiagFile, Ident[i].NumAllocElements: 15, IntToHex(Ident[i].Value, 8): 15);
67-
if (Ident[i].Kind in [PROCEDURETOK, FUNCTIONTOK, CONSTRUCTORTOK, DESTRUCTORTOK]) and not Ident[i].IsNotDead then WriteLn(DiagFile, 'Yes': 5) else WriteLn(DiagFile, '': 5);
69+
DiagFile.Write( i, 6).Write( Ident[i].Block, 6).Write( Ident[i].Name, 30).Write( Spelling[Ident[i].Kind], 15);
70+
if Ident[i].DataType <> 0 then DiagFile.Write( Spelling[Ident[i].DataType], 15) else DiagFile.Write( 'N/A', 15);
71+
DiagFile.Write( Ident[i].NumAllocElements, 15).Write( IntToHex(Ident[i].Value, 8), 15);
72+
if (Ident[i].Kind in [PROCEDURETOK, FUNCTIONTOK, CONSTRUCTORTOK, DESTRUCTORTOK]) and not Ident[i].IsNotDead
73+
then DiagFile.Write( 'Yes', 5) else DiagFile.Write('', 5);
6874
end;
6975

70-
WriteLn(DiagFile);
71-
WriteLn(DiagFile, 'Call graph: ');
72-
WriteLn(DiagFile);
76+
DiagFile.WriteLn;
77+
DiagFile.WriteLn;
78+
DiagFile.WriteLn( 'Call graph: ');
79+
DiagFile.WriteLn;
7380

7481
for i := 1 to NumBlocks do
7582
begin
76-
Write(DiagFile, i: 6, ' ---> ');
83+
DiagFile.Write( i, 6).Write(' ---> ');
7784
for ChildIndex := 1 to CallGraph[i].NumChildren do
78-
Write(DiagFile, CallGraph[i].ChildBlock[ChildIndex]: 5);
79-
WriteLn(DiagFile);
85+
DiagFile.Write( CallGraph[i].ChildBlock[ChildIndex], 5);
86+
DiagFile.WriteLn;
8087
end;
8188

82-
WriteLn(DiagFile);
83-
CloseFile(DiagFile);
89+
DiagFile.WriteLn;
90+
DiagFile.Close;
8491

8592
end;
8693

0 commit comments

Comments
 (0)