mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-05-31 08:22:37 +02:00
* int64,qword rtti support
This commit is contained in:
parent
ff5533bbfc
commit
8c25925349
@ -48,6 +48,8 @@
|
||||
tkObject = 16;
|
||||
tkWChar = 17;
|
||||
tkBool = 18;
|
||||
tkInt64 = 19;
|
||||
tkQWord = 20;
|
||||
|
||||
otSByte = 0;
|
||||
otUByte = 1;
|
||||
@ -1121,24 +1123,63 @@
|
||||
|
||||
|
||||
procedure torddef.write_rtti_data;
|
||||
const
|
||||
trans : array[uchar..bool8bit] of byte =
|
||||
(otUByte,otUByte,otUWord,otULong,otSByte,otSWord,otSLong,otUByte);
|
||||
|
||||
procedure dointeger;
|
||||
const
|
||||
trans : array[uchar..bool8bit] of byte =
|
||||
(otUByte,otUByte,otUWord,otULong,otSByte,otSWord,otSLong,otUByte);
|
||||
begin
|
||||
write_rtti_name;
|
||||
rttilist^.concat(new(pai_const,init_8bit(byte(trans[typ]))));
|
||||
rttilist^.concat(new(pai_const,init_32bit(low)));
|
||||
rttilist^.concat(new(pai_const,init_32bit(high)));
|
||||
end;
|
||||
|
||||
begin
|
||||
case typ of
|
||||
bool8bit:
|
||||
case typ of
|
||||
s64bit :
|
||||
begin
|
||||
rttilist^.concat(new(pai_const,init_8bit(tkInt64)));
|
||||
write_rtti_name;
|
||||
{ low }
|
||||
rttilist^.concat(new(pai_const,init_32bit($0)));
|
||||
rttilist^.concat(new(pai_const,init_32bit($8000)));
|
||||
{ high }
|
||||
rttilist^.concat(new(pai_const,init_32bit($ffff)));
|
||||
rttilist^.concat(new(pai_const,init_32bit($7fff)));
|
||||
end;
|
||||
u64bit :
|
||||
begin
|
||||
rttilist^.concat(new(pai_const,init_8bit(tkQWord)));
|
||||
write_rtti_name;
|
||||
{ low }
|
||||
rttilist^.concat(new(pai_const,init_32bit($0)));
|
||||
rttilist^.concat(new(pai_const,init_32bit($0)));
|
||||
{ high }
|
||||
rttilist^.concat(new(pai_const,init_32bit($0)));
|
||||
rttilist^.concat(new(pai_const,init_32bit($8000)));
|
||||
end;
|
||||
bool8bit:
|
||||
begin
|
||||
rttilist^.concat(new(pai_const,init_8bit(tkBool)));
|
||||
uchar:
|
||||
dointeger;
|
||||
end;
|
||||
uchar:
|
||||
begin
|
||||
rttilist^.concat(new(pai_const,init_8bit(tkWChar)));
|
||||
uwidechar:
|
||||
dointeger;
|
||||
end;
|
||||
uwidechar:
|
||||
begin
|
||||
rttilist^.concat(new(pai_const,init_8bit(tkChar)));
|
||||
else
|
||||
dointeger;
|
||||
end;
|
||||
else
|
||||
begin
|
||||
rttilist^.concat(new(pai_const,init_8bit(tkInteger)));
|
||||
end;
|
||||
write_rtti_name;
|
||||
rttilist^.concat(new(pai_const,init_8bit(byte(trans[typ]))));
|
||||
rttilist^.concat(new(pai_const,init_32bit(low)));
|
||||
rttilist^.concat(new(pai_const,init_32bit(high)));
|
||||
dointeger;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
@ -4086,7 +4127,10 @@ Const local_symtable_index : longint = $8001;
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.201 2000-06-18 18:11:32 peter
|
||||
Revision 1.202 2000-06-22 20:01:57 peter
|
||||
* int64,qword rtti support
|
||||
|
||||
Revision 1.201 2000/06/18 18:11:32 peter
|
||||
* C record packing fixed to also check first entry of the record
|
||||
if bigger than the recordalignment itself
|
||||
* variant record alignment uses alignment per variant and saves the
|
||||
|
Loading…
Reference in New Issue
Block a user