Class ILinksExtensions

Namespace
Platform.Data.Doublets
Assembly
Platform.Data.Doublets.dll

Represents the links extensions.

public static class ILinksExtensions
Inheritance
ILinksExtensions
Inherited Members

Methods

Alls the indices using the specified links.

public static IList<TLinkAddress>? AllIndices<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

restriction TLinkAddress[]

The restriction.

Returns

IList<TLinkAddress>

A list of t link

Type Parameters

TLinkAddress

The link.

Alls the links.

public static IList<IList<TLinkAddress>?> All<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

restriction TLinkAddress[]

The restriction.

Returns

IList<IList<TLinkAddress>>

A list of i list t link

Type Parameters

TLinkAddress

The link.

Determines whether any link is any.

public static bool AnyLinkIsAny<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] sequence) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

sequence TLinkAddress[]

The sequence.

Returns

bool

The bool

Type Parameters

TLinkAddress

Appends the structure using the specified links.

public static void AppendStructure<TLinkAddress>(this ILinks<TLinkAddress> links, StringBuilder sb, HashSet<TLinkAddress> visited, TLinkAddress linkIndex, Func<Link<TLinkAddress>, bool> isElement, Action<StringBuilder, Link<TLinkAddress>> appendElement, bool renderIndex = false, bool renderDebug = false) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

sb StringBuilder

The sb.

visited HashSet<TLinkAddress>

The visited.

linkIndex TLinkAddress

The link index.

isElement Func<Link<TLinkAddress>, bool>

The is element.

appendElement Action<StringBuilder, Link<TLinkAddress>>

The append element.

renderIndex bool

The render index.

renderDebug bool

The render debug.

Type Parameters

TLinkAddress

Exceptions

ArgumentNullException

Determines whether are values reset.

public static bool AreValuesReset<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

linkIndex TLinkAddress

The link index.

Returns

bool

The bool

Type Parameters

TLinkAddress

The link.

Requires an existing link; this is not an existence validator.

Checks whether the specified path exists.

public static bool CheckPathExistance<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] path) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
path TLinkAddress[]

Returns

bool

Type Parameters

TLinkAddress

TODO: Как так? Как то что ниже может быть корректно? Скорее всего практически не применимо Предполагалось, что можно было конвертировать формируемый в проходе через SequenceWalker Stack в конкретный путь из Source, Target до связи, но это не всегда так. TODO: Возможно нужен метод, который именно выбрасывает исключения (EnsurePathExists)

public static void ClearGarbage<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : struct, IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>
link TLinkAddress

Type Parameters

TLinkAddress
public static void ClearGarbage<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, Func<TLinkAddress, bool> isGarbage) where TLinkAddress : struct, IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>
link TLinkAddress
isGarbage Func<TLinkAddress, bool>

Type Parameters

TLinkAddress

Counts links that use the specified link.

public static TLinkAddress CountUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

The link.

Returns

TLinkAddress

Type Parameters

TLinkAddress
public static TLinkAddress CreateAndUpdate<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
source TLinkAddress
target TLinkAddress

Returns

TLinkAddress

Type Parameters

TLinkAddress

Creates a link with the specified source, target and callback.

public static TLinkAddress CreateAndUpdate<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

The source.

target TLinkAddress

The target.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Type Parameters

TLinkAddress

Returns callback control (Continue or Break). Break suppresses later callbacks; creation and uniqueness cleanup still complete. Without a handler parameter, the overload returns the final surviving address instead.

public static TLinkAddress CreatePoint<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Returns

TLinkAddress

Type Parameters

TLinkAddress

Creates a self-referencing point and invokes the optional callback.

