mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 10:59:18 +02:00
compiler: read and write full token size instead of 1 byte because TToken has more than 255 elements now
git-svn-id: trunk@16642 -
This commit is contained in:
parent
fb2c465f22
commit
77fa5b7fb9
@ -2045,18 +2045,20 @@ In case not, the value returned can be arbitrary.
|
|||||||
|
|
||||||
procedure tscannerfile.recordtoken;
|
procedure tscannerfile.recordtoken;
|
||||||
var
|
var
|
||||||
a : array[0..1] of byte;
|
t : ttoken;
|
||||||
|
s : tspecialgenerictoken;
|
||||||
len : sizeint;
|
len : sizeint;
|
||||||
begin
|
begin
|
||||||
if not assigned(recordtokenbuf) then
|
if not assigned(recordtokenbuf) then
|
||||||
internalerror(200511176);
|
internalerror(200511176);
|
||||||
|
t:=_GENERICSPECIALTOKEN;
|
||||||
{ settings changed? }
|
{ settings changed? }
|
||||||
if CompareByte(current_settings,last_settings,sizeof(current_settings))<>0 then
|
if CompareByte(current_settings,last_settings,sizeof(current_settings))<>0 then
|
||||||
begin
|
begin
|
||||||
{ use a special token to record it }
|
{ use a special token to record it }
|
||||||
a[0]:=byte(_GENERICSPECIALTOKEN);
|
s:=ST_LOADSETTINGS;
|
||||||
a[1]:=byte(ST_LOADSETTINGS);
|
recordtokenbuf.write(t,SizeOf(t));
|
||||||
recordtokenbuf.write(a,2);
|
recordtokenbuf.write(s,1);
|
||||||
recordtokenbuf.write(current_settings,sizeof(current_settings));
|
recordtokenbuf.write(current_settings,sizeof(current_settings));
|
||||||
last_settings:=current_settings;
|
last_settings:=current_settings;
|
||||||
end;
|
end;
|
||||||
@ -2064,32 +2066,32 @@ In case not, the value returned can be arbitrary.
|
|||||||
{ file pos changes? }
|
{ file pos changes? }
|
||||||
if current_tokenpos.line<>last_filepos.line then
|
if current_tokenpos.line<>last_filepos.line then
|
||||||
begin
|
begin
|
||||||
a[0]:=byte(_GENERICSPECIALTOKEN);
|
s:=ST_LINE;
|
||||||
a[1]:=byte(ST_LINE);
|
recordtokenbuf.write(t,SizeOf(t));
|
||||||
recordtokenbuf.write(a,2);
|
recordtokenbuf.write(s,1);
|
||||||
recordtokenbuf.write(current_tokenpos.line,sizeof(current_tokenpos.line));
|
recordtokenbuf.write(current_tokenpos.line,sizeof(current_tokenpos.line));
|
||||||
last_filepos.line:=current_tokenpos.line;
|
last_filepos.line:=current_tokenpos.line;
|
||||||
end;
|
end;
|
||||||
if current_tokenpos.column<>last_filepos.column then
|
if current_tokenpos.column<>last_filepos.column then
|
||||||
begin
|
begin
|
||||||
a[0]:=byte(_GENERICSPECIALTOKEN);
|
s:=ST_COLUMN;
|
||||||
a[1]:=byte(ST_COLUMN);
|
recordtokenbuf.write(t,SizeOf(t));
|
||||||
recordtokenbuf.write(a,2);
|
recordtokenbuf.write(s,1);
|
||||||
recordtokenbuf.write(current_tokenpos.column,sizeof(current_tokenpos.column));
|
recordtokenbuf.write(current_tokenpos.column,sizeof(current_tokenpos.column));
|
||||||
last_filepos.column:=current_tokenpos.column;
|
last_filepos.column:=current_tokenpos.column;
|
||||||
end;
|
end;
|
||||||
if current_tokenpos.fileindex<>last_filepos.fileindex then
|
if current_tokenpos.fileindex<>last_filepos.fileindex then
|
||||||
begin
|
begin
|
||||||
a[0]:=byte(_GENERICSPECIALTOKEN);
|
s:=ST_FILEINDEX;
|
||||||
a[1]:=byte(ST_FILEINDEX);
|
recordtokenbuf.write(t,SizeOf(t));
|
||||||
recordtokenbuf.write(a,2);
|
recordtokenbuf.write(s,1);
|
||||||
recordtokenbuf.write(current_tokenpos.fileindex,sizeof(current_tokenpos.fileindex));
|
recordtokenbuf.write(current_tokenpos.fileindex,sizeof(current_tokenpos.fileindex));
|
||||||
last_filepos.fileindex:=current_tokenpos.fileindex;
|
last_filepos.fileindex:=current_tokenpos.fileindex;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
recordtokenbuf.write(token,1);
|
recordtokenbuf.write(token,SizeOf(token));
|
||||||
if token=_ID then
|
if token=_ID then
|
||||||
recordtokenbuf.write(idtoken,1);
|
recordtokenbuf.write(idtoken,SizeOf(idtoken));
|
||||||
case token of
|
case token of
|
||||||
_CWCHAR,
|
_CWCHAR,
|
||||||
_CWSTRING :
|
_CWSTRING :
|
||||||
@ -2168,9 +2170,9 @@ In case not, the value returned can be arbitrary.
|
|||||||
end;
|
end;
|
||||||
repeat
|
repeat
|
||||||
{ load token from the buffer }
|
{ load token from the buffer }
|
||||||
replaytokenbuf.read(token,1);
|
replaytokenbuf.read(token,SizeOf(token));
|
||||||
if token=_ID then
|
if token=_ID then
|
||||||
replaytokenbuf.read(idtoken,1)
|
replaytokenbuf.read(idtoken,SizeOf(idtoken))
|
||||||
else
|
else
|
||||||
idtoken:=_NOID;
|
idtoken:=_NOID;
|
||||||
case token of
|
case token of
|
||||||
|
Loading…
Reference in New Issue
Block a user