Manpage logo

SPVM::Fn - SPVM Starndard Functions

Name  Description  Usage  Class Methods  BYTE_MAX  BYTE_MIN  DBL_MAX  DBL_MIN  DOUBLE_MAX  DOUBLE_MIN  FLOAT_MAX  FLOAT_MIN  FLT_MAX  FLT_MIN  INT16_MAX  INT16_MIN  INT32_MAX  INT32_MIN  INT64_MAX  INT64_MIN  INT8_MAX  INT8_MIN  INT_MAX  INT_MIN  LONG_MAX  LONG_MIN  RAND_MAX  SHORT_MAX  SHORT_MIN  UBYTE_MAX  UINT16_MAX  UINT32_MAX  UINT64_MAX  UINT8_MAX  UINT_MAX  ULONG_MAX  USHORT_MAX  abs  chomp  chompr  chr  contains  copy_string  crand  equals_string_range  get_code_point  hex  index  init_string  is_alnum  is_alpha  is_array  is_blank  is_class  is_cntrl  is_digit  is_graph  is_hex_digit  is_lower  is_mulnum_array  is_numeric_array  is_object_array  is_perl_space  is_perl_word  is_pointer_class  is_print  is_punct  is_space  is_upper  is_xdigit  join  labs  lc  lcfirst  look_code_point  memcpy  memmove  ord  powi  powl  rand  repeat  replace_chars  rindex  sizeof_native_int  sizeof_native_pointer  shorten  shorten_null_char  split  substr  to_code_points  to_double  to_float  to_int  to_int_with_base  to_long  to_long_with_base  to_lower  to_upper  to_utf8_chars  tr  trim  uc  ucfirst  utf8_length  utf8_substr  merge_options  object_to_int  get_spvm_version_string  get_spvm_version_number  get_version_string  get_version_number  defer  get_memory_blocks_count  to_address  check_option_names  get_basic_type_id  memset_char  or  if  grep  grep_byte  grep_short  grep_int  grep_long  grep_float  grep_double  map  map_expand  get_compile_type_name  is_any_numeric_array  array_length  get_elem_size  get_elem_type_name  print_stderr  say_stderr  memcmp  reverse_inplace  is_string_array  length  get_elem_or_char_size  copy  reverse  slice  system_is_little_endian  sprintf  sort_asc  sort_desc  sort  change_endian  big_endian_to_system_endian  system_endian_to_big_endian  little_endian_to_system_endian  system_endian_to_little_endian  pack  unpack  no_free  set_no_free  get_pointer  set_pointer  has_null_pointer  eq_pointer  pointer_to_string  dump_object_internal  get_seed  set_seed  seed_initialized  get_basic_type_name_in_version_from  destroy_cache_class_vars  destroy_runtime_permanent_vars  range  to_hash  See Also  Copyright & License 

Name

SPVM::Fn − SPVM Starndard Functions

Description

The Fn class of SPVM has methods for numbers, strings, general utilities.

Usage

use Fn;
# Cut a newline LF
my $line = (mutable string)copy "abc\n";
Fn−>chomp($line);
# Contains
my $found = Fn−>contains("pppabcde", "bcd");
# Split
my $csv = "foo,bar,baz";
my $args_width = Fn−>split(",", $string);
# Join
my $args_width = ["foo", "bar", "baz"];
my $csv = Fn−>join(",", $args_width);
# Constant values
my $byte_max = Fn−>BYTE_MAX();
my $short_max = Fn−>SHORT_MAX();
my $int_max = Fn−>INT_MAX();
my $long_max = Fn−>LONG_MAX();

Class Methods

BYTE_MAX

"static method BYTE_MAX : byte ();"

The same as "INT8_MAX".

BYTE_MIN

"static method BYTE_MIN : byte ();"

The same as "INT8_MIN".

DBL_MAX

"static method DBL_MAX : double ();"

Returns the value of "DBL_MAX" macro defined in "float.h" header of the C language.

DBL_MIN

"static method DBL_MIN : double ();"

Returns the value of "DBL_MIN" macro defined in "float.h" header of the C language.

DOUBLE_MAX

"static method DOUBLE_MAX : double ();"

The same as "DBL_MAX".

DOUBLE_MIN

"static method DOUBLE_MIN : double ();"

The same as "DBL_MIN".

FLOAT_MAX

"static method FLOAT_MAX : float ();"

The same as "FLT_MAX".

FLOAT_MIN

"static method FLOAT_MIN : float();"

The same as "FLT_MIN".

FLT_MAX

"static method FLT_MAX : float ();"

Returns the value of "FLT_MAX" macro defined in "float.h" header of the C language.

FLT_MIN

"static method FLT_MIN : float ();"

Returns the value of "FLT_MIN" macro defined in "float.h" header of the C language.

INT16_MAX

"static method INT16_MAX : short ();"

Returns 32767. The maximum value of the signed 16bit integer.

INT16_MIN

"static method INT16_MIN : short ();"

Returns −32768. The minimal value of the signed 16bit integer.

INT32_MAX

"static method INT32_MAX : int ();"

Returns 2147483647. The maximum value of the signed 32bit integer.

INT32_MIN

"static method INT32_MIN : int ();"

Returns −2147483648. The minimal value of the signed 32bit integer.

INT64_MAX

"static method INT64_MAX : long ();"

Returns 9223372036854775807. The maximum value of the signed 64bit integer.

INT64_MIN

"static method INT64_MIN : long ();"

Returns −9223372036854775808. The minimal value of the signed 64bit integer.

INT8_MAX

"static method INT8_MAX : byte ();"

Returns 127. The maximum value of the signed 8bit integer.

INT8_MIN

"static method INT8_MIN : byte ();"

Returns −128. The minimal value of the signed 8bit integer.

