added a state in pup::er to tell that it is used in restarting an application.
authorGengbin Zheng <gzheng@illinois.edu>
Fri, 26 Oct 2007 05:44:05 +0000 (05:44 +0000)
committerGengbin Zheng <gzheng@illinois.edu>
Fri, 26 Oct 2007 05:44:05 +0000 (05:44 +0000)
src/util/pup.h
src/util/pup_c.C
src/util/pup_c.h

index 1ce73b9b7efa93d49b292f21ef28e67702bc3f77..6450dcc187935b3076e8167178c2a9419ee1f8c2 100644 (file)
@@ -136,7 +136,8 @@ class er {
   /// These state bits describe various user-settable properties.
   enum {IS_USERLEVEL=0x0004, // If set, this is *not* a migration pup-- it's something else.
        IS_DELETING =0x0008, // If set, C & f90 objects should delete themselves after pup
-       IS_COMMENTS =0x0010  // If set, this PUP::er wants comments and sync codes.
+       IS_COMMENTS =0x0010,  // If set, this PUP::er wants comments and sync codes.
+       IS_RESTARTING=0x0020  // If set, it is during restarting
   };
   /// These state bits describe the PUP::er's direction.
   enum {IS_SIZING   =0x0100,
@@ -167,6 +168,10 @@ class er {
   void becomeUserlevel(void) {PUP_er_state|=IS_USERLEVEL;}
   CmiBool isUserlevel(void) const {return (PUP_er_state&IS_USERLEVEL)!=0?CmiTrue:CmiFalse;}
   
+  //This indicates that the pup routine should not call system objects' pups.
+  void becomeRestarting(void) {PUP_er_state|=IS_RESTARTING;}
+  CmiBool isRestarting(void) const {return (PUP_er_state&IS_RESTARTING)!=0?CmiTrue:CmiFalse;}
+  
   CmiBool hasComments(void) const {return (PUP_er_state&IS_COMMENTS)!=0?CmiTrue:CmiFalse;}
 
 //For single elements, pretend it's an array containing one element
index 10eed310090241b37e7879f6d60092a643475009..48c733607599b0eafee28d2a2d5506f8e1966440 100644 (file)
@@ -49,6 +49,8 @@ CDECL int pup_isDeleting(const pup_er p)
   { return (mp.isDeleting())?1:0;}
 CDECL int pup_isUserlevel(const pup_er p)
   { return (mp.isUserlevel())?1:0;}
+CDECL int pup_isRestarting(const pup_er p)
+  { return (mp.isRestarting())?1:0;}
 
 FDECL int FTN_NAME(FPUP_ISPACKING,fpup_ispacking)(const pup_er p)
   { return (mp.isPacking())?1:0;}
index 415e47daa89168f667406b5de62ebd8c54c0b04b..36ccfb160ffd83cf719510a4118dc815498ee98b 100644 (file)
@@ -82,6 +82,7 @@ int pup_isUnpacking(const pup_er p);
 int pup_isSizing(const pup_er p);
 int pup_isDeleting(const pup_er p);
 int pup_isUserlevel(const pup_er p);
+int pup_isRestarting(const pup_er p);
 
 /*Insert a synchronization into the data stream */
 void pup_syncComment(const pup_er p, unsigned int sync, char *message);