-
-
Notifications
You must be signed in to change notification settings - Fork 9
StringOwnership
Isaac Shelton edited this page Sep 8, 2023
·
9 revisions
| Type | Size | Memory Management Model | File |
|---|---|---|---|
StringOwnership |
8 bytes | None | 2.7/String.adept |
enum StringOwnership (REFERENCE, OWN, GIVEN, DONOR)
| Enum Value | Purpose | After __pass__(String)
|
After __assign__(*String, POD String)
|
|---|---|---|---|
StringOwnership::REFERENCE |
Reference String | REFERENCE |
REFERENCE |
StringOwnership::OWN |
Owned String | REFERENCE |
REFERENCE |
StringOwnership::GIVEN |
Transfer String | OWN |
OWN |
StringOwnership::DONOR |
Donor String | DONOR |
REFERENCE |
StringOwnership is used to represent the different states that a String value can be in.
When String values are passed to functions/methods, they are converted to kind StringOwnership::REFERENCE if they are StringOwnership::OWN, so that the callee doesn't take responsibility for freeing them. If they are StringOwnership::GIVEN, then they are converted to kind StringOwnership::OWN, so that the callee now has responsibility of freeing them. When String values are donate()d, they will be converted to kind StringOwnership::DONOR, to indicate that the string has donated ownership and therefore doesn't retain information about the given value.