Name

SPVM::Fn - SPVM Starndard Functions

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 $items = Fn->split(",", $string);

# Join
my $items = ["foo", "bar", "baz"];
my $csv = Fn->join(",", $items);

# 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();

Description

Fn module provides SPVM Starndard Functions. Fn contains number, string and array utilities.

Enumerations

GET_CODE_POINT_ERROR_OVER_STRING_RANGE

Return -1. The return type is the int type.

GET_CODE_POINT_ERROR_INVALID_UTF8

Return -2. The return type is the int type.

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 ()

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

DBL_MIN

static method DBL_MIN : double ()

Return the value of DBL_MIN macro defined in float.h header of 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 ()

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

FLT_MIN

static method FLT_MIN : float ()

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

INT16_MAX

static method INT16_MAX : short ()

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

INT16_MIN

static method INT16_MIN : short ()

Return -32768. The minimal value of the signed 16bit integer.

INT32_MAX

static method INT32_MAX : int ()

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

INT32_MIN

static method INT32_MIN : int ()

Return -2147483648. The minimal value of the signed 32bit integer.

INT64_MAX

static method INT64_MAX : long ()

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

INT64_MIN

static method INT64_MIN : long ()

Return -9223372036854775808. The minimal value of the signed 64bit integer.

INT8_MAX

static method INT8_MAX : byte ()

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

INT8_MIN

static method INT8_MIN : byte ()

Return -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 ()

Return 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 ()

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

UINT32_MAX

static method UINT32_MAX : int ()

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

UINT64_MAX

static method UINT64_MAX : long ()

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

UINT8_MAX

static method UINT8_MAX : byte ()

Return -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)

Return the absolute value of the input value.

chomp

static method chomp : void ($string : mutable string)

Remove \n of the end of the string. Otherwise an exception will occur.

The string must be defined

chompr

static method chompr : string ($string : string)

Copy the string and remove \n of the end of the copied string and return it.

The string must be defined. Otherwise an exception will occur.

chr

static method chr : string ($code_point : int)

Convert the Unicode code point to the UTF-8 character and return it.

If the Unicode code point is not a Unicode scalar value, return undef.

contains

static method contains : int ($string : string, $substring : string)

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

my $ret = Fn->index($string, $substring, 0) >= 0;

copy_string

static method copy_string : string ($string : string)

The alias for the following code using the copy operator

my $ret = copy $string;

crand

static method crand : int ($seed : int*);

Create a random number from 0 to "RAND_MAX" using the seed and return it.

The seed is updated.

This method is thread safe.

Examples:

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

get_next_code_point

static method get_next_code_point : int ($string : string, $offset_ref : int*)

The same as "get_code_point".

This method is depracated. Use "get_code_point" instead.

get_code_point

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

Parse the UTF-8 character at the offset of the string and return its Unicode code point.

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

If the offset is greater than the length of the string, return the value of "GET_CODE_POINT_ERROR_OVER_STRING_RANGE".

If the UTF-8 character is invalid, return the value of "GET_CODE_POINT_ERROR_INVALID_UTF8".

The string must be defined. Otherwise an exception will occur.

The offset must be greater than or equal to 0. Otherwise an exception will occur.

hex

static method hex : int ($hex_string : string)

Convert the hex string to the int value and return it.

The hex string must be defined. Otherwise an exception will occur.

The length of the hex string must be 1 to 8. Otherwise an exception will occur.

The hex string must contain only hex characters 0-9a-zA-Z. Otherwise an exception will occur.

index

static method index : int ($string : string, $substring : string, $offset : int)

The alias for the following code using "index_len".

my $string_length = 0;
if ($string) {
  $string_length = length $string;
}
my $ret = Fn->index_len($string, $substring, $offset, $string_length - $offset);

index_len

static method index_len : int ($string : string, $substring : string, $offset : int, $length : int)

Search for the substring in the range of the string from the offset to the offset + the length - 1.

If the substring is found, return the found offset. Otherwise return -1.

The string must be defined. Otherwise an exception will occur.

The substring must be defined. Otherwise an exception will occur.

The offset must be greater than or equal to 0. Otherwise an exception will occur.

The max length must be greater than or equal to 0. Otherwise an exception will occur.

The offset + the length specified by the argument must be less than or equal to the length of the string. Otherwise an exception will occur.

