[fpc-pascal] Constants in generics

Ryan Joseph ryan at thealchemistguild.com
Tue Nov 6 08:13:01 CET 2018


I implemented a first draft of constants (integers) in generics. My reason was specifically that I wanted a way to add methods to static arrays and generic records is the only way to accomplish this AFAIK.

If I fix this up will it be considered as a patch? I wanted to present the idea first before I spent any more time. Here’s what I has so far (on GitHub).

https://github.com/genericptr/freepascal/commit/ec518542b2da7d7f016702a82b2d05349a01a6fb

{$mode objfpc}
{$modeswitch advancedrecords}

program generic_constants;

type
	generic TList<T, U> = record
		list: array[0..U-1] of T;
		function capacity: integer;
	end;

function TList.capacity: integer;
begin
	result := U;	
end;	

var
	nums: specialize TList<integer,10>;
	strs: specialize TList<integer,4>;
begin
	writeln('sizeof:',sizeof(nums), ' capacity:',nums.capacity);
	writeln('sizeof:',sizeof(strs), ' capacity:',strs.capacity);
end.



Regards,
	Ryan Joseph




More information about the fpc-pascal mailing list