Class ILinksExtensions
- Namespace
- Platform.Data.Doublets
- Assembly
- Platform.Data.Doublets.dll
Represents the links extensions.
public static class ILinksExtensions
- Inheritance
-
ILinksExtensions
- Inherited Members
Methods
AllIndices<TLinkAddress>(ILinks<TLinkAddress>, params TLinkAddress[])
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
linksILinks<TLinkAddress>The links.
restrictionTLinkAddress[]The restriction.
Returns
- IList<TLinkAddress>
A list of t link
Type Parameters
TLinkAddressThe link.
All<TLinkAddress>(ILinks<TLinkAddress>, params TLinkAddress[])
Alls the links.
public static IList<IList<TLinkAddress>?> All<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>The links.
restrictionTLinkAddress[]The restriction.
Returns
Type Parameters
TLinkAddressThe link.
AnyLinkIsAny<TLinkAddress>(ILinks<TLinkAddress>, params TLinkAddress[])
Determines whether any link is any.
public static bool AnyLinkIsAny<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] sequence) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>The links.
sequenceTLinkAddress[]The sequence.
Returns
- bool
The bool
Type Parameters
TLinkAddress
AppendStructure<TLinkAddress>(ILinks<TLinkAddress>, StringBuilder, HashSet<TLinkAddress>, TLinkAddress, Func<Link<TLinkAddress>, bool>, Action<StringBuilder, Link<TLinkAddress>>, bool, bool)
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
linksILinks<TLinkAddress>The links.
sbStringBuilderThe sb.
visitedHashSet<TLinkAddress>The visited.
linkIndexTLinkAddressThe link index.
isElementFunc<Link<TLinkAddress>, bool>The is element.
appendElementAction<StringBuilder, Link<TLinkAddress>>The append element.
renderIndexboolThe render index.
renderDebugboolThe render debug.
Type Parameters
TLinkAddress
Exceptions
AreValuesReset<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
Determines whether are values reset.
public static bool AreValuesReset<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>The links.
linkIndexTLinkAddressThe link index.
Returns
- bool
The bool
Type Parameters
TLinkAddressThe link.
Remarks
Requires an existing link; this is not an existence validator.
CheckPathExistance<TLinkAddress>(ILinks<TLinkAddress>, params TLinkAddress[])
Checks whether the specified path exists.
public static bool CheckPathExistance<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] path) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>pathTLinkAddress[]
Returns
Type Parameters
TLinkAddress
Remarks
TODO: Как так? Как то что ниже может быть корректно? Скорее всего практически не применимо Предполагалось, что можно было конвертировать формируемый в проходе через SequenceWalker Stack в конкретный путь из Source, Target до связи, но это не всегда так. TODO: Возможно нужен метод, который именно выбрасывает исключения (EnsurePathExists)
ClearGarbage<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
public static void ClearGarbage<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : struct, IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>
Parameters
linksILinks<TLinkAddress>linkTLinkAddress
Type Parameters
TLinkAddress
ClearGarbage<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, Func<TLinkAddress, bool>)
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
Type Parameters
TLinkAddress
CountUsages<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
Counts links that use the specified link.
public static TLinkAddress CountUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressThe link.
Returns
- TLinkAddress
Type Parameters
TLinkAddress
CreateAndUpdate<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
public static TLinkAddress CreateAndUpdate<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>sourceTLinkAddresstargetTLinkAddress
Returns
- TLinkAddress
Type Parameters
TLinkAddress
CreateAndUpdate<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressThe source.
targetTLinkAddressThe target.
handlerWriteHandler<TLinkAddress>Optional callback; null continues without invoking a callback.
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Remarks
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.
CreatePoint<TLinkAddress>(ILinks<TLinkAddress>)
public static TLinkAddress CreatePoint<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>
Returns
- TLinkAddress
Type Parameters
TLinkAddress
CreatePoint<TLinkAddress>(ILinks<TLinkAddress>, WriteHandler<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
linksILinks<TLinkAddress>Хранилище связей.
handlerWriteHandler<TLinkAddress>Optional callback; null continues without invoking a callback.
Returns
- TLinkAddress
Type Parameters
TLinkAddress
DecorateWithAutomaticUniquenessAndUsagesResolution<TLinkAddress>(ILinks<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
linksILinks<TLinkAddress>The links.
Returns
- ILinks<TLinkAddress>
The links.
Type Parameters
TLinkAddressThe link.
Remarks
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.
DeleteAllUsages<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
public static void DeleteAllUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>linkIndexTLinkAddress
Type Parameters
TLinkAddress
DeleteAllUsages<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>linkIndexTLinkAddresshandlerWriteHandler<TLinkAddress>
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Remarks
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.
DeleteAll<TLinkAddress>(ILinks<TLinkAddress>)
Deletes every link in the store.
public static void DeleteAll<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>
Type Parameters
TLinkAddress
Remarks
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
DeleteByQuery<TLinkAddress>(ILinks<TLinkAddress>, Link<TLinkAddress>)
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
Type Parameters
TLinkAddressThe link.
DeleteIfExists<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
Удаляет связь с указанными началом (Source) и концом (Target).
public static TLinkAddress DeleteIfExists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressИндекс связи, которая является началом удаляемой связи.
targetTLinkAddressИндекс связи, которая является концом удаляемой связи.
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Remarks
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.
DeleteMany<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
Удаляет несколько связей.
public static void DeleteMany<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? deletedLinks) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
deletedLinksIList<TLinkAddress>Список адресов связей к удалению.
Type Parameters
TLinkAddress
Delete<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, WriteHandler<TLinkAddress>?)
Deletes the links.
public static TLinkAddress Delete<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkToDelete, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>The links.
linkToDeleteTLinkAddressThe link to delete.
handlerWriteHandler<TLinkAddress>Optional callback; null continues without invoking a callback.
Returns
- TLinkAddress
Type Parameters
TLinkAddressThe link.
Remarks
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.
EnforceResetValues<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
public static void EnforceResetValues<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>linkIndexTLinkAddress
Type Parameters
TLinkAddress
EnforceResetValues<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>The links.
linkIndexTLinkAddressThe link index.
handlerWriteHandler<TLinkAddress>Optional callback; null continues without invoking a callback.
Returns
- TLinkAddress
Type Parameters
TLinkAddressThe link.
EnsureCreated<TLinkAddress>(ILinks<TLinkAddress>, Func<TLinkAddress>, params TLinkAddress[])
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
linksILinks<TLinkAddress>Хранилище связей.
creatorFunc<TLinkAddress>The creator.
addressesTLinkAddress[]The addresses.
Type Parameters
TLinkAddress
EnsureCreated<TLinkAddress>(ILinks<TLinkAddress>, params 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
linksILinks<TLinkAddress>Хранилище связей.
addressesTLinkAddress[]The addresses.
Type Parameters
TLinkAddress
EnsureDoesNotExists<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, 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
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressThe source.
targetTLinkAddressThe target.
Type Parameters
TLinkAddress
EnsureInnerReferenceExists<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?, string)
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
linksILinks<TLinkAddress>The links.
restrictionIList<TLinkAddress>The restriction.
argumentNamestringThe argument name.
Type Parameters
TLinkAddressThe link.
EnsureInnerReferenceExists<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, string)
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
linksILinks<TLinkAddress>The links.
referenceTLinkAddressThe reference.
argumentNamestringThe argument name.
Type Parameters
TLinkAddressThe link.
Exceptions
- ArgumentLinkDoesNotExistsException<TLinkAddress>
EnsureLinkExists<TLinkAddress>(ILinks<TLinkAddress>, IList<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
Type Parameters
TLinkAddressThe link.
Exceptions
- ArgumentLinkDoesNotExistsException<TLinkAddress>
sequence[{i}]
EnsureLinkIsAnyOrExists<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
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
Type Parameters
TLinkAddressThe link.
Exceptions
- ArgumentLinkDoesNotExistsException<TLinkAddress>
sequence[{i}]
EnsureLinkIsAnyOrExists<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, string)
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
linksILinks<TLinkAddress>The links.
linkTLinkAddressThe link.
argumentNamestringThe argument name.
Type Parameters
TLinkAddressThe link.
Exceptions
- ArgumentLinkDoesNotExistsException<TLinkAddress>
EnsureLinkIsItselfOrExists<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, string)
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
linksILinks<TLinkAddress>The links.
linkTLinkAddressThe link.
argumentNamestringThe argument name.
Type Parameters
TLinkAddressThe link.
Exceptions
- ArgumentLinkDoesNotExistsException<TLinkAddress>
EnsureNoUsages<TLinkAddress>(ILinks<TLinkAddress>, 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
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressThe link.
Type Parameters
TLinkAddress
EnsurePointsCreated<TLinkAddress>(ILinks<TLinkAddress>, params 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
linksILinks<TLinkAddress>Хранилище связей.
addressesTLinkAddress[]The addresses.
Type Parameters
TLinkAddress
Equals<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, 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
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressThe link.
sourceTLinkAddressThe source.
targetTLinkAddressThe target.
Returns
Type Parameters
TLinkAddress
Exists<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
Возвращает значение, определяющее существует ли связь с указанными началом и концом в хранилище связей.
public static bool Exists<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressНачало связи.
targetTLinkAddressКонец связи.
Returns
- bool
Значение, определяющее существует ли связь.
Type Parameters
TLinkAddress
First<TLinkAddress>(ILinks<TLinkAddress>)
Firsts the links.
public static TLinkAddress First<TLinkAddress>(this ILinks<TLinkAddress> links) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>The links.
Returns
- TLinkAddress
The first link.
Type Parameters
TLinkAddressThe link.
Exceptions
- InvalidOperationException
В процессе поиска по хранилищу не было найдено связей.
- InvalidOperationException
В хранилище нет связей.
FormatStructure<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, Func<Link<TLinkAddress>, bool>, Action<StringBuilder, Link<TLinkAddress>>, bool, bool)
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
linksILinks<TLinkAddress>The links.
linkIndexTLinkAddressThe link index.
isElementFunc<Link<TLinkAddress>, bool>The is element.
appendElementAction<StringBuilder, Link<TLinkAddress>>The append element.
renderIndexboolThe render index.
renderDebugboolThe render debug.
Returns
- string
The string
Type Parameters
TLinkAddress
FormatStructure<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, Func<Link<TLinkAddress>, bool>, bool, bool)
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
linksILinks<TLinkAddress>The links.
linkIndexTLinkAddressThe link index.
isElementFunc<Link<TLinkAddress>, bool>The is element.
renderIndexboolThe render index.
renderDebugboolThe render debug.
Returns
- string
The string
Type Parameters
TLinkAddress
Format<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
Formats the links.
public static string Format<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
Returns
- string
The string
Type Parameters
TLinkAddressThe link.
Format<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
Formats the links.
public static string Format<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>The links.
linkTLinkAddressThe link.
Returns
- string
The string
Type Parameters
TLinkAddressThe link.
GetByKeys<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, params int[])
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
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Remarks
Может потребовать дополнительного стека для PathElement's при использовании SequenceWalker.
GetIndex<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
Возвращает индекс указанной связи.
public static TLinkAddress GetIndex<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
linkIList<TLinkAddress>Связь представленная списком, состоящим из её адреса и содержимого.
Returns
- TLinkAddress
Индекс начальной связи для указанной связи.
Type Parameters
TLinkAddress
GetOrCreate<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
Создаёт связь (если она не существовала), либо возвращает индекс существующей связи с указанными Source (началом) и Target (концом).
public static TLinkAddress GetOrCreate<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressИндекс связи, которая является началом на создаваемой связи.
targetTLinkAddressИндекс связи, которая является концом для создаваемой связи.
Returns
- TLinkAddress
Индекс связи, с указанным Source (началом) и Target (концом)
Type Parameters
TLinkAddress
GetSource<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
Возвращает индекс начальной (Source) связи для указанной связи.
public static TLinkAddress GetSource<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
linkIList<TLinkAddress>Связь представленная списком, состоящим из её адреса и содержимого.
Returns
- TLinkAddress
Индекс начальной связи для указанной связи.
Type Parameters
TLinkAddress
GetSource<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
Возвращает индекс начальной (Source) связи для указанной связи.
public static TLinkAddress GetSource<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressИндекс связи.
Returns
- TLinkAddress
Индекс начальной связи для указанной связи.
Type Parameters
TLinkAddress
GetSquareMatrixSequenceElementByIndex<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, 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
linksILinks<TLinkAddress>The links.
rootTLinkAddressThe root.
sizeTLinkAddressThe size.
indexTLinkAddressThe index.
Returns
- TLinkAddress
The current link.
Type Parameters
TLinkAddressThe link.
Exceptions
- ArgumentOutOfRangeException
Sequences with sizes other than powers of two are not supported.
GetTarget<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
Возвращает индекс конечной (Target) связи для указанной связи.
public static TLinkAddress GetTarget<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
linkIList<TLinkAddress>Связь представленная списком, состоящим из её адреса и содержимого.
Returns
- TLinkAddress
Индекс конечной связи для указанной связи.
Type Parameters
TLinkAddress
GetTarget<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
Возвращает индекс конечной (Target) связи для указанной связи.
public static TLinkAddress GetTarget<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressИндекс связи.
Returns
- TLinkAddress
Индекс конечной связи для указанной связи.
Type Parameters
TLinkAddress
HasUsages<TLinkAddress>(ILinks<TLinkAddress>, 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
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressThe link.
Returns
Type Parameters
TLinkAddress
IsGarbage<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
public static bool IsGarbage<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link) where TLinkAddress : struct, IUnsignedNumber<TLinkAddress>, IComparisonOperators<TLinkAddress, TLinkAddress, bool>
Parameters
linksILinks<TLinkAddress>linkTLinkAddress
Returns
Type Parameters
TLinkAddress
MergeAndDelete<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
public static TLinkAddress MergeAndDelete<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress oldLinkIndex, TLinkAddress newLinkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>oldLinkIndexTLinkAddressnewLinkIndexTLinkAddress
Returns
- TLinkAddress
Type Parameters
TLinkAddress
MergeAndDelete<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>oldLinkIndexTLinkAddressnewLinkIndexTLinkAddresshandlerWriteHandler<TLinkAddress>
Returns
- TLinkAddress
Type Parameters
TLinkAddress
MergeUsages<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
public static void MergeUsages<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress oldLinkIndex, TLinkAddress newLinkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>oldLinkIndexTLinkAddressnewLinkIndexTLinkAddress
Type Parameters
TLinkAddress
MergeUsages<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>oldLinkIndexTLinkAddressnewLinkIndexTLinkAddresshandlerWriteHandler<TLinkAddress>
Returns
- TLinkAddress
Type Parameters
TLinkAddress
ResetValues<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
public static void ResetValues<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress linkIndex) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>linkIndexTLinkAddress
Type Parameters
TLinkAddress
ResetValues<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>The links.
linkIndexTLinkAddressThe link index.
handlerWriteHandler<TLinkAddress>Optional callback; null continues without invoking a callback.
Returns
- TLinkAddress
Type Parameters
TLinkAddressThe link.
ResolveConstantAsSelfReference<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, IList<TLinkAddress>?, IList<TLinkAddress>?)
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
linksILinks<TLinkAddress>The links.
constantTLinkAddressThe constant.
restrictionIList<TLinkAddress>The restriction.
substitutionIList<TLinkAddress>The substitution.
Returns
- IList<TLinkAddress>
A list of t link
Type Parameters
TLinkAddressThe link.
RunRandomCreations<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
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
linksILinks<TLinkAddress>The links.
amountOfCreationsTLinkAddressThe amount of creations.
Type Parameters
TLinkAddressThe link.
RunRandomDeletions<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
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
linksILinks<TLinkAddress>The links.
amountOfDeletionsTLinkAddressThe amount of deletions.
Type Parameters
TLinkAddressThe link.
RunRandomSearches<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress)
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
linksILinks<TLinkAddress>The links.
amountOfSearchesTLinkAddressThe amount of searches.
Type Parameters
TLinkAddressThe link.
SearchOrDefault<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress)
Выполняет поиск связи с указанными Source (началом) и Target (концом).
public static TLinkAddress SearchOrDefault<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressИндекс связи, которая является началом для искомой связи.
targetTLinkAddressИндекс связи, которая является концом для искомой связи.
Returns
- TLinkAddress
Индекс искомой связи с указанными Source (началом) и Target (концом).
Type Parameters
TLinkAddress
SingleOrDefault<TLinkAddress>(ILinks<TLinkAddress>, IList<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
Returns
- IList<TLinkAddress>
The result.
Type Parameters
TLinkAddressThe link.
UpdateOrCreateOrGet<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, TLinkAddress, TLinkAddress)
public static TLinkAddress UpdateOrCreateOrGet<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress source, TLinkAddress target, TLinkAddress newSource, TLinkAddress newTarget) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>sourceTLinkAddresstargetTLinkAddressnewSourceTLinkAddressnewTargetTLinkAddress
Returns
- TLinkAddress
Type Parameters
TLinkAddress
UpdateOrCreateOrGet<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, TLinkAddress, TLinkAddress, WriteHandler<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
linksILinks<TLinkAddress>Хранилище связей.
sourceTLinkAddressИндекс связи, которая является началом обновляемой связи.
targetTLinkAddressИндекс связи, которая является концом обновляемой связи.
newSourceTLinkAddressИндекс связи, которая является началом связи, на которую выполняется обновление.
newTargetTLinkAddressИндекс связи, которая является концом связи, на которую выполняется обновление.
handlerWriteHandler<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
Update<TLinkAddress>(ILinks<TLinkAddress>, WriteHandler<TLinkAddress>?, params TLinkAddress[])
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, WriteHandler<TLinkAddress>? handler, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>handlerWriteHandler<TLinkAddress>restrictionTLinkAddress[]
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Update<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?)
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, IList<TLinkAddress>? restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Update<TLinkAddress>(ILinks<TLinkAddress>, IList<TLinkAddress>?, WriteHandler<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
linksILinks<TLinkAddress>Хранилище связей.
restrictionIList<TLinkAddress>Ограничения на содержимое связей. Каждое ограничение может иметь значения: Constants.Null - 0-я связь, обозначающая ссылку на пустоту, Itself - требование установить ссылку на себя, 1..∞ конкретный адрес другой связи.
handlerWriteHandler<TLinkAddress>Optional callback; null continues without invoking a callback.
Returns
- TLinkAddress
Индекс обновлённой связи.
Type Parameters
TLinkAddress
Update<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, 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
linksILinks<TLinkAddress>Хранилище связей.
linkTLinkAddressИндекс обновляемой связи.
newSourceTLinkAddressИндекс связи, которая является началом связи, на которую выполняется обновление.
newTargetTLinkAddressИндекс связи, которая является концом связи, на которую выполняется обновление.
Returns
- TLinkAddress
Индекс обновлённой связи.
Type Parameters
TLinkAddress
Remarks
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.
Update<TLinkAddress>(ILinks<TLinkAddress>, TLinkAddress, TLinkAddress, TLinkAddress, WriteHandler<TLinkAddress>?)
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, TLinkAddress link, TLinkAddress newSource, TLinkAddress newTarget, WriteHandler<TLinkAddress>? handler) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>linkTLinkAddressnewSourceTLinkAddressnewTargetTLinkAddresshandlerWriteHandler<TLinkAddress>
Returns
- TLinkAddress
Type Parameters
TLinkAddress
Update<TLinkAddress>(ILinks<TLinkAddress>, params TLinkAddress[])
public static TLinkAddress Update<TLinkAddress>(this ILinks<TLinkAddress> links, params TLinkAddress[] restriction) where TLinkAddress : IUnsignedNumber<TLinkAddress>
Parameters
linksILinks<TLinkAddress>restrictionTLinkAddress[]
Returns
- TLinkAddress
Type Parameters
TLinkAddress