summaryrefslogtreecommitdiff
path: root/src/fun.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/fun.h')
-rw-r--r--src/fun.h96
1 files changed, 69 insertions, 27 deletions
diff --git a/src/fun.h b/src/fun.h
index e5e1fff..673ad70 100644
--- a/src/fun.h
+++ b/src/fun.h
@@ -13,37 +13,79 @@
//extern "C" int fun (double* answ, double* in1, int in1_row, std::string name, std::string opt);
extern "C"
-{
+{
- typedef enum
- {
- TYPE_DOUBLE,
- TYPE_STRING,
+ /**
+ *
+ * @brief Enumeration for the data types suported by the fun()
+ *
+ */
+ typedef enum {
+ TYPE_DOUBLE, /**similar to scilab double*/
+ TYPE_COMPLEX, /**similar to scilab complex*/
+ TYPE_STRING, /**similar to scilab string*/
+ TYPE_STRUCT, /**similar to scilab struct*/
}FUNCTYPE;
- typedef struct
- {
- FUNCTYPE type;
- int n_in_rows;
- int n_in_cols;
- int n_out_rows;
- int n_out_cols;
- int is_in_cmplx;
- int is_out_cmplx;
- void* in_data_real;
- void* in_data_img;
- void* out_data_real;
- void* out_data_img;
- }FUNCARGS;
-
+ /**
+ * @struct FUNCSTRUCT
+ * @brief Struct used to pass structs to Octave from the fun library
+ * @var type
+ *
+ */
+
typedef struct {
- int n_in_arguments; // number of input arguments
- int n_out_arguments; // number of output arguments
- int n_out_user; // number of output arguments
- char *err; // Name
- //char *package; //Name of octave package to be loaded
- FUNCARGS *argument;
-} FUNCCALL;
+ FUNCTYPE type; /// Type of value in struct's field
+ void* key; /// key of struct field
+ int rows; /// rows dimension of struct field's value
+ int cols; /// cols dimension of struct fields' value
+ void* dataReal; /// Real data if struct field's value is real
+ void* dataImg; /// Img data if struct field's value is complex
+ void* str; /// String data if struct field's value is string
+ } FUNCSTRUCT;
+
+ /**
+ * @brief Struct used to send/receive Scilab data to/from the gateway to fun.cpp API
+ *
+ */
+ typedef struct {
+ FUNCTYPE type; /// Type of data
+ int n_in_rows; /// Input rows dimension of data
+ int n_in_cols; /// Input cols dimension of data
+ int n_in_struct_len; /// input struct length
+ int n_out_rows; /// Ouput rows dimension of data
+ int n_out_cols; /// Output cold dimension of data
+ int n_out_struct_len; /// Output struct length
+ int is_in_cmplx; /// Input is a Complex data type
+ int is_out_cmplx; /// Output is a Complex data type
+ int is_out_struct; /// Output is a Struct data type
+ void* in_data_real; /// Input real part (complex) array
+ void* in_data_img; /// Input imaginary part (complex) array
+ void* out_data_real; /// Output real part (complex) array
+ void* out_data_img; /// Output imaginary part (complex) array
+ FUNCSTRUCT* in_struct; /// Input struct
+ FUNCSTRUCT* out_struct; /// Output struct
+ } FUNCARGS;
+ /**
+ * @brief Struct used to call and pass the data to fun.cpp API
+ *
+ */
+ typedef struct {
+ int n_in_arguments; /// Number of input arguments
+ int n_out_arguments; /// Number of output arguments
+ int n_out_user; /// Number of output arguments
+ char *err; /// Return errors
+ //char *package; //Name of octave package to be loaded
+ FUNCARGS *argument; /// Struct defining and containing the data
+ } FUNCCALL;
+ /**
+ * @brief API Function to call/receive and pass the data to fun API
+ *
+ *
+ * @param arr Input data FUNCARGS
+ * @param call Input Arguments FUNCCALL
+ * @return int
+ */
int fun(FUNCARGS *arr, FUNCCALL *call);
}