Struct FixedString64
An unmanaged string in UTF-8 format that contains its own fixed-size buffer of the given size in bytes.
The string is guaranteed to be null-terminated, at the byte at the current Length offset.
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.
Syntax
public struct FixedString64 : INativeList<byte>, IIndexable<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
FixedString64(String)
Construct a FixedString64 from a System.String object.
Declaration
public FixedString64(String source)
Parameters
Type |
Name |
Description |
String |
source |
The System.String object to construct this FixedString64 with
|
FixedString64(FixedString128)
Construct a FixedString64 by copying from another FixedString source.
Declaration
public FixedString64(in FixedString128 source)
Parameters
FixedString64(FixedString32)
Construct a FixedString64 by copying from another FixedString source.
Declaration
public FixedString64(in FixedString32 source)
Parameters
FixedString64(FixedString4096)
Construct a FixedString64 by copying from another FixedString source.
Declaration
public FixedString64(in FixedString4096 source)
Parameters
FixedString64(FixedString512)
Construct a FixedString64 by copying from another FixedString source.
Declaration
public FixedString64(in FixedString512 source)
Parameters
FixedString64(FixedString64)
Construct a FixedString64 by copying from another FixedString source.
Declaration
public FixedString64(in FixedString64 source)
Parameters
FixedString64(Unicode.Rune, Int32)
Construct a FixedString64 by repeating the given Unicode.Rune a number of times.
Declaration
public FixedString64(Unicode.Rune rune, int count = 1)
Parameters
Type |
Name |
Description |
Unicode.Rune |
rune |
The Unicode.Rune to repeat
|
Int32 |
count |
The number of times to repeat, default 1
|
Properties
Capacity
The maximum available capacity of the UTF-8 encoded 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. For FixedString64, attempting to set this value
to anything lower than 61 will throw. The Capacity will always be 61.
Declaration
public int Capacity { get; set; }
Property Value
Implements
IsEmpty
Reports whether container is empty.
Declaration
public bool IsEmpty { get; }
Property Value
Type |
Description |
Boolean |
True if this container empty.
|
Implements
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
Implements
Length
The current length of the UTF-8 encoded string, in bytes. The string is guaranteed to be
null-terminated. The length value does not include the null terminating byte. It is valid to
read the null byte at the Length position when accessing this data by raw pointer.
Declaration
public int Length { get; set; }
Property Value
Implements
UTF8MaxLengthInBytes
Returns the maximum number of utf8 bytes that can be stored in this type.
Declaration
public static int UTF8MaxLengthInBytes { get; }
Property Value
Value
A property in order to display the value in Unity.Properties generated UI.
Declaration
public string Value { get; }
Property Value
Methods
Add(Byte)
Append the given byte value to this string. The string will remain null-terminated after the new
byte. Appending an invalid UTF-8 sequence will cause the contents of this string to be invalid when
converted to UTF-16 or UCS-2. No validation of the appended bytes is done.
Declaration
public void Add(in byte value)
Parameters
Type |
Name |
Description |
Byte |
value |
The byte to append.
|
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 FixedListByte64 AsFixedList()
Returns
Clear()
Clear this string by setting its Length to 0.
Declaration
Implements
CompareTo(String)
Compare this FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 FixedString64 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 |
The byte index to access
|
Returns
Type |
Description |
Byte |
A ref byte for the requested index
|
Implements
Equals(String)
Compare this FixedString64 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(Object)
Determines whether a FixedString64 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
Equals(FixedString128)
Declaration
public bool Equals(FixedString128 other)
Parameters
Returns
Equals(FixedString32)
Declaration
public bool Equals(FixedString32 other)
Parameters
Returns
Equals(FixedString4096)
Declaration
public bool Equals(FixedString4096 other)
Parameters
Returns
Equals(FixedString512)
Declaration
public bool Equals(FixedString512 other)
Parameters
Returns
Equals(FixedString64)
Declaration
public bool Equals(FixedString64 other)
Parameters
Returns
GetEnumerator()
Returns an enumerator that iterates through a container.
Declaration
public FixedString64.Enumerator GetEnumerator()
Returns
GetHashCode()
Compute a hash code of this FixedString64: an integer that is likely to be different for
two FixedString64, if their contents are different.
Declaration
public override int GetHashCode()
Returns
Type |
Description |
Int32 |
A hash code of this FixedString64
|
GetUnsafePtr()
Returns a pointer to the underlying byte stream. This pointer will become invalid if the underlying
allocation is changed, such as by changing the Capacity or adding any data to the HeapString.
Declaration
public byte *GetUnsafePtr()
Returns
Type |
Description |
Byte* |
A pointer to the first element in the array.
|
Implements
ToString()
Convert this FixedString64 to a System.String.
Declaration
public override String ToString()
Returns
Type |
Description |
String |
A System.String with a copy of this FixedString64
|
TryResize(Int32, NativeArrayOptions)
Attempt to set the length of the string, in UTF-8 bytes.
Declaration
public bool TryResize(int newLength, NativeArrayOptions clearOptions = null)
Parameters
Type |
Name |
Description |
Int32 |
newLength |
The new length of the string
|
NativeArrayOptions |
clearOptions |
Whether the new memory should be initialized or not
|
Returns
Type |
Description |
Boolean |
Whether the resize was successful.
|
Implements
Operators
Equality(FixedString64, FixedString128)
Declaration
public static bool operator ==(in FixedString64 a, in FixedString128 b)
Parameters
Returns
Equality(FixedString64, FixedString32)
Declaration
public static bool operator ==(in FixedString64 a, in FixedString32 b)
Parameters
Returns
Equality(FixedString64, FixedString4096)
Declaration
public static bool operator ==(in FixedString64 a, in FixedString4096 b)
Parameters
Returns
Equality(FixedString64, FixedString512)
Declaration
public static bool operator ==(in FixedString64 a, in FixedString512 b)
Parameters
Returns
Equality(FixedString64, FixedString64)
Declaration
public static bool operator ==(in FixedString64 a, in FixedString64 b)
Parameters
Returns
Implicit(String to FixedString64)
Enable implicit conversion of System.String to FixedString64.
Declaration
public static implicit operator FixedString64(string b)
Parameters
Type |
Name |
Description |
String |
b |
The System.String object to convert to a FixedString64
|
Returns
Implicit(FixedString64 to FixedString128)
Declaration
public static implicit operator FixedString128(in FixedString64 fs)
Parameters
Returns
Implicit(FixedString64 to FixedString4096)
Declaration
public static implicit operator FixedString4096(in FixedString64 fs)
Parameters
Returns
Implicit(FixedString64 to FixedString512)
Declaration
public static implicit operator FixedString512(in FixedString64 fs)
Parameters
Returns
Inequality(FixedString64, FixedString128)
Declaration
public static bool operator !=(in FixedString64 a, in FixedString128 b)
Parameters
Returns
Inequality(FixedString64, FixedString32)
Declaration
public static bool operator !=(in FixedString64 a, in FixedString32 b)
Parameters
Returns
Inequality(FixedString64, FixedString4096)
Declaration
public static bool operator !=(in FixedString64 a, in FixedString4096 b)
Parameters
Returns
Inequality(FixedString64, FixedString512)
Declaration
public static bool operator !=(in FixedString64 a, in FixedString512 b)
Parameters
Returns
Inequality(FixedString64, FixedString64)
Declaration
public static bool operator !=(in FixedString64 a, in FixedString64 b)
Parameters
Returns