is_alnum

static method is_alnum : int ($code_point : int)

If the Unicode code point is an ASCII alphanumeric A-Za-z0-9, return 1. Otherwise return 0.

is_alpha

static method is_alpha : int ($code_point : int)

If the Unicode code point is an ASCII alphabetic A-Za-z, return 1. Otherwise return 0.

is_array

static method is_array : int ($object : object)

If the object is defined and the type of the object is the array type, return 1. Otherwise return 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'), return 1. Otherwise return 0.

is_cntrl

static method is_cntrl : int ($code_point : int)

If the Unicode code point is an ASCII control character 0x00-0x1F, 0x7F, return 1. Otherwise return 0.

is_digit

static method is_digit : int ($code_point : int)

If the Unicode code point is an ASCII decimal digit 0-9, return 1. Otherwise return 0.

is_graph

static method is_graph : int ($code_point : int)

If the character is an ASCII graphical character 0x21-0x7E, return 1. Otherwise return 0.

is_hex_digit

static method is_hex_digit : int ($code_point : int)

If the character is a hexadecimal digit 0-9a-fA-F, return 1. Otherwise return 0.

is_lower

static method is_lower : int ($code_point : int)

If the Unicode code point is an ASCII lowercase character a-z, return 1. Otherwise return 0.

is_mulnum_array

static method is_mulnum_array : int ($object : object)

If the object is defined and the type of the object is the multi-numeric array type, return 1. Otherwise return 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 the object is defined and the type of the object is the numeric array type, return 1. Otherwise return 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 the object is defined and the type of the object is an object array type, return 1. Otherwise return 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, ' '), return 1. Otherwise return 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_, return 1. Otherwise return 0.

is_print

static method is_print : int ($code_point : int)

If the Unicode code point is an ASCII printable character 0x20-0x7E, return 1. Otherwise return 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, return 1. Otherwise return 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, ' ') return 1. Otherwise return 0.

is_upper

static method is_upper : int ($code_point : int)

If the Unicode code point is an ASCII uppercase character A-Z, return 1. Otherwise return 0.

is_xdigit

static method is_xdigit : int ($code_point : int)

If the Unicode code point is an ASCII hexadecimal digit 0-9A-Fa-f, return 1. Otherwise return 0.

join

static method join : string ($sep : string, $strings : string[])

Concatenate the strings with the separater and return it.

The strings must be defined. Otherwise an exception will occur.

The separator must be defined. Otherwise an exception will occur.

labs

static method labs : long ($value : long)

Return the absolute value of the input value.

lc

static method lc : string ($string : string)

Convert the ASCII uppercase characters A-Z in the string to the corresponding ASCII lowercase characters a-z. And return it.

The string must be defined. Otherwise an exception will occur.

lcfirst

static method lcfirst : string ($string : string)

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

The string must be defined. Otherwise an exception will occur.

look_next_code_point

static method look_next_code_point : int ($string : string, $offset_ref : int*)

The same as "look_code_point", but this method is depracated. Use "look_code_point" instead.

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);

Copy the range of the source to the the range of the destination.

The range of the destination is from the offset of the destination to the offset of the destination + the length - 1.

The range of the source is from the offset of the source to the offset of the destination + the length - 1.

The unit of the offset and the length is byte size.

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

The destination must be defined. Otherwise an exception will occur.

The type of the destination must be the string type, the numeric arrya type, or the multi numeric array type. Otherwise an exception will occur.

The source must be defined. Otherwise an exception will occur.

The type of the source must be the string type, the numeric arrya type, or the multi numeric array type. Otherwise an exception will occur.

The destination must not be a read-only string. Otherwise an exception will occur.

The length must be greater than or equal to 0. Otherwise an exception will occur.

The offset of the destination + the length specified by the argument must be less than or equal to the length of the destination. Otherwise an exception will occur.

The offset of the source + the length specified by the argument must be less than or equal to the length of the source. Otherwise an exception will occur.

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 the source and the range of the destination 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)

Calculate the exponentiation from the base number and the exponant number.

The exponant number must be greater than or equal to 0. Otherwise an exception will occur.

If the base number is 0, the exponant number can't be 0. Otherwise an exception will occur.

powl

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

Calculate the exponentiation from the base number and the exponant number.

