|  | @@ -341,6 +341,9 @@ interface
 | 
	
		
			
				|  |  |      { returns true if def is a C "block" }
 | 
	
		
			
				|  |  |      function is_block(def: tdef): boolean;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    { returns the TTypeKind value of the def }
 | 
	
		
			
				|  |  | +    function get_typekind(def: tdef): byte;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  implementation
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      uses
 | 
	
	
		
			
				|  | @@ -1457,4 +1460,104 @@ implementation
 | 
	
		
			
				|  |  |          result:=(def.typ=procvardef) and (po_is_block in tprocvardef(def).procoptions)
 | 
	
		
			
				|  |  |        end;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    function get_typekind(def:tdef):byte;
 | 
	
		
			
				|  |  | +      begin
 | 
	
		
			
				|  |  | +        case def.typ of
 | 
	
		
			
				|  |  | +          arraydef:
 | 
	
		
			
				|  |  | +            if ado_IsDynamicArray in tarraydef(def).arrayoptions then
 | 
	
		
			
				|  |  | +              result:=tkDynArray
 | 
	
		
			
				|  |  | +            else
 | 
	
		
			
				|  |  | +              result:=tkArray;
 | 
	
		
			
				|  |  | +          recorddef:
 | 
	
		
			
				|  |  | +            result:=tkRecord;
 | 
	
		
			
				|  |  | +          pointerdef:
 | 
	
		
			
				|  |  | +            result:=tkPointer;
 | 
	
		
			
				|  |  | +          orddef:
 | 
	
		
			
				|  |  | +            case torddef(def).ordtype of
 | 
	
		
			
				|  |  | +              u8bit,
 | 
	
		
			
				|  |  | +              u16bit,
 | 
	
		
			
				|  |  | +              u32bit,
 | 
	
		
			
				|  |  | +              s8bit,
 | 
	
		
			
				|  |  | +              s16bit,
 | 
	
		
			
				|  |  | +              s32bit:
 | 
	
		
			
				|  |  | +                result:=tkInteger;
 | 
	
		
			
				|  |  | +              u64bit:
 | 
	
		
			
				|  |  | +                result:=tkQWord;
 | 
	
		
			
				|  |  | +              s64bit:
 | 
	
		
			
				|  |  | +                result:=tkInt64;
 | 
	
		
			
				|  |  | +              pasbool8,
 | 
	
		
			
				|  |  | +              pasbool16,
 | 
	
		
			
				|  |  | +              pasbool32,
 | 
	
		
			
				|  |  | +              pasbool64,
 | 
	
		
			
				|  |  | +              bool8bit,
 | 
	
		
			
				|  |  | +              bool16bit,
 | 
	
		
			
				|  |  | +              bool32bit,
 | 
	
		
			
				|  |  | +              bool64bit:
 | 
	
		
			
				|  |  | +                result:=tkBool;
 | 
	
		
			
				|  |  | +              uchar:
 | 
	
		
			
				|  |  | +                result:=tkChar;
 | 
	
		
			
				|  |  | +              uwidechar:
 | 
	
		
			
				|  |  | +                result:=tkWChar;
 | 
	
		
			
				|  |  | +              scurrency:
 | 
	
		
			
				|  |  | +                result:=tkFloat;
 | 
	
		
			
				|  |  | +              else
 | 
	
		
			
				|  |  | +                result:=tkUnknown;
 | 
	
		
			
				|  |  | +            end;
 | 
	
		
			
				|  |  | +          stringdef:
 | 
	
		
			
				|  |  | +            case tstringdef(def).stringtype of
 | 
	
		
			
				|  |  | +              st_shortstring:
 | 
	
		
			
				|  |  | +                result:=tkSString;
 | 
	
		
			
				|  |  | +              st_longstring:
 | 
	
		
			
				|  |  | +                result:=tkLString;
 | 
	
		
			
				|  |  | +              st_ansistring:
 | 
	
		
			
				|  |  | +                result:=tkAString;
 | 
	
		
			
				|  |  | +              st_widestring:
 | 
	
		
			
				|  |  | +                result:=tkWString;
 | 
	
		
			
				|  |  | +              st_unicodestring:
 | 
	
		
			
				|  |  | +                result:=tkUString;
 | 
	
		
			
				|  |  | +              else
 | 
	
		
			
				|  |  | +                result:=tkUnknown;
 | 
	
		
			
				|  |  | +            end;
 | 
	
		
			
				|  |  | +          enumdef:
 | 
	
		
			
				|  |  | +            result:=tkEnumeration;
 | 
	
		
			
				|  |  | +          objectdef:
 | 
	
		
			
				|  |  | +            case tobjectdef(def).objecttype of
 | 
	
		
			
				|  |  | +              odt_class,
 | 
	
		
			
				|  |  | +              odt_javaclass:
 | 
	
		
			
				|  |  | +                result:=tkClass;
 | 
	
		
			
				|  |  | +              odt_object:
 | 
	
		
			
				|  |  | +                result:=tkObject;
 | 
	
		
			
				|  |  | +              odt_interfacecom,
 | 
	
		
			
				|  |  | +              odt_dispinterface,
 | 
	
		
			
				|  |  | +              odt_interfacejava:
 | 
	
		
			
				|  |  | +                result:=tkInterface;
 | 
	
		
			
				|  |  | +              odt_interfacecorba:
 | 
	
		
			
				|  |  | +                result:=tkInterfaceCorba;
 | 
	
		
			
				|  |  | +              odt_helper:
 | 
	
		
			
				|  |  | +                result:=tkHelper;
 | 
	
		
			
				|  |  | +              else
 | 
	
		
			
				|  |  | +                result:=tkUnknown;
 | 
	
		
			
				|  |  | +            end;
 | 
	
		
			
				|  |  | +          { currently tkFile is not used }
 | 
	
		
			
				|  |  | +          {filedef:
 | 
	
		
			
				|  |  | +            result:=tkFile;}
 | 
	
		
			
				|  |  | +          setdef:
 | 
	
		
			
				|  |  | +            result:=tkSet;
 | 
	
		
			
				|  |  | +          procvardef:
 | 
	
		
			
				|  |  | +            if tprocvardef(def).is_methodpointer then
 | 
	
		
			
				|  |  | +              result:=tkMethod
 | 
	
		
			
				|  |  | +            else
 | 
	
		
			
				|  |  | +              result:=tkProcVar;
 | 
	
		
			
				|  |  | +          floatdef:
 | 
	
		
			
				|  |  | +            result:=tkFloat;
 | 
	
		
			
				|  |  | +          classrefdef:
 | 
	
		
			
				|  |  | +            result:=tkClassRef;
 | 
	
		
			
				|  |  | +          variantdef:
 | 
	
		
			
				|  |  | +            result:=tkVariant;
 | 
	
		
			
				|  |  | +          else
 | 
	
		
			
				|  |  | +            result:=tkUnknown;
 | 
	
		
			
				|  |  | +        end;
 | 
	
		
			
				|  |  | +      end;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  end.
 |