public static TLinkAddress CreatePoint<TLinkAddress>(this ILinks<TLinkAddress> links, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Type Parameters

TLinkAddress

Decorates the with automatic uniqueness and usages resolution using the specified links.

public static ILinks<TLinkAddress> DecorateWithAutomaticUniquenessAndUsagesResolution<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

Returns

ILinks<TLinkAddress>

The links.

Type Parameters

TLinkAddress

The link.

Resolves uniqueness, contents and usages without selecting existence validation. Wrap the returned stack in LinksInnerReferenceExistenceValidator when missing internal references must be rejected before resolver searches or mutations.

public static void DeleteAllUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
linkIndex TLinkAddress

Type Parameters

TLinkAddress

Deletes links that use the specified link and invokes the optional callback.

public static TLinkAddress DeleteAllUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
linkIndex TLinkAddress
handler WriteHandler<TLinkAddress>

Returns

TLinkAddress

Type Parameters

TLinkAddress

Before execution of this method ensure that deleted link is detached (all values - source and target are reset to null) or it might enter into infinite recursion.

Deletes every link in the store.

public static void DeleteAll<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Type Parameters

TLinkAddress

Count() is the number of links, not the highest address: deleted links leave freed addresses behind. The first loop therefore finds the highest existing address, and the second deletes existing links from that address down, so links usually go before the links they use. Each deletion resets the endpoints first, which keeps the source and target indexes consistent.

TODO: Возможно есть очень простой способ это сделать. (Например просто удалить файл, или изменить его размер таким образом, чтобы удалился весь контент) Например через _header->AllocatedLinks в ResizableDirectMemoryLinks

Deletes the by query using the specified links.

public static void DeleteByQuery<TLinkAddress>(this ILinks<TLinkAddress> links, Link<TLinkAddress> query) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

query Link<TLinkAddress>

The query.

Type Parameters

TLinkAddress

The link.

Удаляет связь с указанными началом (Source) и концом (Target).

public static TLinkAddress DeleteIfExists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

Индекс связи, которая является началом удаляемой связи.

target TLinkAddress

Индекс связи, которая является концом удаляемой связи.

Returns

TLinkAddress

Type Parameters

TLinkAddress

Skips deletion when the pair is absent. A successful lookup does not supply endpoint reset or usage resolution; compose those policies or satisfy their preconditions.

Удаляет несколько связей.

public static void DeleteMany<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? deletedLinks) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

deletedLinks IList<TLinkAddress>

Список адресов связей к удалению.

Type Parameters

TLinkAddress

Deletes the links.

public static TLinkAddress Delete<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkToDelete, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

linkToDelete TLinkAddress

The link to delete.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Type Parameters

TLinkAddress

The link.

Resets endpoints for an existing link, then forwards deletion. A missing address is still forwarded; choose EnsureLinkExists, an Exists guard, or an outer policy decorator. This helper does not resolve incoming usages. The overload without a handler from Platform.Data does not perform this reset.

public static void EnforceResetValues<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
linkIndex TLinkAddress

Type Parameters

TLinkAddress

Enforces the reset values using the specified links.

public static TLinkAddress EnforceResetValues<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

linkIndex TLinkAddress

The link index.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Type Parameters

TLinkAddress

The link.

Creates all requested internal link addresses, retaining existing links.

public static void EnsureCreated<TLinkAddress>(this ILinks<TLinkAddress> links, Func<TLinkAddress> creator, params TLinkAddress[] addresses) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

creator Func<TLinkAddress>

The creator.

addresses TLinkAddress[]

The addresses.

Type Parameters

TLinkAddress

Creates all requested internal link addresses, retaining existing links.

public static void EnsureCreated<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] addresses) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

addresses TLinkAddress[]

The addresses.

Type Parameters

TLinkAddress

Throws when a link with the specified source and target exists.

public static void EnsureDoesNotExists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

The source.

target TLinkAddress

The target.

Type Parameters

TLinkAddress

Ensures the inner reference exists using the specified links.

public static void EnsureInnerReferenceExists<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? restriction, string argumentName) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

restriction IList<TLinkAddress>

The restriction.

argumentName string

The argument name.

Type Parameters

TLinkAddress

The link.

Ensures the inner reference exists using the specified links.

public static void EnsureInnerReferenceExists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress reference, string argumentName) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

reference TLinkAddress

The reference.

argumentName string

The argument name.

Type Parameters

TLinkAddress

The link.

Exceptions

ArgumentLinkDoesNotExistsException<TLinkAddress>

Ensures the link exists using the specified links.

public static void EnsureLinkExists<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

restriction IList<TLinkAddress>

The restriction.

Type Parameters

TLinkAddress

The link.

Exceptions

ArgumentLinkDoesNotExistsException<TLinkAddress>

sequence[{i}]

