SPVM::Array - Array Utilities
use Array; # Copy a byte array { my $array = [(byte)1, 2, 3]; my $array_copy = Array->copy_byte($array); } # Copy a short array { my $array = [(short)1, 2, 3]; my $array_copy = Array->copy_short($array); } # Copy a int array { my $array = [1, 2, 3]; my $array_copy = Array->copy_int($array); } # Copy a long array { my $array = [(long)1, 2, 3]; my $array_copy = Array->copy_long($array); } # Copy a float array { my $array = [1.5f, 2.5f, 3.5f]; my $array_copy = Array->copy_float($array); } # Copy a double array { my $array = [1.5, 2.5, 3.5]; my $array_copy = Array->copy_double($array); } # Copy a string array { my $array = ["abc", "def", "ghi"] my $array_copy = Array->copy_string($array); } # Check if the two byte arrays equal { my $array1 = [(byte)1, 2]; my $array2 = [(byte)1, 2]; my $ret = Array->equals_byte($array1, $array2); } # Check if the two short arrays equal { my $array1 = [(short)1, 2]; my $array2 = [(short)1, 2]; my $ret = Array->equals_short($array1, $array2); } # Check if the two int arrays equal { my $array1 = [(int)1, 2]; my $array2 = [(int)1, 2]; my $ret = Array->equals_int($array1, $array2); } # Check if the two long arrays equal { my $array1 = [(long)1, 2]; my $array2 = [(long)1, 2]; my $ret = Array->equals_long($array1, $array2); } # Check if the two float arrays equal { my $array1 = [(float)1, 2]; my $array2 = [(float)1, 2]; my $ret = Array->equals_float($array1, $array2); } # Check if the two double arrays equal { my $array1 = [(double)1, 2]; my $array2 = [(double)1, 2]; my $ret = Array->equals_double($array1, $array2); } # Check if the two string arrays equal { my $array1 = ["abc", "def"]; my $array2 = ["abc", "def"]; my $ret = Array->equals_string($array1, $array2); } # Copy object array my $array = [(object)Int->new(1), Int->new(2), Int->new(3)]; my $array_copy = Array->copy_object($array, method : object ($obj : object) { my $int_obj = (Int)$obj; my $new_int_obj = Int->new($int_obj->value); return $new_int_obj; });
Array provides array utilities.
Array
static method copy_byte : byte[] ($array : byte[], $offset : int = 0, $length : int = -1);
Create a new byte array with $length, and copy the elements from $offset to the position proceeded by $length to the created array.
byte
If the length is less than 0, the length to the end of the string is calculated from the length of the array and the offset.
Exceptions:
$array must be defined. Otherwise an exception is thrown.
$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 $array. Otherwise an exception is thrown.
static method copy_double : double[] ($array : double[], $offset : int = 0, $length : int = -1);
Create a new double array with $length, and copy the elements from $offset to the position proceeded by $length to the created array.
double
If the array is not defined, return undef.
static method copy_float : float[] ($array : float[], $offset : int = 0, $length : int = -1);
Create a new float array with $length, and copy the elements from $offset to the position proceeded by $length to the created array.
float
static method copy_int : int[] ($array : int[], $offset : int = 0, $length : int = -1);
Create a new int array with $length, and copy the elements from $offset to the position proceeded by $length to the created array.
int
static method copy_long : long[] ($array : long[], $offset : int = 0, $length : int = -1);
Create a new long array with $length, and copy the elements from $offset to the position proceeded by $length to the created array.
long
static method copy_object : object[] ($array : object[], $cloner : Cloner = undef, $offset : int = 0, $legnth : int = -1);
Create a new object array with $length, and clone the elements of the object array from $offset to the position proceeded by $length to the created array.
Each element is cloned by the Cloner.
If the cloner is not defined, the address of each element is copied.
static method copy_object_address : object[] ($array : object[], $offset : int = 0, $legnth : int = -1);
The alias for the following code using "copy_object".
my $ret = ©_object($array, undef, $offset, $length);
static method copy_short : short[] ($array : short[], $offset : int = 0, $length : int = -1);
Create a new short array with $length, and copy the elements from $offset to the position proceeded by $length to the created array.
short
static method copy_string : string[] ($array : string[], $offset : int = 0, $length : int = -1);
Create a new string array with $length, and copy the elements of the string array using copy operator from $offset to the position proceeded by $length to the created array.
string
copy
static method copy_string_address : string[] ($array : string[], $offset : int = 0, $length : int = -1);
Create a new string array with $length, and copy the addresses of the elements of the string array from $offset to the position proceeded by $length to the created array.
static method dump_unsigned_byte : string ($array : byte[]);
Same as the following code using the dump operator operator, but the elements are displayed as unsigned 8-bit integer.
my $ret = dump $array;
static method dump_unsigned_int : string ($array : int[]);
Same as the following code using the dump operator operator, but the elements are displayed as unsigned 32-bit integer.
static method dump_unsigned_long : string ($array : long[]);
Same as the following code using the dump operator operator, but the elements are displayed as unsigned 64-bit integer.
static method dump_unsigned_short : string ($array : short[]);
Same as the following code using the dump operator operator, but the elements are displayed as unsigned 16-bit integer.
static method equals_byte : int ($array1 : byte[], $array2 : byte[]);
If $array1 is not defined and $array2 is not defined, return 1.
If $array1 is defined and $array2 is not defined, return 0.
If $array1 is not defined, $array2 is defined, return 0.
If $array1 is defined and $array2 is defined and the all elements of $array1 are equal to all elements of $array2, return 1.
Otherwise return 0.
static method equals_double : int ($array1 : double[], $array2 : double[]);
static method equals_float : int ($array1 : float[], $array2 : float[]);
static method equals_int : int ($array1 : int[], $array2 : int[]);
static method equals_long : int ($array1 : long[], $array2 : long[]);
static method static method equals_object : int ($array1 : object[], $array2 : object[], $equality_checker : EqualityChecker);
If $array1 is defined and $array2 is defined and the all elements of $array1 are equal to all elements of $array2 using the equality checker, return 1.
The equality checker is not defined, the address is used to check the equality.
static method equals_object_address : int ($array1 : object[], $array2 : object[]);
The alias for the following code using "equals_object".
my $ret = &equals_object($array1, $array2, undef);
static method equals_short : int ($array1 : short[], $array2 : short[]);
static method equals_string : int ($array1 : string[], $array2 : string[]);
If $array1 is defined and $array2 is defined and the all elements of $array1 are equal to all elements of $array2 using the eq operator, return 1.
eq
static method equals_string_address : int ($array1 : string[], $array2 : string[]);
The alias for the following code using "equals_object_address".
my $ret = &equals_object_address($array1, $array2);
static method memcpy_byte : void ($dest : byte[], $dest_offset : int, $source : byte[], $source_offset : int, $length : int);
Copy the range of the elements of $source byte array to the range of the elements of $dest byte array.
The range of the elements of $source array is from $offset to the position proceeded by $length of the source.
The range of the elements of $dest array is from $dest_offset to $dest_offset + $length.
If the range of the elements of $source array and the range of the elements of $dest array overlap, the result is not guaranteed.
$dest must be defined. Otherwise an exception is thrown.
$source must be defined. Otherwise an exception is thrown.
$length must be greater than or equal to 0. Otherwise an exception is thrown.
$dest_offset must be greater than or equal to 0. Otherwise an exception is thrown.
$source_offset 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.
static method memcpy_double : void ($dest : double[], $dest_offset : int, $source : double[], $source_offset : int, $length : int);
Copy the range of the elements of $source double array to the range of the elements of $dest double array.
static method memcpy_float : void ($dest : float[], $dest_offset : int, $source : float[], $source_offset : int, $length : int);
Copy the range of the elements of $source float array to the range of the elements of $dest float array.
static method memcpy_int : void ($dest : int[], $dest_offset : int, $source : int[], $source_offset : int, $length : int);
Copy the range of the elements of $source int array to the range of the elements of $dest int array.
static method memcpy_long : void ($dest : long[], $dest_offset : int, $source : long[], $source_offset : int, $length : int);
Copy the range of the elements of $source long array to the range of the elements of $dest long array.
static method memcpy_object_address : void ($dest : object[], $dest_offset : int, $source : object[], $source_offset : int, $length : int);
Copy the range of the elements of $source object array to the range of the elements of $dest object array.
Each address is copied.
static method memcpy_short : void ($dest : short[], $dest_offset : int, $source : short[], $source_offset : int, $length : int);
Copy the range of the elements of $source short array to the range of the elements of $dest short array.
static method memcpy_string_address : void ($dest : string[], $dest_offset : int, $source : string[], $source_offset : int, $length : int);
The alias for "memcpy_object_address".
static method memmove_byte : void ($dest : byte[], $dest_offset : int, $source : byte[], $source_offset : int, $length : int);
The same as "memcpy_byte", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_double : void ($dest : double[], $dest_offset : int, $source : double[], $source_offset : int, $length : int);
The same as "memcpy_double", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_float : void ($dest : float[], $dest_offset : int, $source : float[], $source_offset : int, $length : int);
The same as "memcpy_float", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_int : void ($dest : int[], $dest_offset : int, $source : int[], $source_offset : int, $length : int);
The same as "memcpy_int", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_long : void ($dest : long[], $dest_offset : int, $source : long[], $source_offset : int, $length : int);
The same as "memcpy_long", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_object_address : void ($dest : object[], $dest_offset : int, $source : object[], $source_offset : int, $length : int);
The same as "memcpy_object_address", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_short : void ($dest : short[], $dest_offset : int, $source : short[], $source_offset : int, $length : int);
The same as "memcpy_short", but even if the range of the source and the range of the destination overlap, the result is guaranteed.
static method memmove_string_address : void ($dest : string[], $dest_offset : int, $source : string[], $source_offset : int, $length : int);
The same as the following code using "memmove_object_address".
&memmove_object_address($dest, $dest_offset, $source, $source_offset, $length);
static method memset_byte : void ($array : byte[], $element : int, $offset : int = 0, $length : int = -1);
Set the range of the elements of the byte array to $element.
The range of the elements of $array is from $offset to the position proceeded by $length.
$array must be defined.
static method memset_double : void ($array : double[], $element : double, $offset : int = 0, $length : int = -1);
Set the range of the elements of the double array to $element.
static method memset_float : void ($array : float[], $element : float, $offset : int = 0, $length : int = -1);
Set the range of the elements of the float array to $element.
static method memset_int : void ($array : int[], $element : int, $offset : int = 0, $length : int = -1);
Set the range of the elements of the int array to $element.
static method memset_long : void ($array : long[], $element : long, $offset : int = 0, $length : int = -1);
Set the range of the elements of the long array to $element.
static method memset_object : void ($array : object[], $element : object, $offset : int = 0, $length : int = -1);
Set the range of the elements of the object $array to $element.
static method memset_short : void ($array : short[], $element : int, $offset : int = 0, $length : int = -1);
Set the range of the elements of the short $array to $element.
static method memset_string : void ($array : string[], $element : string, $offset : int = 0, $length : int = -1);
The alias for the following code using "memset_object".
&memset_object($dest, $element, $dest_offset, $length);
static method merge_byte : byte[] ($array1 : byte[], $array2 : byte[]);
Creates a new array by merging the array $array1 and the array $array2, and returns it.
\$array1 must be defined. Otherwise an exception is thrown.
\$array2 must be defined. Otherwise an exception is thrown.
static method merge_short : short[] ($array1 : short[], $array2 : short[]);
static method merge_int : int[] ($array1 : int[], $array2 : int[]);
static method merge_long : long[] ($array1 : long[], $array2 : long[]);
static method merge_float : float[] ($array1 : float[], $array2 : float[]);
static method merge_double : double[] ($array1 : double[], $array2 : double[]);
static method merge_string : string[] ($array1 : string[], $array2 : string[]);
static method merge_object : object[] ($array1 : object[], $array2 : object[]);
static method new_proto : object[] ($proto_array : object[], $length : int);
Create a new object array as the same type as $proto_array with $length.
$prototype array must be defined. Otherwise an exception is thrown.
static method shuffle_object : void ($array : object[], $seed_ref : int*);
Shuffles the array $array with the reference to a seed $seed_ref.
Copyright (c) 2023 Yuki Kimoto
MIT License
To install SPVM, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SPVM
CPAN shell
perl -MCPAN -e shell install SPVM
For more information on module installation, please visit the detailed CPAN module installation guide.