Add `toMat()`. Update tests.

This commit is contained in:
CismonX 2019-10-08 23:44:28 +08:00
parent af6e0c53f5
commit 665145a40e
10 changed files with 41 additions and 12 deletions

View File

@ -6,6 +6,7 @@
#include "subview_mat.hh"
#include "subview.hh"
#include "mat.hh"
#include "base.hh"
#include "dense.hh"
#include "matrix.hh"
@ -16,8 +17,16 @@
namespace php_arma
{
template <typename T>
PHP_ARMA_METHOD(subview_mat, toMat, T)
{
auto native = THIS_NATIVE;
RETVAL_OBJ(mat<T>::create(*native));
}
template <typename T>
PHP_ARMA_START_ME(subview_mat, T)
PHP_ARMA_ME(toMat, ZEND_ACC_PUBLIC)
PHP_ARMA_END_ME();
template <typename T>

View File

@ -31,6 +31,8 @@ namespace php_arma
private:
PHP_ARMA_COMMON_DECLARE();
static PHP_FUNCTION(toMat);
static void ce_init(zend_class_entry*);
};

View File

@ -9,5 +9,9 @@ namespace Arma;
*/
abstract class SvMat implements Internal\DenseNonResizableMatrix, Internal\Subview
{
/**
* Create a new matrix with elements copied from this matrix subview.
* @return Mat
*/
function toMat() {}
}

View File

@ -8,8 +8,6 @@ is_php_arma_loaded();
--FILE--
<?php
require_once 'includes/assert.php';
$mat = Arma\CxDMat::fromString('(1,2) (3,4); (5,6) (7,8)');
$mat->print();
$mat->rawPrint();

View File

@ -8,8 +8,6 @@ is_php_arma_loaded();
--FILE--
<?php
require_once 'includes/assert.php';
$mat = Arma\IMat::fromString('1 2; 3 4');
$mat->rawPrint();
$mat->forEach(function (Arma\MapVal $elem) {

View File

@ -8,8 +8,6 @@ is_php_arma_loaded();
--FILE--
<?php
require_once 'includes/assert.php';
$cx = Arma\cx_double(1., 2.);
$mat = Arma\IMat::fromString('1 2; 3 4');
echo $cx, ' ', $mat, PHP_EOL;

View File

@ -8,8 +8,6 @@ is_php_arma_loaded();
--FILE--
<?php
require_once 'includes/assert.php';
$cx_dmat = Arma\CxDMat::fromString('(1,2) (3,4); (5,6) (7,8)');
$dmat = Arma\DMat::fromString('3 5; 7 9');
$cx_dmat->setImag($dmat);

View File

@ -8,8 +8,6 @@ is_php_arma_loaded();
--FILE--
<?php
require_once 'includes/assert.php';
$mat = Arma\IMat::fromString("1 2; 3 4");
$diag = $mat->diag();

View File

@ -1,5 +1,5 @@
--TEST--
Test for method `copySize()`
Test for method `copySize()`.
--SKIPIF--
<?php
require_once 'includes/loaded.php';

24
tests/021-to-mat.phpt Normal file
View File

@ -0,0 +1,24 @@
--TEST--
Test for method `toMat()`.
--SKIPIF--
<?php
require_once 'includes/loaded.php';
is_php_arma_loaded();
?>
--FILE--
<?php
$mat = Arma\IMat::init(3, 3, Arma\Fill::ZEROS);
$submat = $mat->submat(1, 1, 2, 2);
$mat1 = $submat->toMat();
$mat1->at(0, 0)->setTo(1);
$mat->rawPrint();
$mat1->rawPrint();
?>
--EXPECT--
0 0 0
0 0 0
0 0 0
1 0
0 0