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
38 changes: 16 additions & 22 deletions csharp/Platform.Incrementers/Incrementer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,24 @@

namespace Platform.Incrementers
{
/// <summary>
/// <para>Represents the incrementer that maintains an internal counter.</para>
/// <para>Представляет инкрементер, который поддерживает внутренний счетчик.</para>
/// </summary>
/// <remarks>
/// Must be class, not struct (in order to persist access to Result field value).
/// </remarks>
public class Incrementer : IIncrementer
{
/// <summary>
/// <para>
/// The result.
/// </para>
/// <para></para>
/// <para>The internal result value that stores the current counter.</para>
/// <para>Внутреннее значение результата, которое хранит текущий счетчик.</para>
/// </summary>
protected ulong _result;

/// <summary>
/// <para>
/// Gets the result value.
/// </para>
/// <para></para>
/// <para>Gets the current result value.</para>
/// <para>Получает текущее значение результата.</para>
/// </summary>
public ulong Result
{
Expand All @@ -30,32 +30,26 @@ public ulong Result
}

/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer"/> instance with the specified initial value.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer"/> с указанным начальным значением.</para>
/// </summary>
/// <param name="initialValue">
/// <para>A initial value.</para>
/// <para></para>
/// <para>The initial value for the counter.</para>
/// <para>Начальное значение для счетчика.</para>
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer(ulong initialValue) => _result = initialValue;

/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer"/> instance with zero initial value.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer"/> с нулевым начальным значением.</para>
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer() { }

/// <summary>
/// <para>
/// Increments this instance.
/// </para>
/// <para></para>
/// <para>Increments the internal counter by one.</para>
/// <para>Увеличивает внутренний счетчик на единицу.</para>
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void Increment() => _result++;
Expand Down
66 changes: 30 additions & 36 deletions csharp/Platform.Incrementers/Incrementer[TValue, TDecision].cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,64 +6,60 @@
namespace Platform.Incrementers
{
/// <summary>
/// <para>
/// Represents the incrementer.
/// </para>
/// <para></para>
/// <para>Represents the incrementer that can increment and return a specific decision value.</para>
/// <para>Представляет инкрементер, который может увеличивать счетчик и возвращать определенное значение решения.</para>
/// </summary>
/// <typeparam name="TValue">The type of value used in increment operations.</typeparam>
/// <typeparam name="TDecision">The type of decision value returned by increment operations.</typeparam>
/// <seealso cref="Incrementer"/>
public class Incrementer<TValue, TDecision> : Incrementer
{
/// <summary>
/// <para>The decision value that is returned by increment operations.</para>
/// <para>Значение решения, которое возвращается операциями инкремента.</para>
/// </summary>
private readonly TDecision _trueValue;

/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer{TValue, TDecision}"/> instance with the specified initial and decision values.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer{TValue, TDecision}"/> с указанными начальным значением и значением решения.</para>
/// </summary>
/// <param name="initialValue">
/// <para>A initial value.</para>
/// <para></para>
/// <para>The initial value for the counter.</para>
/// <para>Начальное значение для счетчика.</para>
/// </param>
/// <param name="trueValue">
/// <para>A true value.</para>
/// <para></para>
/// <para>The decision value to return from increment operations.</para>
/// <para>Значение решения, возвращаемое из операций инкремента.</para>
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer(ulong initialValue, TDecision trueValue) : base(initialValue) => _trueValue = trueValue;

/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer{TValue, TDecision}"/> instance with the specified decision value and zero initial value.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer{TValue, TDecision}"/> с указанным значением решения и нулевым начальным значением.</para>
/// </summary>
/// <param name="trueValue">
/// <para>A true value.</para>
/// <para></para>
/// <para>The decision value to return from increment operations.</para>
/// <para>Значение решения, возвращаемое из операций инкремента.</para>
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer(TDecision trueValue) => _trueValue = trueValue;

/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer{TValue, TDecision}"/> instance with default values.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer{TValue, TDecision}"/> со значениями по умолчанию.</para>
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer() { }

/// <summary>
/// <para>
/// Increments the and return true.
/// </para>
/// <para></para>
/// <para>Increments the counter and returns the decision value.</para>
/// <para>Увеличивает счетчик и возвращает значение решения.</para>
/// </summary>
/// <returns>
/// <para>The true value.</para>
/// <para></para>
/// <para>The decision value.</para>
/// <para>Значение решения.</para>
/// </returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public TDecision IncrementAndReturnTrue()
Expand All @@ -73,18 +69,16 @@ public TDecision IncrementAndReturnTrue()
}

/// <summary>
/// <para>
/// Increments the and return true using the specified value.
/// </para>
/// <para></para>
/// <para>Increments the counter and returns the decision value using the specified value.</para>
/// <para>Увеличивает счетчик и возвращает значение решения, используя указанное значение.</para>
/// </summary>
/// <param name="value">
/// <para>The value.</para>
/// <para></para>
/// <para>The value used in the increment operation.</para>
/// <para>Значение, используемое в операции инкремента.</para>
/// </param>
/// <returns>
/// <para>The true value.</para>
/// <para></para>
/// <para>The decision value.</para>
/// <para>Значение решения.</para>
/// </returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public TDecision IncrementAndReturnTrue(TValue value)
Expand Down
25 changes: 10 additions & 15 deletions csharp/Platform.Incrementers/Incrementer[TValue].cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,27 @@
namespace Platform.Incrementers
{
/// <summary>
/// <para>
/// Represents the incrementer.
/// </para>
/// <para></para>
/// <para>Represents the incrementer that returns boolean decisions from increment operations.</para>
/// <para>Представляет инкрементер, который возвращает логические решения из операций инкремента.</para>
/// </summary>
/// <seealso cref="Incrementer{TValue, bool}"/>
/// <typeparam name="TValue">The type of value used in increment operations.</typeparam>
/// <seealso cref="Incrementer{TValue, TDecision}"/>
public class Incrementer<TValue> : Incrementer<TValue, bool>
{
/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer{TValue}"/> instance with the specified initial value.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer{TValue}"/> с указанным начальным значением.</para>
/// </summary>
/// <param name="initialValue">
/// <para>A initial value.</para>
/// <para></para>
/// <para>The initial value for the counter.</para>
/// <para>Начальное значение для счетчика.</para>
/// </param>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer(ulong initialValue) : base(initialValue, true) { }

/// <summary>
/// <para>
/// Initializes a new <see cref="Incrementer"/> instance.
/// </para>
/// <para></para>
/// <para>Initializes a new <see cref="Incrementer{TValue}"/> instance with zero initial value and true as decision value.</para>
/// <para>Инициализирует новый экземпляр <see cref="Incrementer{TValue}"/> с нулевым начальным значением и true как значение решения.</para>
/// </summary>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public Incrementer() : base(true) { }
Expand Down
Loading