Ensures the link is any or exists using the specified links.

public static void EnsureLinkIsAnyOrExists<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

restriction IList<TLinkAddress>

The restriction.

Type Parameters

TLinkAddress

The link.

Exceptions

ArgumentLinkDoesNotExistsException<TLinkAddress>

sequence[{i}]

Ensures the link is any or exists using the specified links.

public static void EnsureLinkIsAnyOrExists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, string argumentName) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

link TLinkAddress

The link.

argumentName string

The argument name.

Type Parameters

TLinkAddress

The link.

Exceptions

ArgumentLinkDoesNotExistsException<TLinkAddress>

Ensures the link is itself or exists using the specified links.

public static void EnsureLinkIsItselfOrExists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, string argumentName) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

link TLinkAddress

The link.

argumentName string

The argument name.

Type Parameters

TLinkAddress

The link.

Exceptions

ArgumentLinkDoesNotExistsException<TLinkAddress>

Throws when another link uses the specified link.

public static void EnsureNoUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

The link.

Type Parameters

TLinkAddress

Creates all requested internal link addresses, retaining existing links.

public static void EnsurePointsCreated<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] addresses) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

addresses TLinkAddress[]

The addresses.

Type Parameters

TLinkAddress

Checks whether the link has the specified source and target.

public static bool Equals<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

The link.

source TLinkAddress

The source.

target TLinkAddress

The target.

Returns

bool

Type Parameters

TLinkAddress

Возвращает значение, определяющее существует ли связь с указанными началом и концом в хранилище связей.

public static bool Exists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

Начало связи.

target TLinkAddress

Конец связи.

Returns

bool

Значение, определяющее существует ли связь.

Type Parameters

TLinkAddress

Firsts the links.

public static TLinkAddress First<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

Returns

TLinkAddress

The first link.

Type Parameters

TLinkAddress

The link.

Exceptions

InvalidOperationException

В процессе поиска по хранилищу не было найдено связей.

InvalidOperationException

В хранилище нет связей.

Formats the structure using the specified links.

public static string FormatStructure<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex, Func<Link<TLinkAddress>, bool> isElement, Action<StringBuilder, Link<TLinkAddress>> appendElement, bool renderIndex = false, bool renderDebug = false) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

linkIndex TLinkAddress

The link index.

isElement Func<Link<TLinkAddress>, bool>

The is element.

appendElement Action<StringBuilder, Link<TLinkAddress>>

The append element.

renderIndex bool

The render index.

renderDebug bool

The render debug.

Returns

string

The string

Type Parameters

TLinkAddress

Formats the structure using the specified links.

public static string FormatStructure<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex, Func<Link<TLinkAddress>, bool> isElement, bool renderIndex = false, bool renderDebug = false) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

linkIndex TLinkAddress

The link index.

isElement Func<Link<TLinkAddress>, bool>

The is element.

renderIndex bool

The render index.

renderDebug bool

The render debug.

Returns

string

The string

Type Parameters

TLinkAddress

Formats the links.

public static string Format<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

link IList<TLinkAddress>

The link.

Returns

string

The string

Type Parameters

TLinkAddress

The link.

Formats the links.

public static string Format<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

link TLinkAddress

The link.

Returns

string

The string

Type Parameters

TLinkAddress

The link.

Gets the link reached by following the specified keys.

public static TLinkAddress GetByKeys<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress root, params int[] path) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
root TLinkAddress
path int[]

Returns

TLinkAddress

Type Parameters

TLinkAddress

Может потребовать дополнительного стека для PathElement's при использовании SequenceWalker.

Возвращает индекс указанной связи.

public static TLinkAddress GetIndex<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link IList<TLinkAddress>

Связь представленная списком, состоящим из её адреса и содержимого.

Returns

TLinkAddress

Индекс начальной связи для указанной связи.

Type Parameters

TLinkAddress

Создаёт связь (если она не существовала), либо возвращает индекс существующей связи с указанными Source (началом) и Target (концом).

public static TLinkAddress GetOrCreate<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

Индекс связи, которая является началом на создаваемой связи.

target TLinkAddress

Индекс связи, которая является концом для создаваемой связи.

Returns

TLinkAddress

Индекс связи, с указанным Source (началом) и Target (концом)

