Quote Originally Posted by technomage
the point about using classes is well founded I think. But using methods on vectors is nicer than using functions (which I have been using). Operator overloads are nice but are only supported by FPC, so I think they should be avoided.
That is why my operator overloads are surrounded by {$IFDEF FPC}. I also supply standard functions that do the same task.
Code:
{$IFDEF FPC}
operator + (const v1: TVector; const v2: TVector) v3: TVector;
operator - (const v1: TVector; const v2: TVector) v3: TVector;
operator * (const v1: TVector; const v2: TVector) v3: TVector;
operator * (const v1: TVector; s: TScalar) v3: TVector;
operator / (const v1: TVector; s: TScalar) v3: TVector;
operator = (const v1: TVector; const v2: TVector) b: Boolean;
{$ENDIF}  // FPC

function VectorAdd(const v1: TVector; const v2: TVector): TVector;
function VectorSubtract(const v1: TVector; const v2: TVector): TVector;
function VectorMultiply(const v1: TVector; const v2: TVector): TVector; overload;
function VectorMultiply(const v1: TVector; s: TScalar): TVector; overload;
function VectorDivide(const v1: TVector; s: TScalar): TVector;
function VectorEqual(const v1: TVector; const v2: TVector): Boolean;
[quote]If we put together a nice memory manager that all the objects in the framework can ]

See http://www.fastcode.dk for a memory manager challenge that has some good replacement memory managers. FastMM4 and BucketMM are apparently very good.