📄 libfann.i.orig
字号:
/* File : fann.i */
%module libfann
%include "typemaps.i"
%{
#include "../src/include/fann.h"
%}
%define CHECKED_FLOAT_ARRAY(typemap_name, expected_length)
%typemap(in) typemap_name {
int i;
if (!PySequence_Check($input)) {
PyErr_SetString(PyExc_ValueError,"Expected a sequence");
SWIG_fail;
}
if (PySequence_Length($input) != expected_length) {
PyErr_SetString(PyExc_ValueError,"Sequence has wrong length");
SWIG_fail;
}
$1 = (float *) malloc(PySequence_Length($input)*sizeof(float));
for (i = 0; i < PySequence_Length($input); i++) {
PyObject *o = PySequence_GetItem($input,i);
if (PyNumber_Check(o)) {
$1[i] = (float) PyFloat_AsDouble(o);
} else {
PyErr_SetString(PyExc_ValueError,"Sequence elements must be numbers");
Py_DECREF(o);
SWIG_fail;
}
Py_DECREF(o);
}
}
%typemap(freearg) typemap_name {
if ($1) free($1);
}
%enddef
CHECKED_FLOAT_ARRAY(fann_type *input, arg1->num_input)
CHECKED_FLOAT_ARRAY(fann_type *desired_output, arg1->num_output)
%typemap(in) int[ANY] {
int i;
if (!PySequence_Check($input)) {
PyErr_SetString(PyExc_ValueError,"Expected a sequence");
SWIG_fail;
}
if (PySequence_Length($input) == 0) {
PyErr_SetString(PyExc_ValueError,"Size mismatch. Expected some elements");
SWIG_fail;
}
$1 = (unsigned int *) malloc(PySequence_Length($input)*sizeof(unsigned int));
for (i = 0; i < PySequence_Length($input); i++) {
PyObject *o = PySequence_GetItem($input,i);
if (PyNumber_Check(o)) {
$1[i] = (int) PyInt_AsLong(o);
} else {
PyErr_SetString(PyExc_ValueError,"Sequence elements must be numbers");
Py_DECREF(o);
SWIG_fail;
}
Py_DECREF(o);
}
}
%typemap(freearg) int[ANY] {
if ($1) free($1);
}
%apply int[ANY] {int *, unsigned int*};
typedef double fann_type;
%typemap(out) PyObject* {
$result = $1;
}
// create_array is used instead
%ignore fann_create;
%ignore fann_create_shortcut;
%rename(fann_run_old) fann_run;
%rename(fann_run) fann_run2;
%rename(fann_test_old) fann_test;
%rename(fann_test) fann_test2;
#define FANN_INCLUDE
%include "../src/include/fann.h"
%include "../src/include/fann_data.h"
%include "../src/include/fann_activation.h"
// Helper functions
PyObject* fann_run2(struct fann *ann, fann_type *input);
PyObject* fann_test2(struct fann *ann, fann_type *input, fann_type *desired_output);
PyObject* get_train_data_input(struct fann_train_data *ann, int row);
PyObject* get_train_data_output(struct fann_train_data *ann, int row);
int fann_is_NULL(struct fann *ann);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -