Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 1 addition & 83 deletions csharp/Platform.Data/Universal/IUniLinks.cs
Original file line number Diff line number Diff line change
@@ -1,87 +1,5 @@
using System;
using System.Collections.Generic;
using Platform.Delegates;

// ReSharper disable TypeParameterCanBeVariant
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
// This file is made for future research and should not be translated at the moment.

namespace Platform.Data.Universal
{
/// <remarks>Minimal sufficient universal Links API (for bulk operations).</remarks>
public partial interface IUniLinks<TLinkAddress>
{
/// <summary>
/// <para>
/// Triggers the condition.
/// </para>
/// <para></para>
/// </summary>
/// <param name="condition">
/// <para>The condition.</para>
/// <para></para>
/// </param>
/// <param name="substitution">
/// <para>The substitution.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>A list of i list i list t link address</para>
/// <para></para>
/// </returns>
IList<IList<IList<TLinkAddress>?>> Trigger(IList<TLinkAddress>? condition, IList<TLinkAddress>? substitution);
}

/// <remarks>Minimal sufficient universal Links API (for step by step operations).</remarks>
public partial interface IUniLinks<TLinkAddress>
{
/// <returns>
/// TLinkAddress that represents True (was finished fully) or TLinkAddress that represents False (was stopped).
/// This is done to assure ability to push up stop signal through recursion stack.
/// </returns>
/// <remarks>
/// { 0, 0, 0 } => { itself, itself, itself } // create
/// { 1, any, any } => { itself, any, 3 } // update
/// { 3, any, any } => { 0, 0, 0 } // delete
/// </remarks>
TLinkAddress Trigger(IList<TLinkAddress>? patternOrCondition, ReadHandler<TLinkAddress>? matchHandler,
IList<TLinkAddress>? substitution, WriteHandler<TLinkAddress>? substitutionHandler);

/// <summary>
/// <para>
/// Triggers the restriction.
/// </para>
/// <para></para>
/// </summary>
/// <param name="restriction">
/// <para>The restriction.</para>
/// <para></para>
/// </param>
/// <param name="matchedHandler">
/// <para>The matched handler.</para>
/// <para></para>
/// </param>
/// <param name="substitution">
/// <para>The substitution.</para>
/// <para></para>
/// </param>
/// <param name="substitutedHandler">
/// <para>The substituted handler.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Trigger(IList<TLinkAddress>? restriction, WriteHandler<TLinkAddress>? matchedHandler,
IList<TLinkAddress>? substitution, WriteHandler<TLinkAddress>? substitutedHandler);
}

/// <remarks>Extended with small optimization.</remarks>
public partial interface IUniLinks<TLinkAddress>
{
/// <remarks>
/// Something simple should be simple and optimized.
/// </remarks>
TLinkAddress Count(IList<TLinkAddress>? restrictions);
}
}
95 changes: 1 addition & 94 deletions csharp/Platform.Data/Universal/IUniLinksCRUD.cs
Original file line number Diff line number Diff line change
@@ -1,98 +1,5 @@
using System;
using System.Collections.Generic;

// ReSharper disable TypeParameterCanBeVariant
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
// This file is made for future research and should not be translated at the moment.

namespace Platform.Data.Universal
{
/// <remarks>
/// CRUD aliases for IUniLinks.
/// </remarks>
public interface IUniLinksCRUD<TLinkAddress>
{
/// <summary>
/// <para>
/// Reads the part type.
/// </para>
/// <para></para>
/// </summary>
/// <param name="partType">
/// <para>The part type.</para>
/// <para></para>
/// </param>
/// <param name="link">
/// <para>The link.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Read(int partType, TLinkAddress link);
/// <summary>
/// <para>
/// Reads the handler.
/// </para>
/// <para></para>
/// </summary>
/// <param name="handler">
/// <para>The handler.</para>
/// <para></para>
/// </param>
/// <param name="pattern">
/// <para>The pattern.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Read(Func<TLinkAddress, bool> handler, IList<TLinkAddress>? pattern);
/// <summary>
/// <para>
/// Creates the parts.
/// </para>
/// <para></para>
/// </summary>
/// <param name="parts">
/// <para>The parts.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Create(IList<TLinkAddress>? parts);
/// <summary>
/// <para>
/// Updates the before.
/// </para>
/// <para></para>
/// </summary>
/// <param name="before">
/// <para>The before.</para>
/// <para></para>
/// </param>
/// <param name="after">
/// <para>The after.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Update(IList<TLinkAddress>? before, IList<TLinkAddress>? after);
/// <summary>
/// <para>
/// Deletes the parts.
/// </para>
/// <para></para>
/// </summary>
/// <param name="parts">
/// <para>The parts.</para>
/// <para></para>
/// </param>
TLinkAddress Delete(IList<TLinkAddress>? parts);
}
}
69 changes: 1 addition & 68 deletions csharp/Platform.Data/Universal/IUniLinksGS.cs
Original file line number Diff line number Diff line change
@@ -1,72 +1,5 @@
using System;
using System.Collections.Generic;

// ReSharper disable TypeParameterCanBeVariant
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
// This file is made for future research and should not be translated at the moment.

