
src/pmc/string.pmc - String PMC Class

String extends scalar to provide a string for languages that want a string type without going to an S register.
It acts as a wrapper for the functions in src/string.c.
void init()Initializes the string.
void mark()Marks the string as live.
PMC *clone()Creates a copy of the string.
INTVAL get_integer()Returns the integer representation of the string.
FLOATVAL get_number()Returns the floating-point representation of the string.
STRING *get_string()Returns the string itself.
INTVAL get_bool()Returns the boolean value of the string.
VOID set_integer_native(INTVAL value)VOID set_bool(INTVAL value)Sets the value of the string to the integer value.
VOID set_number_native(FLOATVAL value)Sets the value of the string to the floating-point value.
VOID set_string_native(STRING *value)Sets the value of the string to that of the specified string.
VOID assign_string_native(STRING *value)Sets the value of the string to a copy of the specified string.
VOID set_pmc(PMC *value)Sets the value of the string to the string value of the specified PMC.
INTVAL is_equal(PMC *value)Compares the string with value; returns true if they match.
INTVAL is_equal_num(PMC *value)Compares the numerical value of the string with that of value; returns true if they match.
INTVAL is_equal_string(PMC *value)Compares the string with value; returns FALSE if they match.
INTVAL cmp(PMC *value)Compares the string with value; returns -1 if the string is smaller,
0 if they are equal,
and 1 if value is smaller.
INTVAL cmp_num(PMC *value)Compares the numerical value of the string with that of value; returns -1 if the string is smaller,
0 if they are equal,
and 1 if value is smaller.
INTVAL cmp_string(PMC *value)Compares the string with value; returns -1 if the string is smaller,
0 if they are equal,
and 1 if value is smaller.
STRING *substr(INTVAL offset,
INTVAL length)Extracts the substring starting at offset,
with size length,
and returns it.
INTVAL exists_keyed(PMC *key)Returns true if the key'th character in the string exists.
Negative numbers count from the end.
STRING *get_string_keyed(PMC *key)Returns the key'th character in the string.
Negative numbers count from the end.
INTVAL get_integer_keyed(PMC *key)Returns the integer value (ord) at *key.
void set_string_keyed(PMC *key,
STRING *val)Replace the string at key with value.
void set_integer_keyed(PMC *key,
INTVAL val)Replace the string at key with the chr of value.
void replace(STRING *orig,
STRING *_new)Replace every occurrence of orig with _new.
PMC *to_int(INTVAL base)Return the integer equivalent of SELF,
which is assumed to be a base digit string.
The String is assumed to be in an ascii-compatible encoding.
The String is considered being unsigned,
and no + or - chars are processed.
base has to be within [2..36].
If any chars in the String aren't converted, an exception is thrown.
TODO Currently overflow to BigInt is not handled nor detected.
PMC *get_iter(PMC *key)Return a new iterator for this string.
INTVAL elements()Return length of the string.
void freeze(PMC *info)Used to archive the string.
void thaw(PMC *info)Used to unarchive the string.
void trans(STRING *src,
PMC *trams_table)Translate ascii string src with entries from trans_table.
void reverse(STRING *src)Either reverse this PMC's contents or set this PMC's value to the reverse of src,
if present.
INTEGER is_integer(STRING *src)Checks if the STRING str is just an integer.
Accepts only '0'-'9' characters,
other digit representations aren't allowed.
INTEGER reverse_index(STRING *substring,
INTVAL start)Find last occurrence of substring,
but not after the start position.
STRING *unescape()EXPERIMENTAL, for testing only. See TT #1628