INT_MAX

"static method INT_MAX : int ();"

The same as "INT32_MAX".

INT_MIN

"static method INT_MIN : int ();"

The same as "INT32_MIN".

LONG_MAX

"static method LONG_MAX : long ();"

The same as "INT64_MAX".

LONG_MIN

"static method LONG_MIN : long ();"

The same as "INT64_MIN".

RAND_MAX

"static method RAND_MAX : int ();"

Returns 2147483647.

SHORT_MAX

"static method SHORT_MAX : short ();"

The same as "INT16_MAX".

SHORT_MIN

"static method SHORT_MIN : short ();"

The same as "INT16_MIN".

UBYTE_MAX

"static method UBYTE_MAX : byte ();"

The same as "UINT8_MAX".

UINT16_MAX

"static method UINT16_MAX : short ();"

Returns −1. This represents 0xFFFF in the unsigned 16bit integer in 2's complement.

UINT32_MAX

"static method UINT32_MAX : int ();"

Returns −1. This represents 0xFFFFFFFF in the unsigned 32bit integer in 2's complement.

UINT64_MAX

"static method UINT64_MAX : long ();"

Returns −1. This represents 0xFFFFFFFFFFFFFFFF in the unsigned 64bit integer in 2's complement.

UINT8_MAX

"static method UINT8_MAX : byte ();"

Returns −1. This represents 0xFF in the unsigned 8bit integer in 2's complement.

UINT_MAX

"static method UINT_MAX : int ();"

The same as "UINT32_MAX".

ULONG_MAX

"static method ULONG_MAX : long"

The same as "UINT64_MAX".

USHORT_MAX

"static method USHORT_MAX : short ();"

The same as "UINT16_MAX".

abs

"static method abs : int ($value : int);"

Returns the absolute value of $value.

chomp

"static method chomp : int ($string : mutable string);"

Removes "\r\n" or "\n" at the end of $string, and returns the removed length.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

chompr

"static method chompr : string ($string : string);"

Copies $string and removes "\r\n" or "\n" at the end of the copied string and returns it.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

chr

"static method chr : string ($code_point : int);"

Converts $code_point to the UTF−8 character and return it.

If $code_point is not a Unicode scalar value, return undef.

contains

"static method contains : int ($string : string, $substring : string, $begin : int = 0, $end : int = −1);"

Checks if $string contains $substring.

Implementation:

The alias for the following code using "index" method.

my $ret = Fn−>index($string, $substring, $begin, $end) >= 0;

copy_string

"static method copy_string : string ($string : string);"

The alias for the following code using copy operator

my $ret = copy $string;

crand

"static method crand : int ($seed_ref : int*);"

Create a random number from 0 to "RAND_MAX" using $$seed_ref and return it.

$$seed_ref is updated.

This method is thread safe.

Examples:

use Sys::Time;
my $seed = (int)Sys::Time−>time;
my $crand0 = Fn−>crand(\$seed);
my $crand1 = Fn−>crand(\$seed);

equals_string_range

"static method equals_string_range : int ($string1 : string, $string1_offset : int, $string2 : string, $string2_offset : int, $length : int);"

Compares $string1 + $string1_offset with $string2 + $string2_offset by $length. If they are euqal, returns 1, otherwise returns 0.

If $length is 0, returns 1.

Exceptions:

$string1 must be defined. Otherwise an exception is thrown.

$string2 must be defined. Otherwise an exception is thrown.

$string1_offset must be greater than or equal to 0. Otherwise an exception is thrown.

$string2_offset must be greater than or equal to 0. Otherwise an exception is thrown.

get_code_point

"static method get_code_point : int ($string : string, $offset_ref : int*);"

Parses the UTF−8 character at the value reffered by $offset_ref of $string and return its Unicode code point.

The offset is updated to the position of the next UTF−8 character.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$offset must be greater than or equal to 0. Otherwise an exception is thrown.

The value of $offset must be less than the length of $string. Otherwise an exception is thrown.

If an invalid UTF−8 is gotten, an exception is thrown set "eval_error_id" to the basic type ID of Error::Unicode::InvalidUTF8 class.

hex

"static method hex : int ($hex_string : string);"

Converts $hex_string to the "int" value and return it.

Exceptions:

$hex string must be defined. Otherwise an exception is thrown.

The length of $hex string must be 1 to 8. Otherwise an exception is thrown.

$hex string must contain only hex characters "0−9a−zA−Z". Otherwise an exception is thrown.

index

"static method index : int ($string : string, $substring : string, $begin : int = 0, $end : int = −1);"

Searches for $substring in the range of $string from $begin to $end.

The search is performed from the beginning of the range of $string.

If $substring is found, returns the found offset. Otherwise, returns −1.

If $end is less than 0, $end is set to the length of $string minus 1.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$substring must be defined. Otherwise an exception is thrown.

$begin must be greater than or equal to 0. Otherwise an exception is thrown.

$end must be less than the length of $string.

init_string

"static method init_string : void ($string : mutable string, $ascii_code : int = 0, $offset = 0 int, $length = −1);"

Sets the characters in $string from $offset to the position proceeded by $length to $ascii_code.

If $length is less than 0, $length is set to the length of $string − $offset.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$offset + $length must be less than or equal to the length of $string.

is_alnum

"static method is_alnum : int ($code_point : int);"

If the Unicode $code_point is an ASCII alphanumeric "A−Za−z0−9", returns 1, otherwise returns 0.

is_alpha

"static method is_alpha : int ($code_point : int);"

If the Unicode $code_point is an ASCII alphabetic "A−Za−z", returns 1, otherwise returns 0.

is_array

"static method is_array : int ($object : object);"

If $object is defined and the type of $object is array type, returns 1, otherwise returns 0.