The exponant number must be greater than or equal to 0. Otherwise an exception will occur.

If the base number is 0, the exponant number can't be 0. Otherwise an exception will occur.

rand

static method rand : double ($seed : int*)

Get a 64bit floating point random number that is greater than or equal to 0 and less than 1 using the seed.

The seed is updated.

This method is thread safe.

Examples:

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

repeat

static method repeat : double ($string : string, $count : int)

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

The string must be defined. Otherwise an exception will occur.

The repeat count must be greater than or equal to 0. Otherwise an exception will occur.

Examples:

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

rindex

static method rindex : int ($string : string, $substring : string, $offset : int)

The alias for the following code using "rindex_len".

my $ret = Fn->rindex_len($string, $substring, $offset, length $string - $offset);

rindex_len

static method rindex_len : int ($string : string, $substring : string, $offset : int, $length : int)

Search for the substring in the range of the string from the offset to the offset + the length - 1 in the direction from back to front.

If the substring is found, return the found offset. Otherwise return -1.

The string must be defined. Otherwise an exception will occur.

The substring must be defined. Otherwise an exception will occur.

The offset must be greater than or equal to 0. Otherwise an exception will occur.

The max length must be greater than or equal to 0. Otherwise an exception will occur.

The offset + the length specified by the argument must be less than or equal to the length of the string. Otherwise an exception will occur.

shorten

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

Shorten the string to the 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.

The string must be defined. Otherwise an exception will occur.

The length must be greater than or equal to 0. Otherwise an exception will occur.

split

static method split : string[] ($sep : string, $string : string)

The alias for the following code using "split_limit"" in ".

my $ret = Fn->split_limit($sep, $string, -1);

split_limit

static method split_limit : string[] ($sep : string, $string : string, $limit : int)

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

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

The separator must be defined. Otherwise an exception will occur.

The string must be defined. Otherwise an exception will occur.

The length of the separator must be greater than 0. Otherwise an exception will occur.

The limit can't be 0. Otherwise an exception will occur.

substr

static method substr : string ($string : string, $offset : int, $length : int)

Get the substring from the string. The extracting range of the string is from the offset to the offset + the length - 1.

to_double

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

Convert the string to the double value using strtod in C language.

The string must be defined. Otherwise an exception will occur.

The string must be the string that can be parsed as a double number. Otherwise an exception will occur.

The string must be a double number in the correct range. Otherwise an exception will occur.

Examples:

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

to_float

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

Convert the string to the double value using strtof in C language.

The string must be defined. Otherwise an exception will occur.

The string must be the string that can be parsed as a float number. Otherwise an exception will occur.

The string must be a float number in the correct range. Otherwise an exception will occur.

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

Convert the string to the int value using strtol in C language.

The string must be defined. Otherwise an exception will occur.

The string must be the string that can be parsed as an int number. Otherwise an exception will occur.

The string must be an int number in the correct range. Otherwise an exception will occur.

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);

Convert the string to the long value using strtoll in C language.

The string must be defined. Otherwise an exception will occur.

The digit must be one of 2, 8, 10, or 16.

The string must be the string that can be parsed as a long number. Otherwise an exception will occur.

The string must be a long number in the correct range. Otherwise an exception will occur.

Examples:

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

to_lower

static method to_lower : int ($code_point : int)

If the code point is the ASCII uppercase character A-Z, it is converted to the corresponding ASCII lowercase character a-z.

If the code point is not an ASCII uppercase character, return the code point specified by the argument.

to_upper

static method to_upper : int ($code_point : int)

If the code point is the ASCII lowercase character a-z, it is converted to the corresponding ASCII uppercase character A-Z.

If the code point is not an ASCII lowercase character, return the code point specified by the argument.

trim_ascii_space

static method trim_ascii_space : string ($string : string)

The same as "trim". This method is deprecated. Use "trim" instead.

trim

static method trim : string ($string : string)

Remove the right and left spaces of the string and return it.

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

The string must be defined. Otherwise an exception will occur.

uc

static method uc : string ($string : string)

Convert the ASCII lowercase characters a-z in the string to the corresponding ASCII uppercase characters A-Z. And return it.

The string must be defined. Otherwise an exception will occur.

ucfirst

static method ucfirst : string ($string : string)

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

The string must be defined. Otherwise an exception will occur.