utf: module signal_processing
[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     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);
34 }
35
36 typedef void(*dgetx_f_t)(double*, int*, int*);
37 typedef void(*dgety_f_t)(double*, int*, int*);
38
39 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);
40
41 SIGNAL_PROCESSING_IMPEXP void dgety_f(double* x, int* siz, int* iss);
42 SIGNAL_PROCESSING_IMPEXP void dgetx_f(double* x, int* siz, int* iss);
43
44 class SIGNAL_PROCESSING_IMPEXP Signalprocessingfunctions
45 {
46
47 public :
48     Signalprocessingfunctions(const std::string& callerName);
49     ~Signalprocessingfunctions();
50
51     void setDgetx(types::Callable*);
52     void setDgety(types::Callable*);
53
54     void setDgetx(types::String*);
55     void setDgety(types::String*);
56
57     void execDgetx(double*, int* , int*);
58     void execDgety(double*, int* , int*);
59
60     void callDgetx(double* x, int* siz, int* iss);
61     void callDgety(double* y, int* siz, int* iss);
62
63     void execFunctionDgetx(double*, int*, int* );
64     void execFunctionDgety(double*, int* , int* );
65
66 private :
67
68     std::vector<types::InternalType*> m_FArgs;
69     std::map<std::string, void*> m_staticFunctionMap;
70     std::string m_strCaller;
71
72     types::Callable* m_pCallDgetx;
73     types::Callable* m_pCallDgety;
74
75     types::String* m_pStringDgetxDyn;
76     types::String* m_pStringDgetyDyn;
77
78     types::String* m_pStringDgetxStatic;
79     types::String* m_pStringDgetyStatic;
80
81     std::vector<types::InternalType*> m_dgetxArgs;
82     std::vector<types::InternalType*> m_dgetyArgs;
83
84
85
86
87
88 };
89
90 class SIGNAL_PROCESSING_IMPEXP Signalprocessing
91 {
92     // differential equation functions
93 private :
94     static Signalprocessingfunctions* m_Signalprocessingfunctions;
95
96 public :
97     static void addSignalprocessingfunctions(Signalprocessingfunctions* _spFunction);
98     static void removeSignalprocessingfunctions();
99     static Signalprocessingfunctions* getSignalprocessingfunctions();
100 };
101 #endif /* !__SIGNALPROCESSING_HXX__ */