"is_array" in SPVM::Document::NativeAPI is used to check the type.

is_blank

"static method is_blank : int ($code_point : int);"

If the Unicode $code_point is an ASCII blank "0x20(SP, ' ')", "0x09(HT, '\t')", returns 1, otherwise returns 0.

is_class

"static method is_class : int ($object : object);"

If $object is defined and the type of $object is a class type, returns 1, otherwise returns 0.

"is_class" in SPVM::Document::NativeAPI is used to check the type.

is_cntrl

"static method is_cntrl : int ($code_point : int);"

If the Unicode $code_point is an ASCII control character "0x00−0x1F", 0x7F, returns 1, otherwise returns 0.

is_digit

"static method is_digit : int ($code_point : int);"

If the Unicode $code_point is an ASCII decimal digit 0−9, returns 1, otherwise returns 0.

is_graph

"static method is_graph : int ($code_point : int);"

If $character is an ASCII graphical character "0x21−0x7E", returns 1, otherwise returns 0.

is_hex_digit

"static method is_hex_digit : int ($code_point : int);"

If $character is a hexadecimal digit "0−9a−fA−F", returns 1, otherwise returns 0.

is_lower

"static method is_lower : int ($code_point : int);"

If the Unicode $code_point is an ASCII lowercase character "a−z", returns 1, otherwise returns 0.

is_mulnum_array

"static method is_mulnum_array : int ($object : object);"

If $object is defined and the type of $object is a multi−numeric array type, returns 1, otherwise returns 0.

"is_mulnum_array" in SPVM::Document::NativeAPI is used to check the type.

is_numeric_array

"static method is_numeric_array : int ($object : object);"

If $object is defined and the type of $object is a numeric array type, returns 1, otherwise returns 0.

"is_numeric_array" in SPVM::Document::NativeAPI is used to check the type.

is_object_array

"static method is_object_array : int ($object : object);"

If $object is defined and the type of $object is an object array type, returns 1, otherwise returns 0.

"is_object_array" in SPVM::Document::NativeAPI is used to check the type.

is_perl_space

"static method is_perl_space : int ($code_point : int);"

If the Unicode $code_point is an Perl ASCII space character "0x09(HT, '\t')", "0x0A(LF, '\n')", "0x0C(FF, '\f')", "0x0D(CR, '\r')", "0x20(SP, ' ')", returns 1, otherwise returns 0.

Note that prior to Perl v5.18, "\s" in ASCII mode did not match the vertical tab 0x0B(VT). "is_perl_space" is the same as this behavior.

Current Perl "\s" in ASCII mode is the same as "is_space".

is_perl_word

"static method is_perl_word : int ($code_point : int);"

If the Unicode $code_point is an Perl ASCII word character "a−zA−Z0−9_", returns 1, otherwise returns 0.

is_pointer_class

"static method is_pointer_class : int ($object : object);"

If $object is defined and $object is a pointer class, returns 1, otherwise returns 0.

"is_pointer_class" in SPVM::Document::NativeAPI is used to check the type.

is_print

"static method is_print : int ($code_point : int);"

If the Unicode $$code_point is an ASCII printable character "0x20−0x7E", returns 1, otherwise returns 0.

is_punct

"static method is_punct : int ($code_point : int);"

If the Unicode $code_point is an ASCII a punctuation character "0x21−0x2F", "0x3A−0x40", "0x5B−0x60", "0x7B−0x7E", returns 1, otherwise returns 0.

is_space

"static method is_space : int ($code_point : int);"

If the Unicode $code_point is an ASCII a white−space "0x09(HT, '\t')", "0x0A(LF, '\n')", 0x0B(VT), "0x0C(FF, '\f')", "0x0D(CR, '\r')", "0x20(SP, ' ')" returns 1, otherwise returns 0.

is_upper

"static method is_upper : int ($code_point : int);"

If $code_point is an ASCII uppercase character "A−Z", returns 1, otherwise returns 0.

is_xdigit

"static method is_xdigit : int ($code_point : int);"

If $code_point is an ASCII hexadecimal digit "0−9A−Fa−f", returns 1, otherwise returns 0.

join

"static method join : string ($separator : string, $strings : string[]);"

Concatenates $strings with $separater and return it.

Exceptions:

$strings must be defined. Otherwise an exception is thrown.

$separator must be defined. Otherwise an exception is thrown.

labs

"static method labs : long ($value : long);"

Returns the absolute value of $value.

lc

"static method lc : string ($string : string);"

Converts the ASCII uppercase characters "A−Z" in $string to the corresponding ASCII lowercase characters "a−z". And return it.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

lcfirst

"static method lcfirst : string ($string : string);"

If the first character of $string is an ASCII uppercase character "A−Z", it is converted to the corresponding ASCII lowercase characters "a−z". And return the converted string.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

look_code_point

"static method look_code_point : int ($string : string, $offset_ref : int*);"

The same as "get_code_point", but the offset is not updated.

memcpy

"static method memcpy : void ($dest : object, $dest_offset : int, $source : object, $source_offset : int, $length : int);"

Copies the range of $source to the range of $dest.

The range of $dest is from $offset to the position proceeded by $length of the destination.

The range of $source is from $offset to the position proceeded by $length of the source.

The unit of $offset and $length is "byte" size.

If the range of $source and the range of $dest overlap, the result is not guaranteed.

Exceptions:

$dest must be defined. Otherwise an exception is thrown.

The type of $dest must be the "string" type, the numeric array type, or the multi−numeric array type. Otherwise an exception is thrown.

$source must be defined. Otherwise an exception is thrown.

The type of $source must be the "string" type, the numeric array type, or the multi−numeric array type. Otherwise an exception is thrown.

$dest must not be a read−only string. Otherwise an exception is thrown.

