#ifndef HELPER_HEADER #define HELPER_HEADER #include <mlpack/core.hpp> using namespace arma; using namespace mlpack; using namespace std; // conversion from arma datatypes to arrays usable by prolog float *convertToArray(colvec vec); float *convertToArray(rowvec vec); float *convertToArray(mat matrix); float *convertToArray(arma::Mat< size_t > matrix); float *convertToArray(vector<size_t> vec); float *convertToArray(vector<double> vec); float *convertToArray(Row<size_t> vec); float *convertToArray(vector<vec> vec); // conversion from arrays to arma datatypes rowvec convertArrayToRowvec(float *arr, int vecSize); colvec convertArrayToColvec(float *arr, int vecSize); Row<size_t> convertArrayToVec(float *arr, int vecSize); mat convertArrayToMat(float *arr, int vecSize, int rowCount); // insert the Vector and Matrix informations into the prolog Variables void returnMatrixInformation(mat matrix, float **mat, SP_integer *matColNum, SP_integer *matRowNum); void returnMatrixInformation(Mat< size_t > matrix, float **mat, SP_integer *matColNum, SP_integer *matRowNum); void returnVectorInformation(rowvec vector, float **vecArr, SP_integer *vecArrSize); void returnVectorInformation(vec vector, float **vecArr, SP_integer *vecArrSize); void returnVectorInformation(Row< size_t > vector, float **vecArr, SP_integer *vecArrSize); // prolog exeption caller functions void raisePrologSystemExeption(const char *message); void raisePrologDomainExeption(double target, int argNumber, const char *expectation, const char *predicateName); void raisePrologDomainExeption(SP_integer target, int argNumber, const char *expectation, const char *predicateName); void raisePrologDomainExeption(const char * target, int argNumber, const char *expectation, const char *predicateName); #endif