// -----------------------------------------------------------------------------
// CTestPlatAlfVisual::TestAlfGridLayoutSetParametersL
// -----------------------------------------------------------------------------
//
TInt CTestPlatAlfVisual::TestAlfGridLayoutSetParametersL( CStifItemParser& /*aItem*/ )
{
    _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" );
    _LIT( KTestAlfGridLayoutSetParametersL, "TestAlfGridLayoutSetParametersL" );
    TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestAlfGridLayoutSetParametersL );
    // Print to log file
    iLog->Log( KTestAlfGridLayoutSetParametersL );

    CAlfGridLayout* vLayout = CAlfGridLayout::AddNewL( *iAlfCtl, 1, 1 );
    vLayout->SetColumnsL( 1 );
    vLayout->SetRowsL( 1 );
    RArray<TInt> vWeights(2);
    vWeights.Append( 1 );
    vWeights.Append( 1 );
    vLayout->SetRowsL( vWeights );
    vLayout->SetColumnsL( vWeights );
    TAlfMetric vMetric( 1 );
    vLayout->FillWeightsL( EAlfGridColumn, 1, vMetric );
    vLayout->InsertWeightL( EAlfGridColumn, vMetric, 0 );
    vLayout->ReplaceWeightL( EAlfGridColumn, vMetric, 1 );
    vLayout->DimensionCount( EAlfGridColumn );
    vLayout->RemoveWeightL( EAlfGridColumn, 1 );
    vLayout->SetExpanding( 0 );
    vLayout->OrdinalToBlock( 0 );
    vLayout->SetLayoutModeFlags( EAlfGridColumn, 0 );
    vLayout->ClearLayoutModeFlags( EAlfGridColumn, 0 );

    return KErrNone;
}
// [[Rcpp::export]]
RcppExport SEXP get_Distance_Matrix(SEXP newData, SEXP refData, SEXP weights) {
  Rcpp::NumericVector vWeights(weights);
  Rcpp::NumericMatrix mNew(newData);
  Rcpp::NumericMatrix mRef(refData);

  // number of variables in model
  int nVars = mRef.ncol();
  // n new cases
  int nNewCases = mNew.nrow();

  // allocate result matrix
  Rcpp::NumericMatrix mResult(mRef.nrow(), nNewCases);

  for (int i=0; i<nVars; ++i) { // loop over variables
    for (int j=0; j<nNewCases; ++j) { // loop over new cases
      mResult(Rcpp::_, j) = mResult(Rcpp::_, j) + abs(vWeights(i) * (mRef(Rcpp::_, i) - mNew(j, i)));
    } // end loop new cases
  } // end loop variables

  return Rcpp::wrap(mResult);
}