mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-11-04 02:19:22 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
{
 | 
						|
    $Id$
 | 
						|
    This file is part of the Free Pascal run time library.
 | 
						|
    Copyright (c) 1999-2000 by Michael Van Canneyt
 | 
						|
    member of the Free Pascal development team
 | 
						|
 | 
						|
    See the file COPYING.FPC, included in this distribution,
 | 
						|
    for details about the copyright.
 | 
						|
 | 
						|
    This program is distributed in the hope that it will be useful,
 | 
						|
    but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | 
						|
 | 
						|
 **********************************************************************}
 | 
						|
 | 
						|
{ Run-Time type information routines }
 | 
						|
 | 
						|
{ The RTTI is implemented through a series of constants : }
 | 
						|
 | 
						|
Const
 | 
						|
       tkUnknown       = 0;
 | 
						|
       tkInteger       = 1;
 | 
						|
       tkChar          = 2;
 | 
						|
       tkEnumeration   = 3;
 | 
						|
       tkFloat         = 4;
 | 
						|
       tkSet           = 5;
 | 
						|
       tkMethod        = 6;
 | 
						|
       tkSString       = 7;
 | 
						|
       tkString        = tkSString;
 | 
						|
       tkLString       = 8;
 | 
						|
       tkAString       = 9;
 | 
						|
       tkWString       = 10;
 | 
						|
       tkVariant       = 11;
 | 
						|
       tkArray         = 12;
 | 
						|
       tkRecord        = 13;
 | 
						|
       tkInterface     = 14;
 | 
						|
       tkClass         = 15;
 | 
						|
       tkObject        = 16;
 | 
						|
       tkWChar         = 17;
 | 
						|
       tkBool          = 18;
 | 
						|
       tkInt64         = 19;
 | 
						|
       tkQWord         = 20;
 | 
						|
       tkDynArray      = 21;
 | 
						|
 | 
						|
{ A record is designed as follows :
 | 
						|
    1    : tkrecord
 | 
						|
    2    : Length of name string (n);
 | 
						|
    3    : name string;
 | 
						|
    3+n  : record size;
 | 
						|
    7+n  : number of elements (N)
 | 
						|
    11+n : N times : Pointer to type info
 | 
						|
                     Offset in record
 | 
						|
}
 | 
						|
 | 
						|
Type
 | 
						|
 | 
						|
TRecElem = Record
 | 
						|
  Info : Pointer;
 | 
						|
  Offset : Longint;
 | 
						|
  end;
 | 
						|
 | 
						|
TRecElemArray = Array[1..Maxint] of TRecElem;
 | 
						|
 | 
						|
PRecRec = ^TRecRec;
 | 
						|
TRecRec = record
 | 
						|
  Size,Count : Longint;
 | 
						|
  Elements : TRecElemArray;
 | 
						|
  end;
 | 
						|
 | 
						|
 | 
						|
{ An array is designed as follows :
 | 
						|
   1    : tkArray;
 | 
						|
   2    : length of name string (n);
 | 
						|
   3    : NAme string
 | 
						|
   3+n  : Element Size
 | 
						|
   7+n  : Number of elements
 | 
						|
   11+n : Pointer to type of elements
 | 
						|
}
 | 
						|
 | 
						|
PArrayRec = ^TArrayRec;
 | 
						|
TArrayRec = record
 | 
						|
  Size,Count : Longint;
 | 
						|
  Info : Pointer;
 | 
						|
  end;
 | 
						|
 | 
						|
{ The actual Routines are implemented per processor. }
 | 
						|
 | 
						|
{ Include the cpu dependant part }
 | 
						|
{$i rttip.inc}
 | 
						|
{ Include the generic part }
 | 
						|
{$i genrtti.inc}
 | 
						|
 | 
						|
{
 | 
						|
  $Log$
 | 
						|
  Revision 1.5  2001-11-17 16:56:08  florian
 | 
						|
    * init and final code in genrtti.inc updated
 | 
						|
 | 
						|
  Revision 1.4  2001/04/23 18:25:45  peter
 | 
						|
    * m68k updates
 | 
						|
 | 
						|
  Revision 1.3  2000/10/21 18:20:17  florian
 | 
						|
    * a lot of small changes:
 | 
						|
       - setlength is internal
 | 
						|
       - win32 graph unit extended
 | 
						|
       ....
 | 
						|
 | 
						|
  Revision 1.2  2000/07/13 11:33:45  michael
 | 
						|
  + removed logs
 | 
						|
 | 
						|
}
 |