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
Returns -1
. The return type is the int
type.
GET_CODE_POINT_ERROR_INVALID_UTF8
Returns -2
. The return type is the int
type.
Class Methods
BYTE_MAX
static method BYTE_MAX : int ();
The same as "INT8_MAX".
BYTE_MIN
static method BYTE_MIN : int ();
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 C language
.
DBL_MIN
static method DBL_MIN : double ();
Returns 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 ();
Returns the value of FLT_MAX
macro defined in float.h
header of C language
.
FLT_MIN
static method FLT_MIN : float ();
Returns the value of FLT_MIN
macro defined in float.h
header of C language
.
INT16_MAX
static method INT16_MAX : int ();
Returns 32767
. The maximum value of the signed 16bit integer.
INT16_MIN
static method INT16_MIN : int ();
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 : int ();
Returns 127
. The maximum value of the signed 8bit integer.
INT8_MIN
static method INT8_MIN : int ();
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 : int ();
The same as "INT16_MAX".
SHORT_MIN
static method SHORT_MIN : int ();
The same as "INT16_MIN".
UBYTE_MAX
static method UBYTE_MAX : int ();
The same as "UINT8_MAX".
UINT16_MAX
static method UINT16_MAX : int ();
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 : int ();
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 : int ();
The same as "UINT16_MAX".
abs
static method abs : int ($value : int);
Returns the absolute value of the $value
.
chomp
static method chomp : void ($string : mutable string);
Removes \r\n
or \n
at the end of the $string
.
Exceptions:
The $string
must be defined.
chompr
static method chompr : string ($string : string);
Copies the $string
and removes \r\n
or \n
at the end of the copied string and returns it.
Exceptions:
The $string
must be defined.
chr
static method chr : string ($code_point : int);
Converts the $code_point
to the UTF-8
character and return it.
If the $code_point
is not a Unicode scalar value, return undef
.
contains
static method contains : int ($string : string, $substring : string, $offset = 0 : int, $length = -1 : int);
The alias for the following code using ""index".
my $ret = Fn->index($string, $substring, $offset, $length) >= 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_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 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".
Exceptions:
The $string
must be defined.
The $offset
must be greater than or equal to 0
.
hex
static method hex : int ($hex_string : string);
Converts the $hex_string
to the int
value and return it.
Exceptions:
The $hex
string must be defined.
The length of the $hex
string must be 1
to 8
.
The $hex
string must contain only hex characters 0-9a-zA-Z
.
index
static method index : int ($string : string, $substring : string, $offset = 0 : int, $length = -1 : int);
Searches for the substring in the range of the $string
from the $offset
to the position proceeded by the $length
.
If the $substring
is found, return the $found
offset. Otherwise return -1
.
If the length is less than 0
, the length to the end of the string is calculated from the length of the string and the offset.
Exceptions:
The $string
must be defined.
The $substring
must be defined.
The $offset
must be greater than or equal to 0
.
The $offset
+ the $length
must be less than or equal to the length of the $string
.
init_string
static method init_string : void ($string : mutable string, $ascii_code = 0 : int, $offset = 0 int, $length = -1);
Sets the characters in the $string
from the $offset
to the position proceeded by the $length
to the $ascii_code
.
If the $length
is less than 0
, the $length
is set to the length of the $string
- the $offset
.
Exceptions:
The $string
must be defined.
The $offset
+ the $length
must be less than or equal to the length of the $string
.
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_class
static method is_class : int ($object : object);
If the $object
is defined and the type of the $object
is the class type, return 1
. Otherwise return 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
, 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_pointer_class
static method is_pointer_class : int ($object : object);
If the $object
is defined and the $object
is a pointer class, return 1
. Otherwise return 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
, 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 $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 $code_point
is an ASCII hexadecimal digit 0-9A-Fa-f
, return 1
. Otherwise return 0
.
join
static method join : string ($separator : string, $strings : string[]);
Concatenates the $strings
with the $separater
and return it.
Exceptions:
The $strings
must be defined.
The $separator
must be defined.
labs
static method labs : long ($value : long);
Returns the absolute value of the $value
.
lc
static method lc : string ($string : string);
Converts the ASCII uppercase characters A-Z
in the $string
to the corresponding ASCII lowercase characters a-z
. And return it.
Exceptions:
The $string
must be defined.
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.
Exceptions:
The $string
must be defined.
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 the $source
to the the range of the $dest
.
The range of the $dest
is from the $offset
to the position proceeded by the $length
of the destination.
The range of the $source
is from the $offset
to the position proceeded by the $length
of the source.
The unit of the $offset
and the $length
is byte
size.
If the range of the $source
and the range of the $dest
overlap, the result is not guaranteed.
Exceptions:
The $dest
must be defined.
The type of the $dest
must be the string
type, the numeric array type, or the multi-numeric array type.
The $source
must be defined.
The type of the $source
must be the string
type, the numeric array type, or the multi-numeric array type.
The $dest
must not be a read-only string.
The $length
must be greater than or equal to 0
.
The $dest_offset
+ the $length
must be less than or equal to the length of the $dest
.
The $source_offset
+ the $length
must be less than or equal to the length of the $source
.
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 $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 the $base
number and the $exponant
number.
Exceptions:
The $exponant
number must be greater than or equal to 0
.
If the $base
number is 0
, the $exponant
number can't be 0
.
powl
static method powl : long ($base : long, $exponant : long);
Calculates the exponentiation from the $base
number and the $exponant
number.
Exceptions:
The $exponant
number must be greater than or equal to 0
.
If the $base
number is 0
, the $exponant
number can't be 0
.
rand
static method rand : double ($seed : int*);
Gets 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);
Concatenates the $string
the number of times specified in the $count
and return it.
Exceptions:
The $string
must be defined.
The $repeat
count must be greater than or equal to 0
.
Examples:
# "abcabcabc"
my $repeat_string = Fn->repeat("abc", 3);
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 the $string
with the characters specified by the third argument.
Exceptions:
The $string
must be defined.
rindex
static method rindex : int ($string : string, $substring : string, $offset = 0 : int, $length = -1 : int);
Searches for the substring in the range of the $string
from the $offset
to the position proceeded by the $length
in the direction from back to front.
If the $substring
is found, return the $found
offset. Otherwise return -1
.
If the length is less than 0
, the length to the end of the string is calculated from the length of the string and the offset.
Exceptions:
The $string
must be defined.
The $substring
must be defined.
The $offset
must be greater than or equal to 0
.
The $offset
+ the $length
must be less than or equal to the length of the $string
.
sizeof_native_int
static method sizeof_native_int : int ();
Returns the native int
size. This is the same value as sizeof(int)
in 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 C language
.
shorten
static method shorten : void ($string : mutable string, $length : int32_t);
Shortens 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.
Exceptions:
The $string
must be defined.
The $length
must be greater than or equal to 0
.
shorten_null_char
static method shorten_null_char : void ($string : mutable string);
Shortens the $string
just before the first null character \0
.
If null characters is not found, do nothing.
Exceptions:
The $string
must be defined.
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 = -1 : int);
If the $limit
is less than 0
, split the $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.
Exceptions:
The $separator
must be defined.
The $string
must be defined.
The $limit
can't be 0
.
substr
static method substr : string ($string : string, $offset : int, $length = -1 : int);
Gets the substring from the $string
. The extracting range of the string is from the $offset
to the position proceeded by the $length
.
If the length is less than 0
, the length to the end of the string is calculated from the length of the string and the offset.
to_double
static method to_double : double ($string : string);
Converts the $string
to the double
value using strtod
in C language
.
Exceptions:
The $string
must be defined.
The $string
must be the string that can be parsed as a double number.
The $string
must be a double number in the $correct
range.
Examples:
my $string = "1.25";
my $num = Fn->to_double($string);
to_float
static method to_float : float ($string : string);
Converts the $string
to the double
value using strtof
in C language
.
Exceptions:
The $string
must be defined.
The $string
must be the string that can be parsed as a float number.
The $string
must be a float number in the $correct
range.
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 the $string
to the int
value with $digit
using strtol
in C language
.
Exceptions:
The $string
must be defined.
The $string
must be the string that can be parsed as an int number.
The $string
must be an int number in the $correct
range.
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 the $string
to the long
value with $digit
using strtoll
in C language
.
Exceptions:
The $string
must be defined.
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.
The $string
must be a long number in the $correct
range.
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 itself.
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 itself.
trim
static method trim : string ($string : string);
Removes 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
.
Exceptions:
The $string
must be defined.
uc
static method uc : string ($string : string);
Converts the ASCII lowercase characters a-z
in the $string
to the corresponding ASCII uppercase characters A-Z
. And return it.
Exceptions:
The $string
must be defined.
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.
Exceptions:
The $string
must be defined.