hpparser.h

Go to the documentation of this file.
00001 #ifndef HPPARSER_H
00002 #define HPPARSER_H
00003 
00004 #include <util.h>
00005 
00038 // @{
00039  
00044 #define PRS_OK                                                          0
00045 
00049 #define PRS_ERROR_PAR                                   1
00050 
00054 #define PRS_ERROR_MEMORY                                2
00055 
00059 #define PRS_ERROR_VARIABLE                              3
00060 
00064 #define PRS_ERROR_ARG                                   4
00065 
00069 #define PRS_ERROR_STACK                                 5
00070 
00074 #define PRS_ERROR_SLOT_VAR                              6
00075 
00079 #define PRS_ERROR_SLOT_FUNC                     7
00080 
00084 #define PRS_ERROR_NOT_IMPLEMENTED       99
00085 // @}
00086 
00091 // @{
00092 
00097 #define xNEG            0x39976
00098 
00103 #define xABS            0x39a07
00104 
00109 #define xPLUS           0x39b58
00110 
00115 #define xMINUS          0x39cfc
00116 
00121 #define xMULTIPLY       0x39de8
00122 
00127 #define xDIVIDE 0x39f49
00128 
00133 #define xPOW            0x3a097
00134 
00139 #define xROOT           0x3a200
00140 
00145 #define xSIGN           0x3a3ee
00146 
00151 #define xSQRT           0x3a442
00152 
00157 #define xSQ                     0x3a4ef
00158 
00163 #define xSIN            0x3a57c
00164 
00169 #define xCOS            0x3a5d0
00170 
00175 #define xTAN            0x3a624
00176 
00181 #define xSINH           0x3a678         // Not yet implemented
00182 
00187 #define xCOSH           0x3a6c2         // Not yet implemented
00188 
00193 #define xTANH           0x3a70c         // Not yet implemented
00194 
00199 #define xASIN           0x3a756
00200 
00205 #define xACOS           0x3a7dc
00206 
00211 #define xATAN           0x3a844
00212 
00217 #define xASINH          0x3a88e         // Not yet implemented
00218 
00223 #define xACOSH          0x3a8d8         // Not yet implemented
00224 
00229 #define xATANH          0x3a94f         // Not yet implemented
00230 
00235 #define xEXP            0x3a9b7
00236 
00241 #define xLN                     0x3aa01
00242 
00247 #define xLOG            0x3aa73
00248 
00253 #define xALOG           0x3aae5
00254 
00259 #define xFACT           0x3abaf         // Not yet implemented
00260 
00265 #define xIP                     0x3ac3d
00266 
00271 #define xFP                     0x3ac87
00272 
00277 #define xFLOOR          0x3acd1         // Not yet implemented
00278 
00283 #define xCEIL           0x3ad1b         // Not yet implemented
00284 
00289 #define xMOD      0x3afcb               // Not yet implemented
00290 
00295 #define xRAND           0x3b3e6         // Not yet implemented
00296 
00301 #define xAND            0x3ca07         // Not yet implemented
00302 
00307 #define xOR                     0x3ca8d         // Not yet implemented
00308 
00313 #define xNOT            0x3cb13         // Not yet implemented
00314 
00319 define xXOR             0x3cb7a         // Not yet implemented
00320 
00325 #define xEQ                     0x3cbf6
00326 
00331 #define xDIFF           0x3cd21
00332 
00337 #define xLT                     0x3ce42
00338 
00343 #define xGT                     0x3cee1
00344 
00349 #define xLE                     0x3cf80
00350 
00355 #define xGE                     0x3d01f
00356 
00361 #define xDER            0x3d258         // Not yet implemented
00362 
00367 #define xINTEGRAL       0x3d47e         // Not yet implemented
00368 
00373 #define xSUM      0x3d503
00374 // @}
00375 
00380 // @{
00381 
00382 #define C_TypeVal                               1
00383 #define C_TypeFunc                      2
00384 #define C_TypeIdent                     3
00385 #define C_TypeSymb                      4
00386 
00387 // @}
00388 
00393 typedef struct entry entry_t;
00394 typedef struct function function_t;
00395 typedef struct stackeval stackeval_t;
00396 
00401 typedef struct
00402 {
00403         int Type;
00404         union
00405         {
00406            double Val;
00407            char *Ident;
00408            int Func;
00409            entry_t *Symb;
00410         } data;
00411 } element_t;
00412 
00420 extern char *prs_error (int error);
00421 
00430 void prs_alg_set_angle (int angmode);
00431 
00441 extern int prs_alg_create (entry_t **stack, int size);
00442 
00452 extern int prs_alg_add_val (entry_t *stack, int level, double value);
00453 
00463 extern int prs_alg_add_ident (entry_t *stack, int level, char *ident);
00464 
00474 extern int prs_alg_add_func (entry_t *stack, int level, int code);
00475 
00485 extern int prs_alg_add_symb (entry_t *stack, int level, entry_t *expr);
00486 
00496 extern int prs_alg_eval (entry_t *stack, double *value);
00497 
00506 extern int prs_alg_set_var (char *var, double value);
00507 
00516 extern int prs_alg_get_size (entry_t *stack, int *size);
00517 
00526 extern int prs_alg_set_size (entry_t *stack, int size);
00527 
00537 extern int prs_alg_first_var (entry_t *stack, char **name);
00538 
00548 extern int prs_alg_next_var (entry_t *stack, char **name);
00549 
00559 extern int prs_alg_get_element (entry_t *stack, int level, element_t *element);
00560 
00572 extern function_t *prs_alg_func_create (int code, int nbarg, void *newfunc);
00573 
00585 extern int prs_alg_func_reg (function_t *newfunc, function_t **oldfunc);
00586 
00587 extern double prs_val (stackeval_t *x);
00588 #endif

Generated on Wed May 23 20:11:39 2007 for HPParser by  doxygen 1.5.0