$length must be greater than or equal to 0. Otherwise an exception is thrown.

$dest_offset + $length must be less than or equal to the length of $dest. Otherwise an exception is thrown.

$source_offset + $length must be less than or equal to the length of $source. Otherwise an exception is thrown.

memmove

"static method memmove : void ($dest : object, $dest_offset : int, $source : object, $source_offset : int, $length : int);"

The same as "memcpy", but even if the range of $source and the range of $dest overlap, the result is guaranteed.

ord

"static method ord : int ($string : string);"

The alias for the following code using "get_code_point".

my $offset = 0;
my $code_point = Fn−>get_code_point($string, \$offset);

powi

"static method powi : int ($base : int, $exponant : int);"

Calculates the exponentiation from $base number and $exponant number.

Exceptions:

$exponant number must be greater than or equal to 0. Otherwise an exception is thrown.

If $base number is 0, $exponant number cannnot be 0.

powl

"static method powl : long ($base : long, $exponant : long);"

Calculates the exponentiation from $base number and $exponant number.

Exceptions:

$exponant number must be greater than or equal to 0. Otherwise an exception is thrown.

If $base number is 0, $exponant number cannnot be 0.

rand

"static method rand : double ($seed : int*, $max : int = 1);"

Gets a 64bit floating point random number that is greater than or equal to 0 and less than $max using $seed.

If $max is specified, $max is multiplied to the return value.

The seed is updated.

This method is thread safe.

Examples:

use Sys::Time;
my $seed = (int)Sys::Time−>time;
my $rand0 = Fn−>rand(\$seed);
my $rand1 = Fn−>rand(\$seed);

Exceptions:

The max number \$max must be greater than 0. Otherwise an exception is thrown.

See Also:

If you want to omit $seed, you can use Sys#rand method.

repeat

"static method repeat : string ($string : string, $count : int);"

Concatenates $string the number of times specified in $count and return it.

Exceptions:

The $string must be defined. Otherwise an exception is thrown.

The repeat count $count count be a non−negative integer. Otherwise an exception is thrown.

Examples:

# "abcabcabc"
my $repeat_string = Fn−>repeat("abc", 3);

See Also:

See Array#repeat method about repeating an array.

replace_chars

"static method replace_chars : void ($string : mutable string, $from_ch : int, $to_ch : int);"

Replaces all characters specified by the second argument in $string with the characters specified by the third argument.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

rindex

"static method rindex : int ($string : string, $substring : string, $end : int = −1, $begin : int = 0);"

Searches for $substring in the range of $string from $begin to $end.

The search is performed from the end of the range of $string.

If $substring is found, returns the found offset. Otherwise, returns −1.

If $end is less than 0, $end is set to the length of $string minus 1.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$substring must be defined. Otherwise an exception is thrown.

$begin must be greater than or equal to 0. Otherwise an exception is thrown.

$end must be less than the length of $string.

sizeof_native_int

"static method sizeof_native_int : int ();"

Returns the native "int" size. This is the same value as sizeof(int) in the C language.

sizeof_native_pointer

"static method sizeof_native_pointer : int ();"

Returns the native pointer size. This is the same value as sizeof(void*) in the C language.

shorten

"static method shorten : void ($string : mutable string, $length : int32_t);"

Shortens $string to $length specified by the argument using "shorten" in SPVM::Document::NativeAPI.

If the length specified by the argument is greater than or equal to the length of the string, nothing is performed.

Exceptions:

$string must be defined.

$length must be greater than or equal to 0. Otherwise an exception is thrown.

shorten_null_char

"static method shorten_null_char : void ($string : mutable string);"

Shortens $string just before the first null character "\0".

If null characters is not found, do nothing.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

Example:

my $message = (mutable string)copy "foo\0bar";
# "foo"
my $message_shoten = Fn−>shorten_null_char($message);

split

"static method split : string[] ($separator : string, $string : string, $limit : int = −1);"

If $limit is less than 0, split $string by the specific $separator and convert them to an string array and return it.

If $limit is greater than than 0, the limit becomes the length of the maximam separated elements.

Exceptions:

$separator must be defined. Otherwise an exception is thrown.

$string must be defined. Otherwise an exception is thrown.

$limit cannnot be 0. Otherwise an exception is thrown.

substr

"static method substr : string ($string : string, $offset : int, $length : int = −1, $replacement : string = undef);"

Cuts a substring of $length from $offset of a string $string, and returns it.

If $length is ommited or $offset plus $length is less than or equal to the length of $string, $length is set to the length of $string minus $offset.

If the length is less than 0, the length to the end of the string is calculated from the length of $string and $offset.

Replacement:

If $replacement is given, $string is set to a string that is the replacement string $replacement of $string from $offset to $length.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$string must be a string. Otherwise an exception is thrown.

$offset must be greater than or equal to 0. Otherwise an exception is thrown.

The offset $offset must be less than or equal to the length of the string $string. Otherwise an exception is thrown.

to_code_points

"static method to_code_points : int[] ($string : string)"

Converts $string to the Unicode code points, and returns it.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$string contains an invalid Unicode code point. Otherwise an exception is thrown.

to_double

"static method to_double : double ($string : string);"

Converts $string to the "double" value using "strtod" in the C language.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$string must be the string that can be parsed as a double number. Otherwise an exception is thrown.

$string must be a double number in $correct range. Otherwise an exception is thrown.

Examples:

my $string = "1.25";
my $num = Fn−>to_double($string);

to_float

"static method to_float : float ($string : string);"

Converts $string to the "double" value using "strtof" in the C language.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$string must be the string that can be parsed as a float number. Otherwise an exception is thrown.

$string must be a float number in $correct range. Otherwise an exception is thrown.

Examples:

