summaryrefslogtreecommitdiffstats
path: root/matlab/mex
diff options
context:
space:
mode:
authorDaniel M. Pelt <D.M.Pelt@cwi.nl>2015-07-20 14:07:21 +0200
committerWillem Jan Palenstijn <Willem.Jan.Palenstijn@cwi.nl>2015-07-23 11:57:18 +0200
commitd91b51f6d58003de84a9d6dd8189fceba0e81a5a (patch)
tree215492c645ee57fb1cd65bab1c8f7bd0aabd058e /matlab/mex
parent37abc22cf8d26fa3f7e282a1ee50a2a129d5a295 (diff)
downloadastra-d91b51f6d58003de84a9d6dd8189fceba0e81a5a.tar.gz
astra-d91b51f6d58003de84a9d6dd8189fceba0e81a5a.tar.bz2
astra-d91b51f6d58003de84a9d6dd8189fceba0e81a5a.tar.xz
astra-d91b51f6d58003de84a9d6dd8189fceba0e81a5a.zip
Allow registering plugins without explicit name, and fix exception handling when running in Matlab
Diffstat (limited to 'matlab/mex')
-rw-r--r--matlab/mex/astra_mex_plugin_c.cpp23
1 files changed, 8 insertions, 15 deletions
diff --git a/matlab/mex/astra_mex_plugin_c.cpp b/matlab/mex/astra_mex_plugin_c.cpp
index 2d9b9a0..177fcf4 100644
--- a/matlab/mex/astra_mex_plugin_c.cpp
+++ b/matlab/mex/astra_mex_plugin_c.cpp
@@ -37,9 +37,6 @@ $Id$
#include "astra/PluginAlgorithm.h"
-#include "Python.h"
-#include "bytesobject.h"
-
using namespace std;
using namespace astra;
@@ -52,29 +49,25 @@ using namespace astra;
void astra_mex_plugin_get_registered(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[])
{
astra::CPluginAlgorithmFactory *fact = astra::CPluginAlgorithmFactory::getSingletonPtr();
- PyObject *dict = fact->getRegistered();
- PyObject *key, *value;
- Py_ssize_t pos = 0;
- while (PyDict_Next(dict, &pos, &key, &value)) {
- mexPrintf("%s: %s\n",PyBytes_AsString(key),PyBytes_AsString(value));
+ std::map<std::string, std::string> mp = fact->getRegisteredMap();
+ for(std::map<std::string,std::string>::iterator it=mp.begin();it!=mp.end();it++){
+ mexPrintf("%s: %s\n",it->first.c_str(), it->second.c_str());
}
- Py_DECREF(dict);
}
//-----------------------------------------------------------------------------------------
-/** astra_mex_plugin('register', name, class_name);
+/** astra_mex_plugin('register', class_name);
*
* Register plugin.
*/
void astra_mex_plugin_register(int nlhs, mxArray* plhs[], int nrhs, const mxArray* prhs[])
{
- if (3 <= nrhs) {
- string name = mexToString(prhs[1]);
- string class_name = mexToString(prhs[2]);
+ if (2 <= nrhs) {
+ string class_name = mexToString(prhs[1]);
astra::CPluginAlgorithmFactory *fact = astra::CPluginAlgorithmFactory::getSingletonPtr();
- fact->registerPlugin(name, class_name);
+ fact->registerPlugin(class_name);
}else{
- mexPrintf("astra_mex_plugin('register', name, class_name);\n");
+ mexPrintf("astra_mex_plugin('register', class_name);\n");
}
}