00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef PLINT_DATA_TYPE_H
00026 #error Dont include me directly, but through data/type.h
00027 #endif
00028
00034 #define plint_ref_var(__r__) (*(__r__))
00035 #define plint_var_ref(__v__) (&(__v__))
00036
00037 #define plint_mem_typ(__m__) ((__m__)->typ)
00038 #define plint_mem_new plint_ptr_new
00039 #define plint_mem_dup plint_ptr_dup
00040 #define plint_mem_fre plint_ptr_fre
00041 #define PLINT_MEM_NEW PLINT_PTR_NEW
00042 #define plint_var_mem plint_var_val
00043
00044
00045 #define plint_mem_var(__m__) ((__m__)->val.var)
00046
00047
00048 #define plint_mem_tab(__m__) ((__m__)->val.tab)
00049
00050
00051 #define plint_mem_hsh(__m__) ((__m__)->val.hsh)
00052
00053 typedef struct
00054 {
00055
00056 plint_mem_t mem;
00057 plint_ref_t ref;
00058 plint_var_t var;
00059
00060 #define plint_mrv_mem(__x__) ((__x__).mem)
00061 #define plint_mrv_ref(__x__) ((__x__).ref)
00062 #define plint_mrv_var(__x__) ((__x__).var)
00063
00064 } plint_mrv_t;
00065
00066 __BEGIN_DECLS
00067 plint_ite_t plint_mem_cpy(plint_ite_t ite);
00068 __END_DECLS
00069