my $string = "1.25";
my $num = Fn−>to_float($string);

to_int

"static method to_int : int ($string : string, $digit : int);"

The alias for the following code using "to_int_with_base".

my $ret = Fn−>to_int_with_base($string, 10);

to_int_with_base

Converts $string to the "int" value with $digit using "strtol" in the C language.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$string must be the string that can be parsed as an int number. Otherwise an exception is thrown.

$string must be an int number in $correct range. Otherwise an exception is thrown.

Examples:

my $string = "−2147483648";
my $num = Fn−>to_int_with_base($string, 10);

to_long

"static method to_long : long ($string : string);"

The alias for the following code using "to_long_with_base".

my $ret = Fn−>to_long_with_base($string, 10);

to_long_with_base

"static method to_long_with_base : long ($string : string, $digit : int);"

Converts $string to the "long" value with $digit using "strtoll" in the C language.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$digit must be one of 2, 8, 10, or 16. Otherwise an exception is thrown.

$string must be the string that can be parsed as a long number. Otherwise an exception is thrown.

$string must be a long number in $correct range. Otherwise an exception is thrown.

Examples:

my $string = "−9223372036854775808";
my $num = Fn−>to_long_with_base($string, 10);

to_lower

"static method to_lower : int ($code_point : int);"

If $code_point is the ASCII uppercase character "A−Z", it is converted to the corresponding ASCII lowercase character "a−z".

If $code_point is not an ASCII uppercase character, return itself.

to_upper

"static method to_upper : int ($code_point : int);"

If $code_point is the ASCII lowercase character "a−z", it is converted to the corresponding ASCII uppercase character "A−Z".

If $code_point is not an ASCII lowercase character, return itself.

to_utf8_chars

"static method to_utf8_chars : string[] ($string : string);"

Converts $string to UTF−8 characters, and returns it.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$string contains an invalid Unicode code point. Otherwise an exception is thrown.

Examples:

my $string = "ãããa";
# ["ã", "ã", "ã", "a"]
my $utf8_chars = Fn−>to_utf8_chars($string);

tr

"static method tr : string ($string : string, $pattern : string, $replace : string)"

Replaced the range of $pattern with the range of $replace in a $string and returns a replaced string.

The range must be the format "a−z" or "a". If the format is "a", it is converted to "a−a".

# The range format examples
"a−z"
"0−9"
"a"
"5"
"ï¼−ï¼"
"ã−ã"

Exceptions:

$string must be defined. Otherwise an exception is thrown.

$pattern must be defined. Otherwise an exception is thrown.

$replace must be defined. Otherwise an exception is thrown.

If $string contains an invalid Unicode code point, an exception is thrown.

The range format of the (pattern|replace) cannnot be contain an invalid Unicode code point. If so, an exception is thrown. If so, an exception is thrown.

The second character ot the range format of the (pattern|replace) must be \"−\". Otherwise an exception is thrown.

The range format of the (pattern|replace) must be 1 or 3 characters. Otherwise an exception is thrown.

The exceptions of the "get_code_point"" in " method can be thrown.

"Examples:"

{
my $string = "ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼";
my $pattern = "ï¼−ï¼";
my $replace = "0−9";
# "0123456789"
my $ret = Fn−>tr($string, $pattern, $replace);
}
{
my $string = "abcd";
my $pattern = "a−c";
my $replace = "x−z";
# "xyzd"
my $ret = Fn−>tr($string, $pattern, $replace);
}
}

trim

"static method trim : string ($string : string);"

Removes the right and left spaces of $string and return it.

The removed spaces is the same as the spaces "is_space" method returns 1.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

uc

"static method uc : string ($string : string);"

Converts the ASCII lowercase characters "a−z" in $string to the corresponding ASCII uppercase characters "A−Z". And return it.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

ucfirst

"static method ucfirst : string ($string : string);"

If the first character of $string is an ASCII lowercase characters "a−z", it is converted to the corresponding ASCII uppercase character "A−Z". And return the converted string.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

utf8_length

"static method utf8_length : int ($string : string)"

Gets the length as a UTF−8 string from $string, and returns it.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

If $string contains an invalid Unicode code point, an exception is thrown.

Examples:

# 3
my $utf8_length = Fn−>utf8_length("ããã");

utf8_substr

"static method utf8_substr : string ($string : string, $utf8_offset : int, $utf8_length : int = −1);"

Gets the substring from $string. The extracting range of the string is from $utf8_offset to the position proceeded by $utf8_length, and returns it.

If the length is less than 0, the length to the end of the string is calculated from the length of $string and $utf8_offset.

Exceptions:

$string must be defined. Otherwise an exception is thrown.

If $string contains an invalid Unicode code point, an exception is thrown.

$utf8_offset + $utf8_length must be less than or equal to the UTF−8 length of $string. Otherwise an exception is thrown.

Examples:

# "ãã"
my $utf8_substr = Fn−>utf8_substr("ãããã", 1, 2);

merge_options

"static method merge_options : object[] ($options1 : object[], $options2 : object[]);"

Creates a new any object array merging $options1 and $options2, and returns it.

If $options1 is not defined, $options1 is set to an empty any object array.

If $options2 is not defined, $options2 is set to an empty any object array.

Exceptions:

The length of $options1 must be an even number. Otherwise an exception is thrown.

The length of $options2 must be an even number. Otherwise an exception is thrown.

Exceptions thrown by the merge_object in the Array class could be thrown.

Examples:

my $merged_options = Fn−>merge_options({foo => 1, bar => 2}, {baz => 5});

object_to_int

"static method object_to_int : int ($object : object);"

Converts the address of $object to a value of int type, and returns it.

get_spvm_version_string

"static method get_spvm_version_string : string ();"

Returns the version string of the SPVM language.

get_spvm_version_number

