00001
#ifndef _PROCSCRIPT_PARSER_FUNCTABLE_H_
00002
#define _PROCSCRIPT_PARSER_FUNCTABLE_H_
00003
00004
union FunctionPointer
00005 {
00006
Segment (*a_fnctptr_a_m_s_d_s) (
Segment ,
Map2D ,
char* ,
double ,
char* );
00007
00008 double (*d_fnctptr_a) (
Segment );
00009
00010 double (*d_fnctptr_a_s) (
Segment ,
char* );
00011
00012 double (*d_fnctptr_d) (
double );
00013
00014 double (*d_fnctptr_d_d) (
double ,
double );
00015
00016 double (*d_fnctptr_d_d_d_d) (
double ,
double ,
double ,
double );
00017
00018 double (*d_fnctptr_d_s) (
double ,
char* );
00019
00020 double (*d_fnctptr_g) (
PeakGroup );
00021
00022 double (*d_fnctptr_g_s_d) (
PeakGroup ,
char* ,
double );
00023
00024 double (*d_fnctptr_m) (
Map2D );
00025
00026 double (*d_fnctptr_m_d) (
Map2D ,
double );
00027
00028 double (*d_fnctptr_m_d_d) (
Map2D ,
double ,
double );
00029
00030 double (*d_fnctptr_m_d_d_d_d_s) (
Map2D ,
double ,
double ,
double ,
double ,
char* );
00031
00032 double (*d_fnctptr_m_s) (
Map2D ,
char* );
00033
00034 double (*d_fnctptr_r) ( VariantArray );
00035
00036 double (*d_fnctptr_r_d) ( VariantArray ,
double );
00037
00038 double (*d_fnctptr_r_d_d) ( VariantArray ,
double ,
double );
00039
00040 double (*d_fnctptr_r_m_s) ( VariantArray ,
Map2D ,
char* );
00041
00042 double (*d_fnctptr_r_s) ( VariantArray ,
char* );
00043
00044 double (*d_fnctptr_s) (
char* );
00045
00046 double (*d_fnctptr_s_m_s_d) (
char* ,
Map2D ,
char* ,
double );
00047
00048 double (*d_fnctptr_s_s) (
char* ,
char* );
00049
00050 double (*d_fnctptr_s_s_d_d_d_d) (
char* ,
char* ,
double ,
double ,
double ,
double );
00051
00052 double (*d_fnctptr_s_s_s_d_d) (
char* ,
char* ,
char* ,
double ,
double );
00053
00054 double (*d_fnctptr_s_s_s_s) (
char* ,
char* ,
char* ,
char* );
00055
00056 double (*d_fnctptr_v) (
void );
00057
00058
PeakGroup (*g_fnctptr_g) (
PeakGroup );
00059
00060
PeakGroup (*g_fnctptr_g_m_r_s) (
PeakGroup ,
Map2D , VariantArray ,
char* );
00061
00062
PeakGroup (*g_fnctptr_g_m_r_s_d_s_d_d) (
PeakGroup ,
Map2D , VariantArray ,
char* ,
double ,
char* ,
double ,
double );
00063
00064
PeakGroup (*g_fnctptr_r) ( VariantArray );
00065
00066 SegmentHandler (*h_fnctptr_h_g) ( SegmentHandler ,
PeakGroup );
00067
00068 SegmentHandler (*h_fnctptr_s) (
char* );
00069
00070
Map2D (*m_fnctptr_a_m_m) (
Segment ,
Map2D ,
Map2D );
00071
00072
Map2D (*m_fnctptr_g_m_m) (
PeakGroup ,
Map2D ,
Map2D );
00073
00074
Map2D (*m_fnctptr_h_g) ( SegmentHandler ,
PeakGroup );
00075
00076
Map2D (*m_fnctptr_m) (
Map2D );
00077
00078
Map2D (*m_fnctptr_m_d) (
Map2D ,
double );
00079
00080
Map2D (*m_fnctptr_m_m_a) (
Map2D ,
Map2D ,
Segment );
00081
00082
Map2D (*m_fnctptr_m_m_m_m) (
Map2D ,
Map2D ,
Map2D ,
Map2D );
00083
00084
Map2D (*m_fnctptr_m_s) (
Map2D ,
char* );
00085
00086
Map2D (*m_fnctptr_m_s_d) (
Map2D ,
char* ,
double );
00087
00088
Map2D (*m_fnctptr_r_m) ( VariantArray ,
Map2D );
00089
00090
Map2D (*m_fnctptr_s) (
char* );
00091
00092 VariantArray (*r_fnctptr_a) (
Segment );
00093
00094 VariantArray (*r_fnctptr_d_d) (
double ,
double );
00095
00096 VariantArray (*r_fnctptr_d_d_d_d) (
double ,
double ,
double ,
double );
00097
00098 VariantArray (*r_fnctptr_g) (
PeakGroup );
00099
00100 VariantArray (*r_fnctptr_g_s) (
PeakGroup ,
char* );
00101
00102 VariantArray (*r_fnctptr_h_g) ( SegmentHandler ,
PeakGroup );
00103
00104 VariantArray (*r_fnctptr_m) (
Map2D );
00105
00106 VariantArray (*r_fnctptr_m_r_d_d) (
Map2D , VariantArray ,
double ,
double );
00107
00108 VariantArray (*r_fnctptr_m_s_d) (
Map2D ,
char* ,
double );
00109
00110 VariantArray (*r_fnctptr_r) ( VariantArray );
00111
00112 VariantArray (*r_fnctptr_r_g) ( VariantArray ,
PeakGroup );
00113
00114 VariantArray (*r_fnctptr_s) (
char* );
00115
00116 VariantArray (*r_fnctptr_s_s_s) (
char* ,
char* ,
char* );
00117
00118
char* (*s_fnctptr_d_d) (
double ,
double );
00119
00120
char* (*s_fnctptr_s) (
char* );
00121
00122 };
00123
00124
typedef union FunctionPointer FunctionPointer;
00125
00126
struct MQFunction
00127 {
00128 PrimExp args[10];
00129 PrimExp rval;
00130
int nargs;
00131
union FunctionPointer pfunc;
00132
char* ftype;
00133 };
00134
00135
typedef struct MQFunction MQFunction;
00136
00137
struct FunctionTable
00138 {
00139
char *fname;
00140
union FunctionPointer pfunc;
00141
char *ftype;
00142 };
00143
00144
typedef struct FunctionTable FunctionTable;
00145
00146 FunctionTable* FunctionTable_createArray(
int size);
00147
void FunctionTable_init();
00148
00149 Variant CallFunction(MQFunction F, MQFunction P);
00150
00151
extern MQFunction* paramstack;
00152
extern FunctionTable arith_fncts[];
00153
00154
#endif
00155