Type

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) français (fr) русский (ru)


The reserved word type is used to:

  • start sections for user defined types, and
  • identify a new type instance when referring to another data type.

custom type definitions

type starts a section, where the programmer may associate identifiers with new data types, especially structured data types such as records.

  1. program typeDemo(input, output, stderr);
  2.  
  3. type
  4. 	atom = record
  5. 		electrons: longword;
  6. 		neutrons: longword;
  7. 		protons: longword;
  8. 	end;
  9.  
  10. var
  11. 	x: atom;
  12.  
  13. begin
  14. 	x.protons := 1; // H
  15. 	x.neutrons := 1; // D
  16. 	x.electrons := 1; // 0
  17. end.

type aliases

In a type section aliases to already existing or previously defined data types can be declared. The following example utilizes conditional compilation to alias the largest available unsigned integer type as wholeNumber (note there is already system.nativeUInt defined).

  1. program typeAliasDemo(input, output, stderr);
  2.  
  3. type
  4. 	wholeNumber =
  5. 		{$ifdef CPU64}
  6. 			qword
  7. 		{$else}
  8. 			{$ifdef CPU32}
  9. 				longword
  10. 			{$else}
  11. 				{$fatal whole number too small}
  12. 			{$endif}
  13. 		{$endif}
  14. 		;
  15.  
  16. begin
  17. end.

type clone

In a type section a type identifier preceded by the word type actually clones the type, with its type information, but creating different types.

  1. program typeCloneDemo(input, output, stderr);
  2.  
  3. type
  4. 	wholeNumber = type qword;
  5.  
  6. begin
  7. 	writeLn('qword:       ', sysBackTraceStr(typeInfo(qword)));
  8. 	writeLn('wholeNumber: ', sysBackTraceStr(typeInfo(wholeNumber)));
  9. end.

see also