Struct FixedString128 | Collections | 0.12.0-preview.13
docs.unity3d.com
    Show / Hide Table of Contents

    Struct FixedString128

    An unmanaged string in UTF-8 format that contains its own fixed-size buffer of the given size in bytes. The string is NOT guaranteed to be null-terminated, though in many cases it may be by accident. No memory is ever allocated, and no attempt is made to share memory when strings are copied. Since this structure is not generic and needs no disposing, it can exist inside ECS components, can be put in a FixedArray, FixedList or FixedHashMap, and can be a data member of unmanaged structs that are allocated from the unmanaged heap. This string is entirely compatible with Burst compilation.

    The binary layout of this string is guaranteed, for now and all time, to be two bytes of little-endian length, followed by a contiguous array of bytes with that length, with no padding in between. This is intentionally identical to FixedList of byte, which is guaranteed to always have the same memory layout.

    Those who need more than 65,535 contiguous items should allocate from the heap, as storing that many things contiguously in a C# struct is likely to result in much wasted time, as the compiler copies the struct often.

    Namespace: Unity.Collections
    Syntax
    public struct FixedString128 : INativeList<byte>, IUTF8Bytes, IComparable<string>, IEquatable<string>, IComparable<FixedString32>, IEquatable<FixedString32>, IComparable<FixedString64>, IEquatable<FixedString64>, IComparable<FixedString128>, IEquatable<FixedString128>, IComparable<FixedString512>, IEquatable<FixedString512>, IComparable<FixedString4096>, IEquatable<FixedString4096>

    Constructors

    FixedString128(String)

    Construct a FixedString128 from a System.String object.

    Declaration
    public FixedString128(string source)
    Parameters
    Type Name Description
    String source

    The System.String object to construct this FixedString128 with

    FixedString128(FixedString128)

    Construct a FixedString128 by copying from another FixedString source.

    Declaration
    public FixedString128(in FixedString128 source)
    Parameters
    Type Name Description
    FixedString128 source

    FixedString128(FixedString32)

    Construct a FixedString128 by copying from another FixedString source.

    Declaration
    public FixedString128(in FixedString32 source)
    Parameters
    Type Name Description
    FixedString32 source

    FixedString128(FixedString4096)

    Construct a FixedString128 by copying from another FixedString source.

    Declaration
    public FixedString128(in FixedString4096 source)
    Parameters
    Type Name Description
    FixedString4096 source

    FixedString128(FixedString512)

    Construct a FixedString128 by copying from another FixedString source.

    Declaration
    public FixedString128(in FixedString512 source)
    Parameters
    Type Name Description
    FixedString512 source

    FixedString128(FixedString64)

    Construct a FixedString128 by copying from another FixedString source.

    Declaration
    public FixedString128(in FixedString64 source)
    Parameters
    Type Name Description
    FixedString64 source

    Properties

    Capacity

    The maximum length of the UTF-8 encopded string, in bytes. Due to the UTF-8 encoding, each Unicode code point requires between 1 and 4 bytes to encode. The null terminating byte is not included in the capacity. The FixedString always has space for a null terminating byte.

    Declaration
    public int Capacity { get; set; }
    Property Value
    Type Description
    Int32
    Implements
    INativeList<T>.Capacity

    IsEmpty

    Reports whether container is empty.

    Declaration
    public bool IsEmpty { get; }
    Property Value
    Type Description
    Boolean

    True if this container empty.

    Implements
    INativeList<T>.IsEmpty
    IUTF8Bytes.IsEmpty

    Item[Int32]

    Return the byte at the given byte (not character) index. The index must be in the range of [0..Length)

    Declaration
    public byte this[int index] { get; set; }
    Parameters
    Type Name Description
    Int32 index
    Property Value
    Type Description
    Byte
    Implements
    INativeList<T>.Item[Int32]

    Length

    The current length of the UTF-8 encoded string, in bytes. The string is guaranteed to he null-terminated. The length value does not include the null terminating byte.

    Declaration
    public int Length { get; set; }
    Property Value
    Type Description
    Int32
    Implements
    INativeList<T>.Length

    UTF8MaxLengthInBytes

    Returns the maximum number of utf8 bytes that can be stored in this type.

    Declaration
    public static int UTF8MaxLengthInBytes { get; }
    Property Value
    Type Description
    Int32

    Value

    A property in order to display the value in Unity.Properties generated UI.

    Declaration
    public string Value { get; }
    Property Value
    Type Description
    String

    Methods

    Add(Byte)

    Declaration
    public void Add(in byte value)
    Parameters
    Type Name Description
    Byte value

    AsFixedList()

    Transform this struct to a reference to a FixedListByteN, which has the same layout. The returned reference is a reference to this data, and is only valid while it is valid.

    Declaration
    public FixedListByte128 AsFixedList()
    Returns
    Type Description
    FixedListByte128

    Clear()

    Declaration
    public void Clear()
    Implements
    INativeList<T>.Clear()

    CompareTo(String)

    Compare this FixedString128 with a System.String in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(string other)
    Parameters
    Type Name Description
    String other

    The System.String to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString128 would appear first if sorted, 0 if they are identical, or 1 if the other System.String would appear first if sorted.

    CompareTo(FixedString128)

    Compare this FixedString128 with a FixedString128 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString128 other)
    Parameters
    Type Name Description
    FixedString128 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString128 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString128 would appear first if sorted.

    CompareTo(FixedString32)

    Compare this FixedString128 with a FixedString32 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString32 other)
    Parameters
    Type Name Description
    FixedString32 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString128 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString32 would appear first if sorted.

    CompareTo(FixedString4096)

    Compare this FixedString128 with a FixedString4096 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString4096 other)
    Parameters
    Type Name Description
    FixedString4096 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString128 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString4096 would appear first if sorted.

    CompareTo(FixedString512)

    Compare this FixedString128 with a FixedString512 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString512 other)
    Parameters
    Type Name Description
    FixedString512 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString128 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString512 would appear first if sorted.

    CompareTo(FixedString64)

    Compare this FixedString128 with a FixedString64 in terms of lexigraphical order, and return which of the two strings would come first if sorted.

    Declaration
    public int CompareTo(FixedString64 other)
    Parameters
    Type Name Description
    FixedString64 other

    The FixedString to compare with

    Returns
    Type Description
    Int32

    -1 if this FixedString128 would appear first if sorted, 0 if they are identical, or 1 if the other FixedString64 would appear first if sorted.

    ElementAt(Int32)

    Return a ref to the the byte at the given byte (not character) index. The index must be in the range of [0..Length). The ref byte is a direct reference into this FixedString, and is only valid while this FixedString is valid.

    Declaration
    public byte ElementAt(int index)
    Parameters
    Type Name Description
    Int32 index
    Returns
    Type Description
    Byte
    Implements
    INativeList<T>.ElementAt(Int32)

    Equals(Object)

    Determines whether a FixedString128 has the same value as some other object.

    Declaration
    public override bool Equals(object obj)
    Parameters
    Type Name Description
    Object obj

    The object to compare for equality

    Returns
    Type Description
    Boolean
    Overrides
    ValueType.Equals(Object)

    Equals(String)

    Compare this FixedString128 with a System.String, and return whether they contain the same string or not.

    Declaration
    public bool Equals(string other)
    Parameters
    Type Name Description
    String other

    The System.String to compare with

    Returns
    Type Description
    Boolean

    true if they are equal, or false if they are not.

    Equals(FixedString128)

    Declaration
    public bool Equals(FixedString128 other)
    Parameters
    Type Name Description
    FixedString128 other
    Returns
    Type Description
    Boolean

    Equals(FixedString32)

    Declaration
    public bool Equals(FixedString32 other)
    Parameters
    Type Name Description
    FixedString32 other
    Returns
    Type Description
    Boolean

    Equals(FixedString4096)

    Declaration
    public bool Equals(FixedString4096 other)
    Parameters
    Type Name Description
    FixedString4096 other
    Returns
    Type Description
    Boolean

    Equals(FixedString512)

    Declaration
    public bool Equals(FixedString512 other)
    Parameters
    Type Name Description
    FixedString512 other
    Returns
    Type Description
    Boolean

    Equals(FixedString64)

    Declaration
    public bool Equals(FixedString64 other)
    Parameters
    Type Name Description
    FixedString64 other
    Returns
    Type Description
    Boolean

    GetEnumerator()

    Returns an enumerator that iterates through a container.

    Declaration
    public FixedString128.Enumerator GetEnumerator()
    Returns
    Type Description
    FixedString128.Enumerator

    An IEnumerator object that can be used to iterate through the container.

    GetHashCode()

    Compute a hash code of this FixedString128: an integer that is likely to be different for two FixedString128, if their contents are different.

    Declaration
    public override int GetHashCode()
    Returns
    Type Description
    Int32

    A hash code of this FixedString128

    Overrides
    ValueType.GetHashCode()

    GetUnsafePtr()

    Declaration
    public byte *GetUnsafePtr()
    Returns
    Type Description
    Byte*
    Implements
    IUTF8Bytes.GetUnsafePtr()

    ToString()

    Convert this FixedString128 to a System.String.

    Declaration
    public override string ToString()
    Returns
    Type Description
    String

    A System.String with a copy of this FixedString128

    Overrides
    ValueType.ToString()

    Operators

    Equality(FixedString128, FixedString128)

    Declaration
    public static bool operator ==(in FixedString128 a, in FixedString128 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString128 b
    Returns
    Type Description
    Boolean

    Equality(FixedString128, FixedString32)

    Declaration
    public static bool operator ==(in FixedString128 a, in FixedString32 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString32 b
    Returns
    Type Description
    Boolean

    Equality(FixedString128, FixedString4096)

    Declaration
    public static bool operator ==(in FixedString128 a, in FixedString4096 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString4096 b
    Returns
    Type Description
    Boolean

    Equality(FixedString128, FixedString512)

    Declaration
    public static bool operator ==(in FixedString128 a, in FixedString512 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString512 b
    Returns
    Type Description
    Boolean

    Equality(FixedString128, FixedString64)

    Declaration
    public static bool operator ==(in FixedString128 a, in FixedString64 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString64 b
    Returns
    Type Description
    Boolean

    Implicit(String to FixedString128)

    Enable implicit conversion of System.String to FixedString128.

    Declaration
    public static implicit operator FixedString128(string b)
    Parameters
    Type Name Description
    String b

    The System.String object to convert to a FixedString128

    Returns
    Type Description
    FixedString128

    Implicit(FixedString128 to FixedString4096)

    Declaration
    public static implicit operator FixedString4096(in FixedString128 fs)
    Parameters
    Type Name Description
    FixedString128 fs
    Returns
    Type Description
    FixedString4096

    Implicit(FixedString128 to FixedString512)

    Declaration
    public static implicit operator FixedString512(in FixedString128 fs)
    Parameters
    Type Name Description
    FixedString128 fs
    Returns
    Type Description
    FixedString512

    Inequality(FixedString128, FixedString128)

    Declaration
    public static bool operator !=(in FixedString128 a, in FixedString128 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString128 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString128, FixedString32)

    Declaration
    public static bool operator !=(in FixedString128 a, in FixedString32 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString32 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString128, FixedString4096)

    Declaration
    public static bool operator !=(in FixedString128 a, in FixedString4096 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString4096 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString128, FixedString512)

    Declaration
    public static bool operator !=(in FixedString128 a, in FixedString512 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString512 b
    Returns
    Type Description
    Boolean

    Inequality(FixedString128, FixedString64)

    Declaration
    public static bool operator !=(in FixedString128 a, in FixedString64 b)
    Parameters
    Type Name Description
    FixedString128 a
    FixedString64 b
    Returns
    Type Description
    Boolean

    Extension Methods

    FixedStringMethods.Append<T>(ref T, Unicode.Rune)
    FixedStringMethods.Append<T>(ref T, Char)
    FixedStringMethods.AppendRawByte<T>(ref T, Byte)
    FixedStringMethods.Append<T>(ref T, Unicode.Rune, Int32)
    FixedStringMethods.Append<T>(ref T, Int64)
    FixedStringMethods.Append<T>(ref T, Int32)
    FixedStringMethods.Append<T>(ref T, UInt64)
    FixedStringMethods.Append<T>(ref T, UInt32)
    FixedStringMethods.Append<T>(ref T, Single, Char)
    FixedStringMethods.Append<T, T2>(ref T, T2)
    FixedStringMethods.CopyFrom<T, T2>(ref T, T2)
    FixedStringMethods.Append<T>(ref T, Byte*, Int32)
    FixedStringMethods.Append<T>(ref T, String)
    FixedStringMethods.CopyFrom<T>(ref T, String)
    FixedStringMethods.AppendFormat<T, U, T0>(ref T, U, T0)
    FixedStringMethods.AppendFormat<T, U, T0, T1>(ref T, U, T0, T1)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2>(ref T, U, T0, T1, T2)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3>(ref T, U, T0, T1, T2, T3)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4>(ref T, U, T0, T1, T2, T3, T4)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5>(ref T, U, T0, T1, T2, T3, T4, T5)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6>(ref T, U, T0, T1, T2, T3, T4, T5, T6)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6, T7>(ref T, U, T0, T1, T2, T3, T4, T5, T6, T7)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8>(ref T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8)
    FixedStringMethods.AppendFormat<T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(ref T, U, T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)
    FixedStringMethods.IndexOf<T>(ref T, Byte*, Int32)
    FixedStringMethods.IndexOf<T>(ref T, Byte*, Int32, Int32, Int32)
    FixedStringMethods.IndexOf<T, T2>(ref T, T2)
    FixedStringMethods.IndexOf<T, T2>(ref T, T2, Int32, Int32)
    FixedStringMethods.Contains<T, T2>(ref T, T2)
    FixedStringMethods.LastIndexOf<T>(ref T, Byte*, Int32)
    FixedStringMethods.LastIndexOf<T>(ref T, Byte*, Int32, Int32, Int32)
    FixedStringMethods.LastIndexOf<T, T2>(ref T, T2)
    FixedStringMethods.LastIndexOf<T, T2>(ref T, T2, Int32, Int32)
    FixedStringMethods.CompareTo<T>(ref T, Byte*, Int32)
    FixedStringMethods.CompareTo<T, T2>(ref T, T2)
    FixedStringMethods.Equals<T>(ref T, Byte*, Int32)
    FixedStringMethods.Equals<T, T2>(ref T, T2)
    FixedStringMethods.Peek<T>(ref T, Int32)
    FixedStringMethods.Read<T>(ref T, ref Int32)
    FixedStringMethods.Write<T>(ref T, ref Int32, Unicode.Rune)
    FixedStringMethods.ConvertToString<T>(ref T)
    FixedStringMethods.ComputeHashCode<T>(ref T)
    FixedStringMethods.EffectiveSizeOf<T>(ref T)
    FixedStringMethods.Format<T>(ref T, Int64)
    FixedStringMethods.Format<T>(ref T, Int32)
    FixedStringMethods.Format<T>(ref T, Single, Char)
    FixedStringMethods.Parse<T>(ref T, ref Int32, ref Int32)
    FixedStringMethods.Parse<T>(ref T, ref Int32, ref Single, Char)
    In This Article
    • Constructors
      • FixedString128(String)
      • FixedString128(FixedString128)
      • FixedString128(FixedString32)
      • FixedString128(FixedString4096)
      • FixedString128(FixedString512)
      • FixedString128(FixedString64)
    • Properties
      • Capacity
      • IsEmpty
      • Item[Int32]
      • Length
      • UTF8MaxLengthInBytes
      • Value
    • Methods
      • Add(Byte)
      • AsFixedList()
      • Clear()
      • CompareTo(String)
      • CompareTo(FixedString128)
      • CompareTo(FixedString32)
      • CompareTo(FixedString4096)
      • CompareTo(FixedString512)
      • CompareTo(FixedString64)
      • ElementAt(Int32)
      • Equals(Object)
      • Equals(String)
      • Equals(FixedString128)
      • Equals(FixedString32)
      • Equals(FixedString4096)
      • Equals(FixedString512)
      • Equals(FixedString64)
      • GetEnumerator()
      • GetHashCode()
      • GetUnsafePtr()
      • ToString()
    • Operators
      • Equality(FixedString128, FixedString128)
      • Equality(FixedString128, FixedString32)
      • Equality(FixedString128, FixedString4096)
      • Equality(FixedString128, FixedString512)
      • Equality(FixedString128, FixedString64)
      • Implicit(String to FixedString128)
      • Implicit(FixedString128 to FixedString4096)
      • Implicit(FixedString128 to FixedString512)
      • Inequality(FixedString128, FixedString128)
      • Inequality(FixedString128, FixedString32)
      • Inequality(FixedString128, FixedString4096)
      • Inequality(FixedString128, FixedString512)
      • Inequality(FixedString128, FixedString64)
    • Extension Methods
    Back to top
    Copyright © 2023 Unity Technologies — Terms of use
    • Legal
    • Privacy Policy
    • Cookies
    • Do Not Sell or Share My Personal Information
    • Your Privacy Choices (Cookie Settings)
    "Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
    Generated by DocFX on 18 October 2023