Struct HeapString
An unmanaged string in UTF-8 format that maintains a variable-length allocated inner buffer. The string is guaranteed to be null-terminated, at the byte at the current Length offset. This structure is a native collection, and as such requires creating with an allocator and requires being disposed.
Namespace: Unity.Collections
Syntax
public struct HeapString : INativeList<byte>, IDisposable, IUTF8Bytes, IComparable<string>, IEquatable<string>, IComparable<HeapString>, IEquatable<HeapString>, IComparable<FixedString32>, IEquatable<FixedString32>, IComparable<FixedString64>, IEquatable<FixedString64>, IComparable<FixedString128>, IEquatable<FixedString128>, IComparable<FixedString512>, IEquatable<FixedString512>, IComparable<FixedString4096>, IEquatable<FixedString4096>
Constructors
HeapString(Int32, Allocator)
Construct an empty HeapString with the given capacity.
Declaration
public HeapString(int capacity, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
Int32 | capacity | the initial capacity, in bytes |
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(String, Allocator)
Construct a HeapString from a System.String object.
Declaration
public HeapString(string source, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
String | source | The System.String object to construct this HeapString with |
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(Allocator)
Construct an empty HeapString with a default capacity of 512 bytes.
Declaration
public HeapString(Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(FixedString128, Allocator)
Construct a HeapString by copying from another FixedString source.
Declaration
public HeapString(in FixedString128 source, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
FixedString128 | source | |
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(FixedString32, Allocator)
Construct a HeapString by copying from another FixedString source.
Declaration
public HeapString(in FixedString32 source, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
FixedString32 | source | |
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(FixedString4096, Allocator)
Construct a HeapString by copying from another FixedString source.
Declaration
public HeapString(in FixedString4096 source, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
FixedString4096 | source | |
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(FixedString512, Allocator)
Construct a HeapString by copying from another FixedString source.
Declaration
public HeapString(in FixedString512 source, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
FixedString512 | source | |
Allocator | allocator | the Allocator to use for the underlying memory |
HeapString(FixedString64, Allocator)
Construct a HeapString by copying from another FixedString source.
Declaration
public HeapString(in FixedString64 source, Allocator allocator)
Parameters
Type | Name | Description |
---|---|---|
FixedString64 | source | |
Allocator | allocator | the Allocator to use for the underlying memory |
Properties
Capacity
The current capacity of this HeapString. Setting this value may cause the underlying buffer to be reallocated.
Declaration
public int Capacity { get; set; }
Property Value
Type | Description |
---|---|
Int32 |
Implements
IsCreated
Reports whether memory for the container is allocated.
Declaration
public bool IsCreated { get; }
Property Value
Type | Description |
---|---|
Boolean | True if this container object's internal storage has been allocated. |
Remarks
Note that the container storage is not created if you use the default constructor. You must specify at least an allocation type to construct a usable container.
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
Type | Description |
---|---|
Byte |
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
Type | Description |
---|---|
Int32 |
Implements
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)
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. |
Clear()
Clear this string by setting its Length to 0.
Declaration
public void Clear()
Implements
CompareTo(String)
Compare this HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString 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 HeapString would appear first if sorted, 0 if they are identical, or 1 if the other FixedString64 would appear first if sorted. |
CompareTo(HeapString)
Compare this HeapString with another in terms of lexigraphical order, and return which of the two strings would come first if sorted.
Declaration
public int CompareTo(HeapString other)
Parameters
Type | Name | Description |
---|---|---|
HeapString | other | The HeapString to compare with |
Returns
Type | Description |
---|---|
Int32 | negative value if this HeapString would appear first if sorted, 0 if they are identical, or positive value if the other HeapString would appear first if sorted. |
Dispose()
Dispose this HeapString's underlying allocation.
Declaration
public void Dispose()
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 HeapString, and is only valid while this HeapString's underlying allocation doesn't change.
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(Object)
Determines whether a HeapString 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
Equals(String)
Compare this HeapString 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 |
Equals(HeapString)
Compare this HeapString with another, and return whether they contain the same string or not.
Declaration
public bool Equals(HeapString other)
Parameters
Type | Name | Description |
---|---|---|
HeapString | other | The HeapString to compare with |
Returns
Type | Description |
---|---|
Boolean | true if they are equal, or false if they are not. |
GetEnumerator()
Returns an enumerator that iterates through a container.
Declaration
public HeapString.Enumerator GetEnumerator()
Returns
Type | Description |
---|---|
HeapString.Enumerator | An IEnumerator object that can be used to iterate through the container. |
GetHashCode()
Compute a hash code of this HeapString: an integer that is likely to be different for two HeapString, if their contents are different.
Declaration
public override int GetHashCode()
Returns
Type | Description |
---|---|
Int32 | A hash code of this HeapString |
Overrides
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* |
Implements
ToString()
Convert this HeapString to a System.String.
Declaration
public override string ToString()
Returns
Type | Description |
---|---|
String | A System.String with a copy of this HeapString |
Overrides
TryResize(Int32, NativeArrayOptions)
Attempt to set the length of the string, in UTF-8 bytes.
Declaration
public bool TryResize(int newLength, NativeArrayOptions clearOptions = NativeArrayOptions.ClearMemory)
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(HeapString, FixedString128)
Declaration
public static bool operator ==(in HeapString a, in FixedString128 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString128 | b |
Returns
Type | Description |
---|---|
Boolean |
Equality(HeapString, FixedString32)
Declaration
public static bool operator ==(in HeapString a, in FixedString32 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString32 | b |
Returns
Type | Description |
---|---|
Boolean |
Equality(HeapString, FixedString4096)
Declaration
public static bool operator ==(in HeapString a, in FixedString4096 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString4096 | b |
Returns
Type | Description |
---|---|
Boolean |
Equality(HeapString, FixedString512)
Declaration
public static bool operator ==(in HeapString a, in FixedString512 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString512 | b |
Returns
Type | Description |
---|---|
Boolean |
Equality(HeapString, FixedString64)
Declaration
public static bool operator ==(in HeapString a, in FixedString64 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString64 | b |
Returns
Type | Description |
---|---|
Boolean |
Inequality(HeapString, FixedString128)
Declaration
public static bool operator !=(in HeapString a, in FixedString128 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString128 | b |
Returns
Type | Description |
---|---|
Boolean |
Inequality(HeapString, FixedString32)
Declaration
public static bool operator !=(in HeapString a, in FixedString32 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString32 | b |
Returns
Type | Description |
---|---|
Boolean |
Inequality(HeapString, FixedString4096)
Declaration
public static bool operator !=(in HeapString a, in FixedString4096 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString4096 | b |
Returns
Type | Description |
---|---|
Boolean |
Inequality(HeapString, FixedString512)
Declaration
public static bool operator !=(in HeapString a, in FixedString512 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString512 | b |
Returns
Type | Description |
---|---|
Boolean |
Inequality(HeapString, FixedString64)
Declaration
public static bool operator !=(in HeapString a, in FixedString64 b)
Parameters
Type | Name | Description |
---|---|---|
HeapString | a | |
FixedString64 | b |
Returns
Type | Description |
---|---|
Boolean |