mauro russo wrote:
> is there a way in Delphi to write something similar to C++ templates?
Delphi 2007 gives you generics in .Net; Delphi 2009 gives you generics
in Win32. You get generic interfaces, classes, records, and functions.
For something more like templates, you have to do it yourself. In
particularly, you would have to instantiate each specialization
yourself. To do the specialization, you would create a new unit for each
class (or group of related classes) specialized on a given type. It
would go like this:
unit IntStringMap;
interface
type
K = Integer;
V = string;
{$I Map.interface.pas}
type
TIntStringMap = MAP;
implementation
{$I Map.implementation.pas}
end.
The code includes two other files that define the interface and
implementation of an associative-array class named MAP, and it refers to
two other types as K and V. The code before the first inclusion
determines what "K" and "V" will mean for the rest of the unit. THe
first included file could look like this:
type
MAPENTRY = record
Key: K;
Value: V;
end;
MAP = class
private
FData: array of MAPENTRY;
procedure SetValue(Key: K; NewValue: V);
function GetValue(Key: K): V;
public
property Values[const Key: K]: V read GetValue write SetValue; default;
end;
--
Rob