0595c70c97d46f5973db5d346f2d8948d2c59837
[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 * This file must be used under the terms of the CeCILL.
6 * This source file is licensed as described in the file COPYING, which
7 * you should have received as part of this distribution.  The terms
8 * are also available at
9 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10 *
11 */
12 /*--------------------------------------------------------------------------*/
13
14
15 #ifndef __SIGNALPROCESSING_HXX__
16 #define __SIGNALPROCESSING_HXX__
17
18 #include <map>
19 #include "dynlib_signal_processing.h"
20 #include "string.hxx"
21 #include "callable.hxx"
22
23 extern "C"
24 {
25 #include "Thread_Wrapper.h"
26 }
27
28 extern "C"
29 {
30     extern void C2F(tscccf)(double *x, double *y, int *length, double *cxy, double *xymean, int *lag, int *error);
31     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);
32 }
33
34 typedef void(*dgetx_f_t)(double*, int*, int*);
35 typedef void(*dgety_f_t)(double*, int*, int*);
36
37 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);
38
39 SIGNAL_PROCESSING_IMPEXP void dgety_f(double* x, int* siz, int* iss);
40 SIGNAL_PROCESSING_IMPEXP void dgetx_f(double* x, int* siz, int* iss);
41
42 class SIGNAL_PROCESSING_IMPEXP Signalprocessingfunctions
43 {
44
45 public :
46     Signalprocessingfunctions(std::wstring callerName);
47     ~Signalprocessingfunctions();
48
49     void setDgetx(types::Callable*);
50     void setDgety(types::Callable*);
51
52     void setDgetx(types::String*);
53     void setDgety(types::String*);
54
55     void execDgetx(double*, int* , int*);
56     void execDgety(double*, int* , int*);
57
58     void callDgetx(double* x, int* siz, int* iss);
59     void callDgety(double* y, int* siz, int* iss);
60
61     void execFunctionDgetx(double*, int*, int* );
62     void execFunctionDgety(double*, int* , int* );
63
64 private :
65
66     std::vector<types::InternalType*> m_FArgs;
67     std::map<std::wstring, void*> m_staticFunctionMap;
68     std::wstring m_wstrCaller;
69
70     types::Callable* m_pCallDgetx;
71     types::Callable* m_pCallDgety;
72
73     types::String* m_pStringDgetxDyn;
74     types::String* m_pStringDgetyDyn;
75
76     types::String* m_pStringDgetxStatic;
77     types::String* m_pStringDgetyStatic;
78
79     std::vector<types::InternalType*> m_dgetxArgs;
80     std::vector<types::InternalType*> m_dgetyArgs;
81
82
83
84
85
86 };
87
88 class SIGNAL_PROCESSING_IMPEXP Signalprocessing
89 {
90     // differential equation functions
91 private :
92     static std::map<__threadId, Signalprocessingfunctions*> m_mapSignalprocessingfunctions;
93
94 public :
95     static void addSignalprocessingfunctions(Signalprocessingfunctions* _spFunction);
96     static void removeSignalprocessingfunctions();
97     static Signalprocessingfunctions* getSignalprocessingfunctions();
98 };
99 #endif /* !__SIGNALPROCESSING_HXX__ */