Type Parameters

TLinkAddress

Возвращает индекс начальной (Source) связи для указанной связи.

public static TLinkAddress GetSource<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link IList<TLinkAddress>

Связь представленная списком, состоящим из её адреса и содержимого.

Returns

TLinkAddress

Индекс начальной связи для указанной связи.

Type Parameters

TLinkAddress

Возвращает индекс начальной (Source) связи для указанной связи.

public static TLinkAddress GetSource<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

Индекс связи.

Returns

TLinkAddress

Индекс начальной связи для указанной связи.

Type Parameters

TLinkAddress

Gets the square matrix sequence element by index using the specified links.

public static TLinkAddress GetSquareMatrixSequenceElementByIndex<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress root, TLinkAddress size, TLinkAddress index) where TLinkAddress : IUnsignedNumber<TLinkAddress>, IBitwiseOperators<TLinkAddress, TLinkAddress, TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>

The links.

root TLinkAddress

The root.

size TLinkAddress

The size.

index TLinkAddress

The index.

Returns

TLinkAddress

The current link.

Type Parameters

TLinkAddress

The link.

Exceptions

ArgumentOutOfRangeException

Sequences with sizes other than powers of two are not supported.

Возвращает индекс конечной (Target) связи для указанной связи.

public static TLinkAddress GetTarget<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link IList<TLinkAddress>

Связь представленная списком, состоящим из её адреса и содержимого.

Returns

TLinkAddress

Индекс конечной связи для указанной связи.

Type Parameters

TLinkAddress

Возвращает индекс конечной (Target) связи для указанной связи.

public static TLinkAddress GetTarget<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

Индекс связи.

Returns

TLinkAddress

Индекс конечной связи для указанной связи.

Type Parameters

TLinkAddress

Checks whether another link uses the specified link.

public static bool HasUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

The link.

Returns

bool

Type Parameters

TLinkAddress
public static bool IsGarbage<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : struct, IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>
link TLinkAddress

Returns

bool

Type Parameters

TLinkAddress
public static TLinkAddress MergeAndDelete<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress oldLinkIndex, TLinkAddress newLinkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
oldLinkIndex TLinkAddress
newLinkIndex TLinkAddress

Returns

TLinkAddress

Type Parameters

TLinkAddress

Replace one link with another (replaced link is deleted, children are updated or deleted).

public static TLinkAddress MergeAndDelete<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress oldLinkIndex, TLinkAddress newLinkIndex, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
oldLinkIndex TLinkAddress
newLinkIndex TLinkAddress
handler WriteHandler<TLinkAddress>

Returns

TLinkAddress

Type Parameters

TLinkAddress
public static void MergeUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress oldLinkIndex, TLinkAddress newLinkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
oldLinkIndex TLinkAddress
newLinkIndex TLinkAddress

Type Parameters

TLinkAddress

Merging two usages graphs, all children of old link moved to be children of new link or deleted.

public static TLinkAddress MergeUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress oldLinkIndex, TLinkAddress newLinkIndex, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
oldLinkIndex TLinkAddress
newLinkIndex TLinkAddress
handler WriteHandler<TLinkAddress>

Returns

TLinkAddress

Type Parameters

TLinkAddress
public static void ResetValues<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
linkIndex TLinkAddress

Type Parameters

TLinkAddress

Resets the values using the specified links.

public static TLinkAddress ResetValues<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

linkIndex TLinkAddress

The link index.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Type Parameters

TLinkAddress

The link.

Resolves the constant as self reference using the specified links.

public static IList<TLinkAddress>? ResolveConstantAsSelfReference<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress constant, IList<TLinkAddress>? restriction, IList<TLinkAddress>? substitution) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

constant TLinkAddress

The constant.

restriction IList<TLinkAddress>

The restriction.

substitution IList<TLinkAddress>

The substitution.

Returns

IList<TLinkAddress>

A list of t link

Type Parameters

TLinkAddress

The link.

Runs the random creations using the specified links.

public static void RunRandomCreations<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress amountOfCreations) where TLinkAddress : IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>

The links.

amountOfCreations TLinkAddress

The amount of creations.

Type Parameters

TLinkAddress

The link.

Runs the random deletions using the specified links.

