00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "pup.h"
00013 #include "pup_c.h"
00014 #include "pup_toNetwork.h"
00015 #include "charm-api.h"
00016
00017
00018
00019
00020
00021
00022 #define mp (*(PUP::er *)p)
00023
00024
00025 CDECL pup_er pup_new_sizer()
00026 { return new PUP::sizer; }
00027 CDECL pup_er pup_new_toMem(void *Nbuf)
00028 { return new PUP::toMem(Nbuf); }
00029 CDECL pup_er pup_new_fromMem(const void *Nbuf)
00030 { return new PUP::fromMem(Nbuf); }
00031 CDECL pup_er pup_new_network_sizer()
00032 { return new PUP_toNetwork_sizer; }
00033 CDECL pup_er pup_new_network_pack(void *Nbuf)
00034 { return new PUP_toNetwork_pack(Nbuf); }
00035 CDECL pup_er pup_new_network_unpack(const void *Nbuf)
00036 { return new PUP_toNetwork_unpack(Nbuf); }
00037 #if CMK_CCS_AVAILABLE
00038 #include "ccs-builtins.h"
00039 CDECL pup_er pup_new_fmt(pup_er p)
00040 { return new PUP_fmt(mp); }
00041 CDECL void pup_fmt_sync_begin_object(pup_er p)
00042 { mp.synchronize(PUP::sync_begin_object); }
00043 CDECL void pup_fmt_sync_end_object(pup_er p)
00044 { mp.synchronize(PUP::sync_end_object); }
00045 CDECL void pup_fmt_sync_begin_array(pup_er p)
00046 { mp.synchronize(PUP::sync_begin_array); }
00047 CDECL void pup_fmt_sync_end_array(pup_er p)
00048 { mp.synchronize(PUP::sync_end_array); }
00049 CDECL void pup_fmt_sync_item(pup_er p)
00050 { mp.syncComment(PUP::sync_item); }
00051 #endif
00052 CDECL void pup_destroy(pup_er p)
00053 { delete ((PUP::er *)p); }
00054
00055
00056
00057 CDECL int pup_isPacking(const pup_er p)
00058 { return (mp.isPacking())?1:0;}
00059 CDECL int pup_isUnpacking(const pup_er p)
00060 { return (mp.isUnpacking())?1:0;}
00061 CDECL int pup_isSizing(const pup_er p)
00062 { return (mp.isSizing())?1:0;}
00063 CDECL int pup_isDeleting(const pup_er p)
00064 { return (mp.isDeleting())?1:0;}
00065 CDECL int pup_isUserlevel(const pup_er p)
00066 { return (mp.isUserlevel())?1:0;}
00067 CDECL int pup_isRestarting(const pup_er p)
00068 { return (mp.isRestarting())?1:0;}
00069 CDECL char* pup_typeString(const pup_er p)
00070 { return (char *)mp.typeString(); }
00071
00072 FDECL int FTN_NAME(FPUP_ISPACKING,fpup_ispacking)(const pup_er p)
00073 { return (mp.isPacking())?1:0;}
00074 FDECL int FTN_NAME(FPUP_ISUNPACKING,fpup_isunpacking)(const pup_er p)
00075 { return (mp.isUnpacking())?1:0;}
00076 FDECL int FTN_NAME(FPUP_ISSIZING,fpup_issizing)(const pup_er p)
00077 { return (mp.isSizing())?1:0;}
00078 FDECL int FTN_NAME(FPUP_ISDELETING,fpup_isdeleting)(const pup_er p)
00079 { return (mp.isDeleting())?1:0;}
00080 FDECL int FTN_NAME(FPUP_ISUSERLEVEL,fpup_isuserlevel)(const pup_er p)
00081 { return (mp.isUserlevel())?1:0;}
00082
00083
00084 CDECL int pup_size(const pup_er p)
00085 { return mp.size(); }
00086
00087
00088 CDECL void pup_syncComment(const pup_er p, unsigned int sync, char *message)
00089 { mp.syncComment(sync, message); }
00090
00091
00092 CDECL void pup_comment(const pup_er p, char *message)
00093 { mp.comment(message); }
00094
00095 #undef PUP_BASIC_DATATYPE
00096 #undef PUP_BASIC_DATATYPEF
00097
00098
00099
00100
00101
00102
00103
00104
00105 #define PUP_BASIC_DATATYPE(typeName,type) \
00106 CDECL void pup_##typeName(pup_er p,type *v) \
00107 {mp(*v);} \
00108 CDECL void pup_##typeName##s(pup_er p,type *arr,int nItems) \
00109 {mp(arr,nItems);}
00110
00111 PUP_BASIC_DATATYPE(char,char)
00112 PUP_BASIC_DATATYPE(short,short)
00113 PUP_BASIC_DATATYPE(int,int)
00114 PUP_BASIC_DATATYPE(long,long)
00115 PUP_BASIC_DATATYPE(uchar,unsigned char)
00116 PUP_BASIC_DATATYPE(ushort,unsigned short)
00117 PUP_BASIC_DATATYPE(uint,unsigned int)
00118 PUP_BASIC_DATATYPE(ulong,unsigned long)
00119 PUP_BASIC_DATATYPE(float,float)
00120 PUP_BASIC_DATATYPE(double,double)
00121 PUP_BASIC_DATATYPE(int8,CMK_TYPEDEF_INT8)
00122
00123
00124 CDECL void pup_pointer(pup_er p,void **v) {mp(*v,(void*)NULL);}
00125 CDECL void pup_pointers(pup_er p,void **arr,int nItems) {mp(arr,nItems,(void*)NULL);}
00126
00127 #define PUP_BASIC_DATATYPEF(typeUP,typelo,type) \
00128 FDECL void FTN_NAME(FPUP_##typeUP,fpup_##typelo)(pup_er p,type *v) \
00129 {mp(*v);} \
00130 FDECL void FTN_NAME(FPUP_##typeUP##SG,fpup_##typelo##sg)(pup_er p,type *arr,int *nItems) \
00131 {mp(arr,*nItems);} \
00132 FDECL void FTN_NAME(FPUP_##typeUP##S,fpup_##typelo##s)(pup_er p,type *arr,int *nItems) \
00133 {mp(arr,*nItems);}
00134
00135 PUP_BASIC_DATATYPEF(CHAR,char,char)
00136 PUP_BASIC_DATATYPEF(SHORT,short,short)
00137 PUP_BASIC_DATATYPEF(INT,int,int)
00138 PUP_BASIC_DATATYPEF(LONG,long,long)
00139 PUP_BASIC_DATATYPEF(REAL,real,float)
00140 PUP_BASIC_DATATYPEF(DOUBLE,double,double)
00141 PUP_BASIC_DATATYPEF(LOGICAL,logical,int)
00142
00143
00144 CDECL void pup_bytes(pup_er p,void *ptr,int nBytes)
00145 {
00146 mp((char *)ptr,nBytes);
00147 }
00148
00149 FDECL void FTN_NAME(FPUP_BYTES,fpup_bytes)(pup_er p,void *ptr,int *nBytes)
00150 {
00151 mp((char *)ptr,*nBytes);
00152 }