NAME ^

src/pmc/string.pmc - String PMC Class

DESCRIPTION ^

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.

Methods ^

void init()

Initializes the string.

PMC new_from_string(STRING *rep)

Class method to construct a String from the string representation rep.

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.

PMC *get_bignum()

Returns the big numbers 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_string_same(PMC *value)

Sets the value of the string to the value of the specified String PMC.

VOID set_pmc(PMC *value)

Sets the value of the string to the string value of the specified PMC.

PMC *bitwise_ors(PMC *value, PMC *dest)

PMC *bitwise_ors_str(PMC *value, PMC *dest)

PMC *bitwise_ands(PMC *value, PMC *dest)

PMC *bitwise_ands_str(PMC *value, PMC *dest)

PMC *bitwise_xors(PMC *value, PMC *dest)

PMC *bitwise_xors_str(PMC *value, PMC *dest)

void bitwise_nots(PMC *value)

These functions perform bitwise operations on entire strings, and place the result in dest.

void i_bitwise_ors(PMC *value)

void i_bitwise_ors_str(PMC *value)

void i_bitwise_ands(PMC *value)

void i_bitwise_ands_str(PMC *value)

void i_bitwise_xors(PMC *value)

void i_bitwise_xors_str(PMC *value)

void i_bitwise_nots(PMC *value)

These functions perform bitwise operations on entire strings in place.

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 is_same(PMC *value)

Compares the string in this PMC with the one in the value PMC. Returns true if this PMC and the one in value are of the same PMC class and their strings are aliases of the same internal string.

(this can only happen if you use the set_string_native method)

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.

void substr(INTVAL offset, INTVAL length, PMC *dest)

Extracts the substring starting at offset, with size length, and places it in dest.

STRING *substr_str(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.

Iterator Interface ^

PMC *slice(PMC *key, INTVAL f)

Return a new iterator for the slice PMC key if f==0.

Return a new pythonic slice if f == 1.

PMC *get_iter(PMC *key)

Return a new iterator for this string.

INTVAL elements()

Return length of the string.

Freeze/thaw Interface ^

void freeze(visit_info *info)

Used to archive the string.

void thaw(visit_info *info)

Used to unarchive the string.

NCI methods ^

PMC *lower()

Downcase this string

void trans(STRING *src, PMC *trams_table)

Translate ascii string src with entries from trans_table.

void reverse(STRING *src)

Reverse the ascii STRING src in place.

INTEGER is_integer(STRING *src)

Checks if the ascii STRING str is just an integer.


parrot