public static void RunRandomDeletions<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress amountOfDeletions) where TLinkAddress : IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>

The links.

amountOfDeletions TLinkAddress

The amount of deletions.

Type Parameters

TLinkAddress

The link.

Runs the random searches using the specified links.

public static void RunRandomSearches<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress amountOfSearches) where TLinkAddress : IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>

Parameters

links ILinks<TLinkAddress>

The links.

amountOfSearches TLinkAddress

The amount of searches.

Type Parameters

TLinkAddress

The link.

Выполняет поиск связи с указанными Source (началом) и Target (концом).

public static TLinkAddress SearchOrDefault<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

Индекс связи, которая является началом для искомой связи.

target TLinkAddress

Индекс связи, которая является концом для искомой связи.

Returns

TLinkAddress

Индекс искомой связи с указанными Source (началом) и Target (концом).

Type Parameters

TLinkAddress

Singles the or default using the specified links.

public static IList<TLinkAddress>? SingleOrDefault<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? query) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

The links.

query IList<TLinkAddress>

The query.

Returns

IList<TLinkAddress>

The result.

Type Parameters

TLinkAddress

The link.

public static TLinkAddress UpdateOrCreateOrGet<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target, TLinkAddress newSource, TLinkAddress newTarget) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
source TLinkAddress
target TLinkAddress
newSource TLinkAddress
newTarget TLinkAddress

Returns

TLinkAddress

Type Parameters

TLinkAddress

Обновляет связь с указанными началом (Source) и концом (Target) на связь с указанными началом (NewSource) и концом (NewTarget).

public static TLinkAddress UpdateOrCreateOrGet<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target, TLinkAddress newSource, TLinkAddress newTarget, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

source TLinkAddress

Индекс связи, которая является началом обновляемой связи.

target TLinkAddress

Индекс связи, которая является концом обновляемой связи.

newSource TLinkAddress

Индекс связи, которая является началом связи, на которую выполняется обновление.

newTarget TLinkAddress

Индекс связи, которая является концом связи, на которую выполняется обновление.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Callback control (Continue or Break), including when the pair is unchanged.

Type Parameters

TLinkAddress
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, WriteHandler<TLinkAddress>? handler, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
handler WriteHandler<TLinkAddress>
restriction TLinkAddress[]

Returns

TLinkAddress

Type Parameters

TLinkAddress
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
restriction IList<TLinkAddress>

Returns

TLinkAddress

Type Parameters

TLinkAddress

Обновляет связь с указанными началом (Source) и концом (Target) на связь с указанными началом (NewSource) и концом (NewTarget).

public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? restriction, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

restriction IList<TLinkAddress>

Ограничения на содержимое связей. Каждое ограничение может иметь значения: Constants.Null - 0-я связь, обозначающая ссылку на пустоту, Itself - требование установить ссылку на себя, 1..∞ конкретный адрес другой связи.

handler WriteHandler<TLinkAddress>

Optional callback; null continues without invoking a callback.

Returns

TLinkAddress

Индекс обновлённой связи.

Type Parameters

TLinkAddress

Обновляет связь с указанными началом (Source) и концом (Target) на связь с указанными началом (NewSource) и концом (NewTarget).

public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, TLinkAddress newSource, TLinkAddress newTarget) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>

Хранилище связей.

link TLinkAddress

Индекс обновляемой связи.

newSource TLinkAddress

Индекс связи, которая является началом связи, на которую выполняется обновление.

newTarget TLinkAddress

Индекс связи, которая является концом связи, на которую выполняется обновление.

Returns

TLinkAddress

Индекс обновлённой связи.

Type Parameters

TLinkAddress

Forwards to the selected stack without checking existence. Raw stores require a live internal address and valid endpoints. Choose an outer existence validator or check the address before updating when it may be missing.

public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, TLinkAddress newSource, TLinkAddress newTarget, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
link TLinkAddress
newSource TLinkAddress
newTarget TLinkAddress
handler WriteHandler<TLinkAddress>

Returns

TLinkAddress

Type Parameters

TLinkAddress
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>

Parameters

links ILinks<TLinkAddress>
restriction TLinkAddress[]

Returns

TLinkAddress

Type Parameters

TLinkAddress