Merge remote-tracking branch 'origin/6.1'
[scilab.git] / scilab / modules / signal_processing / src / cpp / signalprocessingfunctions.hxx
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2014 - Scilab Enterprises - Anais AUBERT
4 *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13 *
14 */
15 /*--------------------------------------------------------------------------*/
16
17
18 #ifndef __SIGNALPROCESSING_HXX__
19 #define __SIGNALPROCESSING_HXX__
20
21 #include <map>
22 #include "dynlib_signal_processing.h"
23 #include "string.hxx"
24 #include "callable.hxx"
25
26 extern "C"
27 {
28 #include "Thread_Wrapper.h"
29 }
30
31 extern "C"
32 {
33     extern void C2F(tscccf)(double *x, double *y, int *length, double *cxy, double *xymean, int *lag, int *error);
34     extern void C2F(cmpse2)(int *iSect, int *iTotalSize, int *iMode, void *pXFunction, void *pYFunction, double *xa, double *xr, double *xi, double *zr, double *zi, int *error);
35
36     extern void C2F(cmpse3)(int *mfft, int *mnx, int *iMode, double *x, double *yi, double *xu, double *xui, double * w, double *wi, int *iErr, int *ichaud, int *nbx);
37 }
38
39 typedef void(*dgetx_f_t)(double*, int*, int*);
40 typedef void(*dgety_f_t)(double*, int*, int*);
41
42 extern void C2F(cmpse2)(int *iSect, int *iTotalSize, int *iMode, dgetx_f_t, dgety_f_t, double *xa, double *xr, double *xi, double *zr, double *zi, int *error);
43
44 SIGNAL_PROCESSING_IMPEXP void dgety_f(double* x, int* siz, int* iss);
45 SIGNAL_PROCESSING_IMPEXP void dgetx_f(double* x, int* siz, int* iss);
46
47 class SIGNAL_PROCESSING_IMPEXP Signalprocessingfunctions
48 {
49
50 public :
51     Signalprocessingfunctions(const std::wstring& callerName);
52     ~Signalprocessingfunctions();
53
54     void setDgetx(types::Callable*);
55     void setDgety(types::Callable*);
56
57     void setDgetx(types::String*);
58     void setDgety(types::String*);
59
60     void execDgetx(double*, int* , int*);
61     void execDgety(double*, int* , int*);
62
63     void callDgetx(double* x, int* siz, int* iss);
64     void callDgety(double* y, int* siz, int* iss);
65
66     void execFunctionDgetx(double*, int*, int* );
67     void execFunctionDgety(double*, int* , int* );
68
69 private :
70
71     std::vector<types::InternalType*> m_FArgs;
72     std::map<std::wstring, void*> m_staticFunctionMap;
73     std::wstring m_wstrCaller;
74
75     types::Callable* m_pCallDgetx;
76     types::Callable* m_pCallDgety;
77
78     types::String* m_pStringDgetxDyn;
79     types::String* m_pStringDgetyDyn;
80
81     types::String* m_pStringDgetxStatic;
82     types::String* m_pStringDgetyStatic;
83
84     std::vector<types::InternalType*> m_dgetxArgs;
85     std::vector<types::InternalType*> m_dgetyArgs;
86
87
88
89
90
91 };
92
93 class SIGNAL_PROCESSING_IMPEXP Signalprocessing
94 {
95     // differential equation functions
96 private :
97     static Signalprocessingfunctions* m_Signalprocessingfunctions;
98
99 public :
100     static void addSignalprocessingfunctions(Signalprocessingfunctions* _spFunction);
101     static void removeSignalprocessingfunctions();
102     static Signalprocessingfunctions* getSignalprocessingfunctions();
103 };
104 #endif /* !__SIGNALPROCESSING_HXX__ */