summaryrefslogtreecommitdiff
path: root/src/fun.h
blob: f79fbf47f4774a0ad13e6d943092c7e36b714000 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
// Copyright (C) 2019 - IIT Bombay - FOSSEE
//
// This file must be used under the terms of the CeCILL.
// This source file is licensed as described in the file COPYING, which
// you should have received as part of this distribution.  The terms
// are also available at
// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
// Author: Rupak Rokade
// Organization: FOSSEE, IIT Bombay
// Email: toolbox@scilab.in

#define fun_h__
//extern "C" int fun (double* answ, double* in1, int in1_row, std::string name, std::string opt);

extern "C"
{

	typedef enum {
		TYPE_DOUBLE,
		TYPE_COMPLEX,
		TYPE_STRING,
		TYPE_STRUCT,
	}FUNCTYPE;

	typedef struct {
		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;

	typedef struct {
		FUNCTYPE type;
		int n_in_rows;
		int n_in_cols;
		int n_in_struct_len; 	// ip struct length
		int n_out_rows;
		int n_out_cols;
		int n_out_struct_len;	// op struct length
		int is_in_cmplx;
		int is_out_cmplx;
		int is_out_string;
		int is_out_struct;
		void* in_data_real;
		void* in_data_img;
		void* out_data_real;
		void* out_data_img;
		FUNCSTRUCT* in_struct;
		FUNCSTRUCT* out_struct;
	} FUNCARGS;

	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;

	int fun(FUNCARGS *arr, FUNCCALL *call);
}