"static method get_spvm_version_number : double ();"

Returns the version number of the SPVM language.

get_version_string

"static method get_version_string : string ($basic_type_name : string);"

Returns the version string of the class $basic_type_name.

get_version_number

"static method get_version_number : double ($basic_type_name : string);"

Returns the version number of the class $basic_type_name.

Exceptions:

$basic_type_name must be defined. Otherwise an exception is thrown.

The class specified by $basic_type_name must be loaded. Otherwise an exception is thrown.

defer

"static method defer : Scope::Guard ($callback : Callback);"

Calls Scope::Guard#new and return its return value.

get_memory_blocks_count

"static method get_memory_blocks_count : int ();"

Gets the count of the memory blocks allocated by the new_memory_block native API.

to_address

"static method to_address : string ($object : object);"

Gets the address of an object $object as a string.

check_option_names

"static method check_option_names : void ($options : object[], $available_option_names : string[]);"

Checks if the options $options that contain name−value pairs has the available option names $available_option_names.

If $options is undef, nothing is done.

If the check is ok, nothing is done. Otherwise the following exception is thrown.

The "%s" option is not available.

%s is an option name.

Examples:

my $options = {foo => 1, bar => 2};
my $available_option_names = ["foo", "bar", "baz"];
Fn−>check_option_names($options, $available_option_names);

get_basic_type_id

static method get_basic_type_id : int ($basic_type_name : string);

Gets the basic type ID of the basic type $basic_type_name.

Exceptions:

$basic_type_name must be defined. Otherwise an exception is thrwon.

If the basic type is not found, an exception is thrwon.

memset_char

"static method memset_char : void ($string : mutable string, $char : int, $offset : int = 0, $length : int = −1);"

Set the range of the characters of the string $string to the character $char.

$char is an ASCII code.

The range of the characters of $string is from the offset $offset to the position proceeded by the length $length.

If $length is less than 0, the length to the end of the string is calculated from the length of $string and $offset.

Exceptions:

$string must be defined.

$offset must be greater than or equal to 0. Otherwise an exception is thrown.

$offset + $length must be less than or equal to the length of $string. Otherwise an exception is thrown.

or

"static method or : object ($left : object, $right : object);"

If $left is a true value, returns $left. Otherwise, returns $right;

if

"static method if : object ($condition : int, $left : object, $right : object);"

If $condition is a true value, returns $left. Otherwise, returns $right;

grep

"static method grep : object[] ($callback : Callback::Grep, $array : object[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

grep_byte

"static method grep_byte : byte[] ($callback : Callback::Grep::Byte, $array : byte[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

grep_short

"static method grep_short : short[] ($callback : Callback::Grep::Short, $array : short[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

grep_int

"static method grep_int : int[] ($callback : Callback::Grep::Int, $array : int[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

grep_long

"static method grep : long[] ($callback : Callback::Grep::Long, $array : long[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

grep_float

"static method grep_float : float[] ($callback : Callback::Grep::Float, $array : float[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

grep_double

"static method grep_double : double[] ($callback : Callback::Grep::Double, $array : double[]);"

Returns a new array containing only the elements of the array $array for which the callback $callback returned a true value.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

map

"static method map : object[] ($callback : Callback::Map, $array : object[]);"

Returns a new array with each element of the array $array processed in the callback $callback.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

map_expand

"static method map_expand : object[] ($callback : Callback::MapExpand, $array : object[]);"

Returns a new array with each element of the array $array processed in the callback $callback which returns multiple values.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The callback $callback must be defined. Otherwise, an exception is thrown.

get_compile_type_name

"static method get_compile_type_name : string ($basic_type_name : string, $type_dimension : int, $type_flag : int);"

Create a compile−time type name given the basic type name $basic_type_name, the type dimension $type_dimension, the type flag $type_flag, and returns it.

If "$type_flag & 1" is true, the type is a reference type.

If "$type_flag & 2" is true, the type is one that have a mutable qualifier.

Examples:

# int[][]
my $compile_type_name = Fn−>get_compile_type_name("int", 2, 0);
# int*
my $compile_type_name = Fn−>get_compile_type_name("int", 0, 1);

Exceptions:

The basic type name $basic_type_name must be defined. Otherwise, an exception is thrown.

The type dimension $type_dimension must be grether than or equal to 0 and less than or equal to 255. Otherwise, an exception is thrown.

is_any_numeric_array

"static method is_any_numeric_array : int ($object : object);"

If the object $object is defined and the type of $object is a numeric array type or a multi−numeric array type, returns 1, otherwise returns 0.

An any numeric array means an array of a numeric array type or a multi−numeric array type.

array_length

"static method array_length : int ($array : object);"

Returns the array length of the array $array.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The type of the array $array must be an array type. Otherwise, an exception is thrown.

get_elem_size

"static method get_elem_size : int ($array : object);"

Returns the element byte size of the array $array.

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The type of the array $array must be an array type. Otherwise, an exception is thrown.

get_elem_type_name

"static method get_elem_type_name : string ($array : object);"

Returns the element type name of the array $array.

Implementation:

my $type_name = type_name $array;
my $ret = Fn−>substr($type_name, 0, length $type_name − 2);

Note that this is not the real element type name of each element. It is merely the type name of the array, but without the trailing "[]".

Exceptions:

The array $array must be defined. Otherwise, an exception is thrown.

The type of the array $array must be an array type. Otherwise, an exception is thrown.

print_stderr

"static method print_stderr : void ($string : string);"

Prints the string $string to SPVM's standard error.

If $string is undef, this method produces no output.

say_stderr

"static method say_stderr : void ($string : string);"

Prints the string $string with a new line "\n" to SPVM's standard error.

If $string is undef, this method prints "\n".

memcmp