namespace Platform.Data.Universal
{
/// <remarks>
/// Get/Set aliases for IUniLinks.
/// </remarks>
public interface IUniLinksGS<TLinkAddress>
{
/// <summary>
/// <para>
/// Gets the part type.
/// </para>
/// <para></para>
/// </summary>
/// <param name="partType">
/// <para>The part type.</para>
/// <para></para>
/// </param>
/// <param name="link">
/// <para>The link.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Get(int partType, TLinkAddress link);
/// <summary>
/// <para>
/// Gets the handler.
/// </para>
/// <para></para>
/// </summary>
/// <param name="handler">
/// <para>The handler.</para>
/// <para></para>
/// </param>
/// <param name="pattern">
/// <para>The pattern.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Get(Func<TLinkAddress, bool> handler, IList<TLinkAddress>? pattern);
/// <summary>
/// <para>
/// Sets the before.
/// </para>
/// <para></para>
/// </summary>
/// <param name="before">
/// <para>The before.</para>
/// <para></para>
/// </param>
/// <param name="after">
/// <para>The after.</para>
/// <para></para>
/// </param>
/// <returns>
/// <para>The link address</para>
/// <para></para>
/// </returns>
TLinkAddress Set(IList<TLinkAddress>? before, IList<TLinkAddress>? after);
}
}
48 changes: 1 addition & 47 deletions csharp/Platform.Data/Universal/IUniLinksIO.cs
Original file line number Diff line number Diff line change
@@ -1,51 +1,5 @@
using System;
using System.Collections.Generic;

// ReSharper disable TypeParameterCanBeVariant
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member
// This file is made for future research and should not be translated at the moment.

namespace Platform.Data.Universal
{
/// <remarks>
/// In/Out aliases for IUniLinks.
/// TLinkAddress can be any number type of any size.
/// </remarks>
public interface IUniLinksIO<TLinkAddress>
{
/// <remarks>
/// default(TLinkAddress) means any link.
/// Single element pattern means just element (link).
/// Handler gets array of link contents.
/// * link[0] is index or identifier.
/// * link[1] is source or first.
/// * link[2] is target or second.
/// * link[3] is linker or third.
/// * link[n] is nth part/parent/element/value
/// of link (if variable length links used).
///
/// Stops and returns false if handler return false.
///
/// Acts as Each, Foreach, Select, Search, Match &amp; ...
///
/// Handles all links in store if pattern/restrictions is not defined.
/// </remarks>
bool Out(Func<IList<TLinkAddress>?, bool> handler, IList<TLinkAddress>? pattern);

/// <remarks>
/// default(TLinkAddress) means itself.
/// Equivalent to:
/// * creation if before == null
/// * deletion if after == null
/// * update if before != null &amp;&amp; after != null
/// * default(TLinkAddress) if before == null &amp;&amp; after == null
///
/// Possible interpretation
/// * In(null, new[] { }) creates point (link that points to itself using minimum number of parts).
/// * In(new[] { 4 }, null) deletes 4th link.
/// * In(new[] { 4 }, new [] { 5 }) delete 5th link if it exists and moves 4th link to 5th index.
/// * In(new[] { 4 }, new [] { 0, 2, 3 }) replaces 4th link with new doublet link (with 2 as source and 3 as target), 0 means it can be placed in any address.
/// ...
/// </remarks>
TLinkAddress In(IList<TLinkAddress>? before, IList<TLinkAddress>? after);
}
}
28 changes: 1 addition & 27 deletions csharp/Platform.Data/Universal/IUniLinksIOWithExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,31 +1,5 @@
// ReSharper disable TypeParameterCanBeVariant
#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member

using System.Collections.Generic;
// This file is made for future research and should not be translated at the moment.

namespace Platform.Data.Universal
{
/// <remarks>Contains some optimizations of Out.</remarks>
public interface IUniLinksIOWithExtensions<TLinkAddress> : IUniLinksIO<TLinkAddress>
{
/// <remarks>
/// default(TLinkAddress) means nothing or null.
/// Single element pattern means just element (link).
/// OutPart(n, null) returns default(TLinkAddress).
/// OutPart(0, pattern) ~ Exists(link) or Search(pattern)
/// OutPart(1, pattern) ~ GetSource(link) or GetSource(Search(pattern))
/// OutPart(2, pattern) ~ GetTarget(link) or GetTarget(Search(pattern))
/// OutPart(3, pattern) ~ GeTLinkAddresser(link) or GeTLinkAddresser(Search(pattern))
/// OutPart(n, pattern) => For any variable length links, returns link or default(TLinkAddress).
///
/// Outs(returns) inner contents of link, its part/parent/element/value.
/// </remarks>
TLinkAddress OutOne(int partType, IList<TLinkAddress>? pattern);

/// <remarks>OutCount() returns total links in store as array.</remarks>
IList<IList<TLinkAddress>?> OutAll(IList<TLinkAddress>? pattern);

/// <remarks>OutCount() returns total amount of links in store.</remarks>
ulong OutCount(IList<TLinkAddress>? pattern);
}
}
Loading
Loading