hpstack.h

Go to the documentation of this file.
00001 #ifndef HPSTACK_H
00002 #define HPSTACK_H
00003 
00004 #include <stdarg.h>
00005 #include <hpparser.h>
00006 
00011 #define isnan(x) (((*(unsigned long *)&(x) & 0x7ff00000)== 0x7ff00000) && (((*(unsigned long *)&(x) & 0x000fffff)!= 0) || ((*((unsigned long *)&(x) + 1) & 0xffffffff)!= 0)))
00012 
00017 #define isinf(x) (((*(unsigned long *)&(x) & 0x7ff00000)== 0x7ff00000) && (((*(unsigned long *)&(x) & 0x000fffff)== 0) && ((*((unsigned long *)&(x) + 1) & 0xffffffff)== 0)))
00018 
00023 #define isfinite(x) (((*(unsigned long *)&(x) & 0x7ff00000) != 0x7ff00000))
00024 
00029 #define isneg (x) (((*(unsigned long *)&(x) & 0x80000000) != 0x80000000))
00030 
00115 //
00116 // INCLUDES
00117 //
00118 
00119 #include <saturn.h>                     // Needed for #define SAT_ and functions sat_
00120 
00121 //
00122 // CONSTANTS
00123 //
00124 
00129 // @{
00130 
00135 #define HPS_OK                                                          0
00136 
00140 #define HPS_ERROR_PAR                                   1
00141 
00145 #define HPS_ERROR_STACK                                 2
00146 
00150 #define HPS_ERROR_OVERFLOW                              3
00151 
00155 #define HPS_ERROR_SAT_MEMORY                    4
00156 
00160 #define HPS_ERROR_ARM_MEMORY                    5
00161 
00165 #define HPS_ERROR_TYPE                                  6
00166 
00170 #define HPS_ERROR_NOT_IMPLEMENTED       99
00171 // @}
00172 
00177 // @{
00178 
00182 #define DOINT           0x02614
00183 
00186 #define DOHXS           0x02A4E
00187 
00190 #define DOREAL          0x02933
00191 
00194 #define DOCMP           0x02977
00195 
00198 #define DOCSTR          0x02A2C
00199 
00202 #define DOLIST          0x02A74
00203 
00206 #define DOARRY          0x029E8
00207 
00210 #define DOMATRIX                0x20686
00211 
00214 #define DOIDNT          0x02E48
00215 
00218 #define DOSYMB          0x02AB8
00219 
00222 #define SEMI            0x0312B
00223 
00226 #define DOFUNC          0x01902
00227 
00230 #define DOROMP          0x02E92
00231 
00232  // @}
00237 typedef struct
00238 {
00243         double re;
00248         double im;
00249 } complex_t;
00250 
00255 typedef struct hpobj hpobj_t;
00256 
00261 typedef struct list list_t;
00262 
00267 typedef list_t array_t;
00268 
00282 extern int hps_init (unsigned *stack);
00283 
00292 extern int hps_exit (unsigned stack);
00294 
00299 
00307 extern int hps_depth (int *depth);
00308 
00316 extern int hps_avail (int *avail);
00323 extern int hps_drop (void);
00324 
00332 extern int hps_dropn (int levels);
00333 
00340 extern int hps_swap (void);
00341 
00348 extern int hps_rot (void);
00349 
00356 extern int hps_unrot (void);
00357 
00365 extern int hps_roll (int levels);
00366 
00374 extern int hps_rolld (int levels);
00375 // @}
00376 
00381 
00386 
00397 extern int hps_convert (int flag);
00398 
00411 extern int hps_pick_int (int level, LONGLONG *value);
00412 
00423 extern int hps_pick_uint (int level, ULONGLONG *value);
00424 
00437 extern int hps_pick_real (int level, double *value);
00438 
00449 extern int hps_pick_complex (int level, complex_t *value);
00450 
00461 extern int hps_pick_str (int level, char **value);
00462 
00473 extern int hps_pick_list (int level, list_t **value);
00474 
00485 extern int hps_pick_array (int level, array_t **value);
00486 
00497 extern int hps_pick_ident (int level, char **value);
00498 
00509 extern int hps_pick_symb (int level, entry_t **value);
00510 
00519 extern int hps_pop_int (LONGLONG *value);
00520 
00529 extern int hps_pop_uint (ULONGLONG *value);
00530 
00539 extern int hps_pop_real (double *value);
00540 
00549 extern int hps_pop_complex (complex_t *value);
00550 
00559 extern int hps_pop_str (char **value);
00560 
00569 extern int hps_pop_list (list_t **value);
00570 
00579 extern int hps_pop_array (array_t **value);
00580 
00589 extern int hps_pop_ident (char **value);
00590 
00599 extern int hps_pop_symb (entry_t **value);
00600 
00610 extern int hps_push_int (LONGLONG value);
00611 
00621 extern int hps_push_uint (ULONGLONG value);
00622 
00632 extern int hps_push_real (double value);
00633 
00643 extern int hps_push_complex (complex_t *value);
00644 
00654 extern int hps_push_str (char *value);
00655 
00665 extern int hps_push_list (list_t *value);
00666 
00676 extern int hps_push_array (array_t *value);
00677 
00687 extern int hps_push_ident (char *value);
00688 
00698  extern int hps_push_symb (entry_t *value);
00699 
00700 // @}
00701 
00706 
00717 extern int hps_pick (int level, hpobj_t *obj);
00718 
00731 extern int hps_pick_type (int level, int type, void *data);
00732 
00742 extern int hps_pop (hpobj_t *obj);
00743 
00755 extern int hps_pop_type (int type, void *data);
00756 
00767 extern int hps_push (hpobj_t *obj);
00768 
00779 extern int hps_push_type (int type, void *data);
00780 
00781 // @}
00782 // @}
00783 
00791 extern char *hps_error (int error);
00792 
00797 
00802 
00810 extern int hps_list_create (list_t **list);
00811 
00819 extern int hps_list_destroy (list_t **list);
00820 
00829 extern int hps_list_add (list_t *list, hpobj_t *obj);
00830 
00840 extern int hps_list_get (list_t *list, int ind, hpobj_t **obj);
00841 
00851 extern int hps_list_get_int (list_t *list, int ind, LONGLONG *val);
00852 
00862 extern int hps_list_get_uint (list_t *list, int ind, ULONGLONG *val);
00863 
00873 extern int hps_list_get_real (list_t *list, int ind, double *val);
00874 
00884 extern int hps_list_get_str (list_t *list, int ind, char **val);
00885 
00895 extern int hps_list_get_list (list_t *list, int ind, list_t **val);
00896 
00906 extern int hps_list_get_array (list_t *list, int ind, array_t **val);
00907 
00917 extern int hps_list_get_ident (list_t *list, int ind, char **val);
00918 
00928 extern int hps_list_get_symb (list_t *list, int ind, entry_t **val);
00929 
00939 extern int hps_list_add_type (list_t *list, int type, void *data);
00940 
00949 extern int hps_list_add_int (list_t *list, LONGLONG value);
00950 
00959 extern int hps_list_add_uint (list_t *list, ULONGLONG value);
00960 
00969 extern int hps_list_add_real (list_t *list, double value);
00970 
00979 extern int hps_list_add_complex (list_t *list, complex_t *value);
00980 
00989 extern int hps_list_add_str (list_t *list, char *value);
00990 
00999 extern int hps_list_add_list (list_t *list, list_t *value);
01000 
01009 extern int hps_list_add_array (list_t *list, array_t *value);
01010 
01019 extern int hps_list_add_ident (list_t *list, char *value);
01020 // @}
01021 
01026 
01034  extern int hps_array_create (array_t **array);
01035 
01047 extern int hps_array_build (array_t **array, void *data, int type, int nb, ...);
01048 
01056 extern int hps_array_destroy (array_t **array);
01057 
01069 extern int hps_array_get (array_t *array, hpobj_t **obj, int nb, ...);
01070 
01079 extern int hps_array_add (array_t *array, hpobj_t *obj);
01080 
01090 extern int hps_array_add_type (array_t *array, int type, void *data);
01091 
01100 extern int hps_array_add_int (array_t *array, LONGLONG value);
01101 
01110 extern int hps_array_add_uint (array_t *array, ULONGLONG value);
01111 
01120 extern int hps_array_add_real (array_t *array, double value);
01121 
01130 extern int hps_array_add_complex (array_t *array, complex_t *value);
01131 
01140 extern int hps_array_add_str (array_t *array, char *value);
01141 
01150 extern int hps_array_add_list (array_t *array, list_t *value);
01151 
01160 extern int hps_array_add_array (array_t *array, array_t *value);
01161 
01170 extern int hps_array_add_ident (array_t *array, char *value);
01171 // @}
01172 
01177 
01186 extern int hps_obj_create (hpobj_t **obj);
01187 
01198 extern int hps_obj_create_type (int type, void *data, hpobj_t **obj);
01199 
01208 extern int hps_obj_destroy (hpobj_t **obj);
01209 
01218 extern int hps_obj_destroy_all (hpobj_t **obj);
01219 
01229 extern int hps_obj_get (hpobj_t *obj, int * type, void **data);
01230 
01239 extern int hps_obj_create_int (LONGLONG value, hpobj_t **obj);
01240 
01249 extern int hps_obj_create_uint (ULONGLONG value, hpobj_t **obj);
01250 
01259 extern int hps_obj_create_real (double value, hpobj_t **obj);
01260 
01269 extern int hps_obj_create_complex (complex_t *value, hpobj_t **obj);
01270 
01279 extern int hps_obj_create_str (char *value, hpobj_t **obj);
01280 
01289 extern int hps_obj_create_list (list_t *value, hpobj_t **obj);
01290 
01299 extern int hps_obj_create_array (array_t *value, hpobj_t **obj);
01300 
01309 extern int hps_obj_create_ident (char *value, hpobj_t **obj);
01310 
01318 extern char *hps_dump (hpobj_t *obj);
01319 // @}
01320 
01321 // @}
01322 #endif

Generated on Tue Mar 4 17:43:20 2014 for HPStack by  doxygen 1.5.0