"static method memcmp : void ($data1 : object, $data1_offset : int, $data2 : object, $data2_offset : int, $length : int);"

Compares the data $data1 from index $dest_offset with the data $data2 from index $data2_offset to the length $length using "memcmp" C function, and returns the result.

Unit of $data1_offset, $data2_offset, and $length is bytes.

Exceptions:

$data1 must be defined. Otherwise an exception is thrown.

The type of $data1 must be the "string" type, the numeric array type, or the multi−numeric array type. Otherwise an exception is thrown.

$data2 must be defined. Otherwise an exception is thrown.

The type of $data2 must be the "string" type, the numeric array type, or the multi−numeric array type. Otherwise an exception is thrown.

$data1 must not be a read−only string. Otherwise an exception is thrown.

$length must be greater than or equal to 0. Otherwise an exception is thrown.

$data1_offset + $length must be less than or equal to the length of $data1. Otherwise an exception is thrown.

$data2_offset + $length must be less than or equal to the length of $data2. Otherwise an exception is thrown.

reverse_inplace

"static method reverse_inplace : void ($array_or_string : object);"

Reverses the elements in the array $array_or_string or the characters in the string $array_or_string in−place.

Exceptions:

$array_or_string must be defined. Otherwise an exception is thrown.

The type of $array_or_string must be an array type or string type. Otherwise an exception is thrown.

The string $array_or_string must not be read−only. Otherwise an exception is thrown.

is_string_array

"static method is_string_array : int ($object : object)"

If $object is defined and the type of $object is string array type "string[]", returns 1, otherwise returns 0.

length

"static method length : int ($array_or_string : object);"

Returns the array length of $array_or_string if the type of $array_or_sring is an array type.

Returns the string length of $array_or_string if the type of $array_or_sring is string type.

Exceptions:

$array_or_string must be defined. Otherwise an exception is thrown.

The type of $array_or_string must be an array type or string type. Otherwise an exception is thrown.

get_elem_or_char_size

"static method get_elem_or_char_size : int ($array_or_string : object);"

Returns the element byte size of the array $array if the type of $array_or_sring is an array type.

Returns 1, the byte size of "byte" type if the type of $array_or_sring is string type.

Exceptions:

The array $array_or_string must be defined. Otherwise, an exception is thrown.

The type of the array $array_or_string must be an array type. Otherwise, an exception is thrown.

copy

"static method copy : object ($array_or_string : object, $shallow : int = 0);"

Copies $array_or_string and returns it.

Implementation:

If $array_or_string is undef, returns undef.

If the type of $array_or_string is an string array type and $shallow is a false value, the copy is performed by Array#copy_string method.

If the type of $array_or_string is an string array type and $shallow is a true value, the copy is performed by Array#copy_string_address method.

If the type of $array_or_string is an object array type and $shallow is a false value, the copy is performed by Array#copy_object method given Cloner#default_cloner method.

If the type of $array_or_string is an object array type and $shallow is a true value, the copy is performed by Array#copy_object_address method.

If the type of $array_or_string is a numeric array type or a multi−numeric array type, the copy is performed by Array#copy_any_numeric method.

If the type of $array_or_string is string type, the copy is performed by "copy" operator.

Exceptions:

The type of $array_or_string must be an array type or string type.

reverse

"static method reverse : object ($array_or_string : object);"

Reterns a new array that reverses the elements in the array $array_or_string or the characters in the string $array_or_string.

This method calls "copy" method and "reverse_inplace" method to create a new array and reverses elements.

Exceptions:

Exceptions thrown by "copy" method and "reverse_inplace" method could be thrown.

slice

"static method slice : object ($array : object, $offset : int, $length :int);"

Slices the array $array from the offset $offset to the length $length, and returns it.

The type of $array must be an object array type, a numeric array type, or a multi−numeric array type.

This method calls Array#memcpy_object method or "memcpy" method to slice $array.

Exceptions:

The array $array must be defined. Otherwise an exception is thrown.

The type of the array $array must be an object array type, a numeric array type or a multi−numeric array type. Otherwise an exception is thrown.

Exceptions thrown by Array#memcpy_object method or "memcpy" method could be thrown.

system_is_little_endian

"static method system_is_little_endian ();"

If the system is little−endian, returns 1, otherwise returns 0.

sprintf

"static method sprintf : string ($format : string, $args : object...);"

Calls Format#sprintf method and returns its return value.

Exceptions:

Exceptions thrown by thrown Format#sprintf method could be thrown.

Examples:

my $ret = Fn−>sprintf("%s %d", "abc", 2);

sort_asc

"static method sort_asc : object ($array : object);"

Copies the array $array using "copy" method, sorts the copied array by ascendant order, and returns it.

The type of $array must be a numeric array type.

Thie method calls a corresponding method in Sort class.

Exceptions:

The array $array must be defined. Otherwise an exception is thrown.

The type of the array $array must be a numeric array type. Otherwise an exception is thrown.

sort_desc

"static method sort_desc : object ($array : object);"

Copies the array $array using "copy" method, sorts the copied array by descendant order, and returns it.

The type of $array must be a numeric array type.

Thie method calls a corresponding method in Sort class.

Exceptions:

The array $array must be defined. Otherwise an exception is thrown.

The type of the array $array must be a numeric array type. Otherwise an exception is thrown.

sort

"static method sort : object[] ($array : object[], $comparator : Comparator);"

Copies the array $array using "copy" method, sorts the copied array by the order specified by the comparator $comparator, and returns it.

This method calls Sort#sort_object method to sort the copied array.

Exceptions:

Exceptions thrown by thrown Sort#sort_object method could be thrown.

change_endian

"static method change_endian : void ($binary : mutable string, $size : int, $offset : int = 0);"

