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 
00091 //
00092 // INCLUDES
00093 //
00094 
00095 #include <saturn.h>                     // Needed for #define SAT_ and functions sat_
00096 
00097 //
00098 // CONSTANTS
00099 //
00100 
00105 // @{
00106  
00111 #define HPS_OK                                                          0
00112 
00116 #define HPS_ERROR_PAR                                   1
00117 
00121 #define HPS_ERROR_STACK                                 2
00122 
00126 #define HPS_ERROR_OVERFLOW                              3
00127 
00131 #define HPS_ERROR_SAT_MEMORY                    4
00132 
00136 #define HPS_ERROR_ARM_MEMORY                    5
00137 
00141 #define HPS_ERROR_TYPE                                  6
00142 
00146 #define HPS_ERROR_NOT_IMPLEMENTED       99
00147 // @}
00148 
00153 // @{
00154 
00158 #define DOINT 0x2614
00159 
00162 #define DOHXS           0x2a4e
00163 
00166 #define DOREAL          0x2933
00167 
00170 #define DOCMP           0x2977
00171 
00174 #define DOCSTR          0x2a2c
00175 
00178 #define DOLIST          0x2A74
00179 
00182 #define DOARRY          0x29e8
00183 
00186 #define DOMATRIX                0x2686
00187 
00190 #define DOIDNT          0x2e48
00191 
00194 #define DOSYMB          0x2AB8
00195 
00198 #define SEMI            0x312b
00199 
00202 #define DOFUNC          0x01902
00203 
00204  // @}
00209 typedef struct
00210 {
00215         double re;
00220         double im;
00221 } complex_t;
00222 
00227 typedef struct hpobj hpobj_t;
00228 
00233 typedef struct list list_t;
00234 
00239 typedef list_t array_t;
00240 
00254 extern int hps_init (unsigned *stack);
00255 
00264 extern int hps_exit (unsigned stack);
00266 
00271 
00279 extern int hps_depth (int *depth);
00280 
00288 extern int hps_avail (int *avail);
00295 extern int hps_drop (void);
00296 
00304 extern int hps_dropn (int levels);
00305 
00312 extern int hps_swap (void);
00313 
00320 extern int hps_rot (void);
00321 
00328 extern int hps_unrot (void);
00329 
00337 extern int hps_roll (int levels);
00338 
00346 extern int hps_rolld (int levels);
00347 // @}
00348 
00353 
00358 
00369 extern int hps_convert (int flag);
00370 
00383 extern int hps_pick_int (int level, long long *value);
00384 
00395 extern int hps_pick_uint (int level, unsigned long long *value);
00396 
00409 extern int hps_pick_real (int level, double *value);
00410 
00421 extern int hps_pick_complex (int level, complex_t *value);
00422 
00433 extern int hps_pick_str (int level, char **value);
00434 
00445 extern int hps_pick_list (int level, list_t **value);
00446 
00457 extern int hps_pick_array (int level, array_t **value);
00458 
00469 extern int hps_pick_ident (int level, char **value);
00470 
00481 extern int hps_pick_symb (int level, entry_t **value);
00482 
00491 extern int hps_pop_int (long long *value);
00492 
00501 extern int hps_pop_uint (unsigned long long *value);
00502 
00511 extern int hps_pop_real (double *value);
00512 
00521 extern int hps_pop_complex (complex_t *value);
00522 
00531 extern int hps_pop_str (char **value);
00532 
00541 extern int hps_pop_list (list_t **value);
00542 
00551 extern int hps_pop_array (array_t **value);
00552 
00561 extern int hps_pop_ident (char **value);
00562 
00571 extern int hps_pop_symb (entry_t **value);
00572 
00582 extern int hps_push_int (long long value);
00583 
00593 extern int hps_push_uint (unsigned long long value);
00594 
00604 extern int hps_push_real (double value);
00605 
00615 extern int hps_push_complex (complex_t *value);
00616 
00626 extern int hps_push_str (char *value);
00627 
00637 extern int hps_push_list (list_t *value);
00638 
00648 extern int hps_push_array (array_t *value);
00649 
00659 extern int hps_push_ident (char *value);
00660 
00670  extern int hps_push_symb (entry_t *value);
00671  
00672 // @}
00673 
00678 
00689 extern int hps_pick (int level, hpobj_t *obj);
00690 
00703 extern int hps_pick_type (int level, int type, void *data);
00704 
00714 extern int hps_pop (hpobj_t *obj);
00715 
00727 extern int hps_pop_type (int type, void *data);
00728 
00739 extern int hps_push (hpobj_t *obj);
00740 
00751 extern int hps_push_type (int type, void *data);
00752 
00753 // @}
00754 // @}
00755 
00763 extern char *hps_error (int error);
00764 
00769 
00774 
00782 extern int hps_list_create (list_t **list);
00783 
00791 extern int hps_list_destroy (list_t **list);
00792 
00801 extern int hps_list_add (list_t *list, hpobj_t *obj);
00802 
00812 extern int hps_list_get (list_t *list, int ind, hpobj_t **obj);
00813 
00823 extern int hps_list_get_int (list_t *list, int ind, long long *val);
00824 
00834 extern int hps_list_get_uint (list_t *list, int ind, unsigned long long *val);
00835 
00845 extern int hps_list_get_real (list_t *list, int ind, double *val);
00846 
00856 extern int hps_list_get_str (list_t *list, int ind, char **val);
00857 
00867 extern int hps_list_get_list (list_t *list, int ind, list_t **val);
00868 
00878 extern int hps_list_get_array (list_t *list, int ind, array_t **val);
00879 
00889 extern int hps_list_get_ident (list_t *list, int ind, char **val);
00890 
00900 extern int hps_list_get_symb (list_t *list, int ind, entry_t **val);
00901 
00911 extern int hps_list_add_type (list_t *list, int type, void *data);
00912 
00921 extern int hps_list_add_int (list_t *list, long long value);
00922 
00931 extern int hps_list_add_uint (list_t *list, unsigned long long value);
00932 
00941 extern int hps_list_add_real (list_t *list, double value);
00942 
00951 extern int hps_list_add_complex (list_t *list, complex_t *value);
00952 
00961 extern int hps_list_add_str (list_t *list, char *value);
00962 
00971 extern int hps_list_add_list (list_t *list, list_t *value);
00972 
00981 extern int hps_list_add_array (list_t *list, array_t *value);
00982 
00991 extern int hps_list_add_ident (list_t *list, char *value);
00992 // @}
00993 
00998 
01006  extern int hps_array_create (array_t **array);
01007 
01019 extern int hps_array_build (array_t **array, void *data, int type, int nb, ...);
01020  
01028 extern int hps_array_destroy (array_t **array);
01029 
01041 extern int hps_array_get (array_t *array, hpobj_t **obj, int nb, ...);
01042 
01051 extern int hps_array_add (array_t *array, hpobj_t *obj);
01052 
01062 extern int hps_array_add_type (array_t *array, int type, void *data);
01063 
01072 extern int hps_array_add_int (array_t *array, long long value);
01073 
01082 extern int hps_array_add_uint (array_t *array, unsigned long long value);
01083 
01092 extern int hps_array_add_real (array_t *array, double value);
01093 
01102 extern int hps_array_add_complex (array_t *array, complex_t *value);
01103 
01112 extern int hps_array_add_str (array_t *array, char *value);
01113 
01122 extern int hps_array_add_list (array_t *array, list_t *value);
01123 
01132 extern int hps_array_add_array (array_t *array, array_t *value);
01133 
01142 extern int hps_array_add_ident (array_t *array, char *value);
01143 // @}
01144 
01149 
01158 extern int hps_obj_create (hpobj_t **obj);
01159 
01170 extern int hps_obj_create_type (int type, void *data, hpobj_t **obj);
01171 
01180 extern int hps_obj_destroy (hpobj_t **obj);
01181 
01190 extern int hps_obj_destroy_all (hpobj_t **obj);
01191 
01201 extern int hps_obj_get (hpobj_t *obj, int * type, void **data);
01202 
01211 extern int hps_obj_create_int (long long value, hpobj_t **obj);
01212 
01221 extern int hps_obj_create_uint (unsigned long long value, hpobj_t **obj);
01222 
01231 extern int hps_obj_create_real (double value, hpobj_t **obj);
01232 
01241 extern int hps_obj_create_complex (complex_t *value, hpobj_t **obj);
01242 
01251 extern int hps_obj_create_str (char *value, hpobj_t **obj);
01252 
01261 extern int hps_obj_create_list (list_t *value, hpobj_t **obj);
01262 
01271 extern int hps_obj_create_array (array_t *value, hpobj_t **obj);
01272 
01281 extern int hps_obj_create_ident (char *value, hpobj_t **obj);
01282 
01283 // @}
01284 
01285 // @}
01286 #endif

Generated on Sat Sep 16 18:23:57 2006 for HPStack by  doxygen 1.4.5