Object TPointerView
Unit
Declaration
type generic TPointerView<TElement> = object(TObject)
Description
An array view representing a slice (subsequence) of an array.
The view is read-only and can only shrink. Methods with pointer arguments are safe, such that pointers outside the view either yield an empty view or keep the view unchanged.
Methods Move* remove elements from the beginning, methods Cut* remove elements from the end, i.e.:
|----------leftOf(x)---------||--------------------rightWith(x)-----------------|
ppppppppppppppppppppppppppppppxxxxxxxxxxxxxxxxxxxxxxsssssssssssssssssssssssssssss <- the initial array view
|-------------------leftWith(x)--------------------||---------rightOf(x)--------|
Methods View* return a new view. To and From are inclusive, while Until and After are exclusive, i.e.:
|--------viewLeftOf(x)-------||------------------viewRightWith(x)---------------|
ppppppppppppppppppppppppppppppxxxxxxxxxxxxxxxxxxxxxxsssssssssssssssssssssssssssss <- the initial array view
|-------------------viewLeftWith(x)----------------||---------rightOf(x)--------|
To avoid confusion, whether indices should be 0-based or 1-based, signed or unsigned, most methods of this view are specified without refering to indices. Rather they use pointers or an amount of elements. E.g. rather than getting a slice of all elements after index k, you use moveBy to remove the first k elements.
Hierarchy
- TObject
- TPointerView
Overview
Nested Types
![]() |
PElement = ˆTElement; |
![]() |
TElementToString = function (const e: TElement): string; |
Fields
![]() |
data: pelement; |
![]() |
dataend: pelement; |
Methods
![]() |
procedure init(firstelement: PElement; length: sizeint); |
![]() |
procedure init(firstelement, behindlastelement: PElement); |
![]() |
procedure init(const a: array of TElement); |
![]() |
function length: SizeInt; |
![]() |
function isEmpty: boolean; inline; |
![]() |
function isEqual(const other: TPointerView): boolean; |
![]() |
function isEqual(const other: array of telement): boolean; |
![]() |
function isInBounds(target: PElement): boolean; inline; |
![]() |
function isOnBounds(target: PElement): boolean; inline; |
![]() |
function getEnumerator: TPointerViewEnumerator; inline; |
![]() |
function rightOfFirst(delta: SizeUInt): boolean; |
![]() |
function rightWithLast(alength: SizeUInt): boolean; |
![]() |
procedure rightWith(target: PElement); |
![]() |
procedure rightOf(target: PElement); |
![]() |
function leftOfLast(delta: SizeUInt): boolean; |
![]() |
function leftWithFirst(alength: SizeUInt): boolean; |
![]() |
procedure leftOf(target: PElement); |
![]() |
procedure leftWith(target: PElement); |
![]() |
function count(const e: TElement): SizeUInt; |
![]() |
function joinToString(elementMap: TElementToString; const sep: string): string; |
![]() |
function viewLeftWith(newLast: PElement): TPointerView; |
![]() |
function viewLeftOf(newEnd: PElement): TPointerView; |
![]() |
function viewRightWith(newStart: PElement): TPointerView; |
![]() |
function viewRightOf(newStartSkip: PElement): TPointerView; |
Description
Nested Types
![]() |
PElement = ˆTElement; |
![]() |
TElementToString = function (const e: TElement): string; |
Fields
![]() |
data: pelement; |
![]() |
dataend: pelement; |
Methods
![]() |
procedure init(firstelement: PElement; length: sizeint); |
Creates a view starting with an element of certain length. |
![]() |
procedure init(firstelement, behindlastelement: PElement); |
Creates a view starting with an element (inclusive) until another element (exclusive). |
![]() |
procedure init(const a: array of TElement); |
Creates a view for a (dynamic) array. |
![]() |
function length: SizeInt; |
Number of elements in the view. |
![]() |
function isEmpty: boolean; inline; |
Tests whether the length zero. |
![]() |
function isEqual(const other: TPointerView): boolean; |
Tests whether this view is equal to another view (same length and elements) (currently undefined if element is a string). |
![]() |
function isEqual(const other: array of telement): boolean; |
Tests whether this view is equal to another view (same length and elements) (currently undefined if element is a string). |
![]() |
function isInBounds(target: PElement): boolean; inline; |
Tests whether an element is in the view (0 <= index < length). |
![]() |
function isOnBounds(target: PElement): boolean; inline; |
Tests whether an element is on the view (0 <= index <= length). |
![]() |
function getEnumerator: TPointerViewEnumerator; inline; |
Enumerates all elements, copying each. |
![]() |
function rightOfFirst(delta: SizeUInt): boolean; |
Removes delta many elements from the beginning. |
![]() |
function rightWithLast(alength: SizeUInt): boolean; |
Take the last length elements |
![]() |
procedure rightWith(target: PElement); |
Removes all elements before the target element. |
![]() |
procedure rightOf(target: PElement); |
Removes all elements before the target element and the target element. |
![]() |
function leftOfLast(delta: SizeUInt): boolean; |
Removes delta many elements from the end. |
![]() |
function leftWithFirst(alength: SizeUInt): boolean; |
![]() |
procedure leftOf(target: PElement); |
Removes all elements after the target element and the target element. |
![]() |
procedure leftWith(target: PElement); |
Removes all elements after the target element. |
![]() |
function count(const e: TElement): SizeUInt; |
|
![]() |
function joinToString(elementMap: TElementToString; const sep: string): string; |
![]() |
function viewLeftWith(newLast: PElement): TPointerView; |
copy and leftWith. |
![]() |
function viewLeftOf(newEnd: PElement): TPointerView; |
copy and leftOf. |
![]() |
function viewRightWith(newStart: PElement): TPointerView; |
copy and rightWith. |
![]() |
function viewRightOf(newStartSkip: PElement): TPointerView; |
copy and rightOf. |
Generated by PasDoc 0.16.0.