[arrayfire] 70/284: FEAT added infoString function to return info as string

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:20 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch debian/experimental
in repository arrayfire.

commit 3c9d69d209c815c441978dfe0a9a404972d069a5
Author: Shehzan Mohammed <shehzan at arrayfire.com>
Date:   Mon Dec 14 17:12:54 2015 -0500

    FEAT added infoString function to return info as string
---
 include/af/device.h        | 36 +++++++++++++++++++++++++++++++++++-
 src/api/c/device.cpp       | 13 +++++++++++++
 src/api/cpp/device.cpp     |  7 +++++++
 src/api/unified/device.cpp |  5 +++++
 4 files changed, 60 insertions(+), 1 deletion(-)

diff --git a/include/af/device.h b/include/af/device.h
index 03800c3..d3585c6 100644
--- a/include/af/device.h
+++ b/include/af/device.h
@@ -29,6 +29,27 @@ namespace af
     */
 
     /**
+       \defgroup device_func_info_string infoString
+
+       Get af::info() as a string
+
+       @{
+
+       \brief Returns the output of af::info() as a string
+
+       \param[in] verbose flag to return verbose info
+
+       \returns string containing output of af::info()
+
+       \ingroup arrayfire_func
+       \ingroup device_mat
+    */
+    AFAPI const char* infoString(const bool verbose = false);
+    /**
+       @}
+    */
+
+    /**
        \defgroup device_func_prop deviceInfo
 
        Get device information
@@ -205,10 +226,23 @@ extern "C" {
     */
     AFAPI af_err af_info();
 
+    /**
+       \ingroup device_func_info
+    */
     AFAPI af_err af_init();
 
     /**
-       \ingroup device_func_info
+       \brief Gets the output of af_info() as a string
+
+       \param[out] str contains the string
+       \param[in] verbose flag to return verbose info
+
+       \ingroup device_func_info_string
+    */
+    AFAPI af_err af_info_string(char** str, const bool verbose);
+
+    /**
+       \ingroup device_func_prop
     */
     AFAPI af_err af_device_info(char* d_name, char* d_platform, char *d_toolkit, char* d_compute);
 
diff --git a/src/api/c/device.cpp b/src/api/c/device.cpp
index 39ad217..365ccbe 100644
--- a/src/api/c/device.cpp
+++ b/src/api/c/device.cpp
@@ -70,6 +70,19 @@ af_err af_info()
     return AF_SUCCESS;
 }
 
+af_err af_info_string(char **str, const bool verbose)
+{
+    std::string infoStr = getInfo();
+    *str = (char*)malloc(sizeof(char) * (infoStr.size() + 1));
+
+    // Need to do a deep copy
+    // str.c_str wont cut it
+    infoStr.copy(*str, infoStr.size());
+    (*str)[infoStr.size()] = '\0';
+
+    return AF_SUCCESS;
+}
+
 af_err af_get_version(int *major, int *minor, int *patch)
 {
     *major = AF_VERSION_MAJOR;
diff --git a/src/api/cpp/device.cpp b/src/api/cpp/device.cpp
index 622809e..3f24417 100644
--- a/src/api/cpp/device.cpp
+++ b/src/api/cpp/device.cpp
@@ -47,6 +47,13 @@ namespace af
         AF_THROW(af_info());
     }
 
+    const char* infoString(const bool verbose)
+    {
+        char *str = NULL;
+        AF_THROW(af_info_string(&str, verbose));
+        return (const char *)str;
+    }
+
     void deviceprop(char* d_name, char* d_platform, char *d_toolkit, char* d_compute)
     {
         deviceInfo(d_name, d_platform, d_toolkit, d_compute);
diff --git a/src/api/unified/device.cpp b/src/api/unified/device.cpp
index 4f07788..8f04bf6 100644
--- a/src/api/unified/device.cpp
+++ b/src/api/unified/device.cpp
@@ -45,6 +45,11 @@ af_err af_init()
     return CALL_NO_PARAMS();
 }
 
+af_err af_info_string(char **str, const bool verbose)
+{
+    return CALL(str, verbose);
+}
+
 af_err af_device_info(char* d_name, char* d_platform, char *d_toolkit, char* d_compute)
 {
     return CALL(d_name, d_platform, d_toolkit, d_compute);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list