The byte order of the first $size bytes of the binary data $binary at the offset $offset are reversed in−plcae.

Exceptions:

The binary data $binary must be defined. Otherwise an exception is thrown.

The byte size $size must be greater than 0. Otherwise an exception is thrown.

The offset $offset must be greater than or equal to 0. Otherwise an exception is thrown.

The byte size $size must be less than or equal to the offset $offset plus the length of the binary data $binary.

big_endian_to_system_endian

"static method big_endian_to_system_endian : void ($binary : mutable string, $size : int, $offset : int = 0);"

The byte order of the first $size bytes of the binary data $binary at the offset $offset are changed from big endian to system endian.

This method calls "change_endian" method to change endian.

Exceptions:

Exceptions thrown by "change_endian" method could be thrown.

system_endian_to_big_endian

"static method system_endian_to_big_endian : void ($binary : mutable string, $size : int, $offset : int = 0);"

The byte order of the first $size bytes of the binary data $binary at the offset $offset are changed from system endian to big endian.

This method calls "change_endian" method to change endian.

Exceptions:

Exceptions thrown by "change_endian" method could be thrown.

little_endian_to_system_endian

"static method little_endian_to_system_endian : void ($binary : mutable string, $size : int, $offset : int = 0);"

The byte order of the first $size bytes of the binary data $binary at the offset $offset are changed from little endian to system endian.

This method calls "change_endian" method to change endian.

Exceptions:

Exceptions thrown by "change_endian" method could be thrown.

system_endian_to_little_endian

"static method system_endian_to_little_endian : void ($binary : mutable string, $size : int, $offset : int = 0);"

The byte order of the first $size bytes of the binary data $binary at the offset $offset are changed from system endian to little endian.

This method calls "change_endian" method to change endian.

Exceptions:

Exceptions thrown by "change_endian" method could be thrown.

pack

"static method pack : string ($template : string, $objects : object...);"

Converts the objects $objects to a binary data according to the template $template, and returns it.

This method just creates a Packer object, calls Packer#pack method, and returns its return value.

Examples:

my $binary = Fn−>pack("l", 3);

unpack

"static method unpack : object[] ($template : string, $binary : string);"

Converts the binary data $binary to the objects $objects according to the template $template, and returns it.

This method just creates a Packer object, calls Packer#unpack method, and returns its return value.

no_free

"static method no_free : int ($object : object);"

Calls no_free native API given $object, and retunrs its return value.

Excetpions:

The object $object must be defined. Otherwise an exception is thrown.

set_no_free

"static method set_no_free : void ($object : object, $no_free : int);"

Calls set_no_free native API given $object, $no_free.

Excetpions:

The object $object must be defined. Otherwise an exception is thrown.

get_pointer

"static method get_pointer : Address ($object : object);"

Creates a new Address object, sets its pointer value to the pointer value of the object $object, and returns the new object.

Exceptions:

The object $object must be defined. Otherwise an exception is thrown.

set_pointer

"static method set_pointer : void ($object : object, $address : Address);"

Sets the pointer value of the object $object to the pointer value of the address $address.

Exceptions:

The object $object must be defined. Otherwise an exception is thrown.

The address $address must be defined. Otherwise an exception is thrown.

has_null_pointer

"static method has_null_pointer : int ($object : object);"

If the pointer value of the object $object is NULL, returns 1, otherwise returns 0.

Exceptions:

The object $object must be defined. Otherwise an exception is thrown.

eq_pointer

"static method eq_pointer : int ($object1 : object, $object2 : object);"

If the pointer value of the object $object1 is equal to the pointer value of the object $object2, returns 1, otherwise returns 0.

Exceptions:

The object $object1 must be defined. Otherwise an exception is thrown.

The object $object2 must be defined. Otherwise an exception is thrown.

pointer_to_string

"static method pointer_to_string : string ($object : object);"

Creates a new string that contains the hex address of the pointer value of the object $object, and returns the new string.

Exceptions:

The object $object must be defined. Otherwise an exception is thrown.

dump_object_internal

"static method dump_object_internal : string ($object : object);"

Calls dump_object_internal native API, and returns its return value.

get_seed

"static method get_seed : int ();"

Calls get_seed native API, and retunrs its return value.

set_seed

"static method set_seed : void ($seed : int);"

Calls get_seed native API given $seed.

seed_initialized

"static method seed_initialized : int ();"

Calls seed_initialized native API, and retunrs its return value.

get_basic_type_name_in_version_from

"static method get_basic_type_name_in_version_from : basic_type_name ($basic_type_name : basic_type_name);"

Returns the basic_type_name specified by version_from Statement of the class $basic_type_name. If it is not specified, returns undef.

destroy_cache_class_vars

"static method destroy_cache_class_vars : void ();"

Sets all class variables of all classes that is a object type and "cache" class variable attribute is specified to undef.

destroy_runtime_permanent_vars

"method destroy_runtime_permanent_vars : void ();"

Sets all runtime permanent variables to undef.

Currently thie method calls ""destroy_cache_class_vars" method and sets $@ to undef.

range

"static method range : int[] ($begin : int, $end : int);"

Returns a new array of values counting (up by ones) from $begin to $end.

Exceptions:

$end must be greater than or equal to $begin.

to_hash

"static method to_hash : Hash ($options : Hash|object[]);"

Converts the options $options to a Hash object, and returns it.

If $options is "undef", returns an empty Hash object.

If $options is a Hash object, returns it.

If $options is an "object[]" object, it is converted to a Hash object, and returns it.

Exceptions:

If the type of the options \$options must be Hash or object[], an exception is thrown.

See Also

Types

Class Definition

Operators

Copyright & License

Copyright (c) 2023 Yuki Kimoto

MIT License


Updated 2026-06-01 - jenkler.se | uex.se