it's a record:
Code:
TG2Vec2 = record
  strict private
    function GetArr(const Index: Integer): Single; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    procedure SetArr(const Index: Integer; const Value: Single); {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
  public
    x, y: Single;
    property Arr[const Index: Integer]: Single read GetArr write SetArr; default;
    class operator Negative(const v: TG2Vec2): TG2Vec2;
    class operator Explicit(const v: TG2Vec2): TG2Vec2Ref;
    class operator Explicit(const v: TG2Vec2Ref): TG2Vec2;
    class operator Explicit(const v: TPoint): TG2Vec2;
    class operator Implicit(const v: TG2Vec2): TG2Vec2Ref;
    class operator Implicit(const v: TG2Vec2Ref): TG2Vec2;
    class operator Implicit(const v: TPoint): TG2Vec2;
    class operator Equal(const v1, v2: TG2Vec2): Boolean;
    class operator NotEqual(const v1, v2: TG2Vec2): Boolean;
    class operator Add(const v1, v2: TG2Vec2): TG2Vec2;
    class operator Add(const v: TG2Vec2; const s: Single): TG2Vec2;
    class operator Subtract(const v1, v2: TG2Vec2): TG2Vec2;
    class operator Subtract(const v: TG2Vec2; const s: Single): TG2Vec2;
    class operator Multiply(const v1, v2: TG2Vec2): Single;
    class operator Multiply(const v: TG2Vec2; const s: Single): TG2Vec2;
    class operator Multiply(const v: TG2Vec2; const m: TG2Mat): TG2Vec2;
    class operator Multiply(const v: TG2Vec2; const m: TG2Mat2): TG2Vec2;
    class operator Divide(const v: TG2Vec2; const s: Single): TG2Vec2;
    procedure SetValue(const _X, _Y: Single); {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    procedure Normalize; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Normalized: TG2Vec2; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Len: Single; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function LenSq: Single; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Dot(const v: TG2Vec2): Single; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Cross(const v: TG2Vec2): Single; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Angle(const v: TG2Vec2): Single; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Perp: TG2Vec2; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Reflect(const n: TG2Vec2): TG2Vec2; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
    function Rotate(const Angle: Single): TG2Vec2; {$IFDEF G2_USE_INLINE} inline; {$ENDIF}
  end;
if you want I could just attach the whole math unit here.