2017-09-07 23:10:17 +02:00
|
|
|
using System.Collections;
|
2014-11-01 02:26:07 +01:00
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
2014-11-03 00:05:54 +01:00
|
|
|
namespace System.Unicode
|
2014-11-01 02:26:07 +01:00
|
|
|
{
|
2014-12-15 01:57:09 +01:00
|
|
|
/// <summary>Allows enumeration of the code points contained in an encapsulated string.</summary>
|
|
|
|
|
/// <remarks>
|
|
|
|
|
/// This enumerable will only allow enumeration of valid UTF-16 strings.
|
|
|
|
|
/// For incomplete or invalid UTF-16 strings, please use <see cref="PermissiveCodePointEnumerable"/> instead.
|
|
|
|
|
/// </remarks>
|
2014-11-01 02:26:07 +01:00
|
|
|
public struct CodePointEnumerable : IEnumerable<int>
|
|
|
|
|
{
|
2014-12-15 01:57:09 +01:00
|
|
|
/// <summary>Initializes a new instance of the struct <see cref="CodePointEnumerable"/>.</summary>
|
|
|
|
|
/// <param name="text">The string whose code points must be enumerated.</param>
|
2017-09-07 23:10:17 +02:00
|
|
|
public CodePointEnumerable(string text) => Text = text ?? throw new ArgumentNullException(nameof(text));
|
2014-11-01 02:26:07 +01:00
|
|
|
|
2014-12-15 01:57:09 +01:00
|
|
|
/// <summary>Gets the text whose code points are being enumerated.</summary>
|
2017-09-07 23:10:17 +02:00
|
|
|
public string Text { get; }
|
2014-11-01 02:26:07 +01:00
|
|
|
|
2014-12-15 01:57:09 +01:00
|
|
|
/// <summary>Gets an enumerator which can be used to enumerate the code points in the text.</summary>
|
2017-09-07 23:10:17 +02:00
|
|
|
public CodePointEnumerator GetEnumerator() => new CodePointEnumerator(Text);
|
2014-11-01 02:26:07 +01:00
|
|
|
|
2017-09-07 23:10:17 +02:00
|
|
|
IEnumerator<int> IEnumerable<int>.GetEnumerator() => GetEnumerator();
|
2014-11-01 02:26:07 +01:00
|
|
|
|
2017-09-07 23:10:17 +02:00
|
|
|
IEnumerator IEnumerable.GetEnumerator() => GetEnumerator();
|
2014-11-01 02:26:07 +01:00
|
|
|
}
|
|
|
|
|
}
|