本文整理汇总了C++中pup::er::typeString方法的典型用法代码示例。如果您正苦于以下问题:C++ er::typeString方法的具体用法?C++ er::typeString怎么用?C++ er::typeString使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pup::er
的用法示例。
在下文中一共展示了er::typeString方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CkPupGroupData
// handle GroupTable and data
void CkPupGroupData(PUP::er &p, CmiBool create)
{
int numGroups, i;
if (!p.isUnpacking()) {
numGroups = CkpvAccess(_groupIDTable)->size();
}
p|numGroups;
if (p.isUnpacking()) {
if(CkMyPe()==0)
CkpvAccess(_numGroups) = numGroups+1;
else
CkpvAccess(_numGroups) = 1;
}
DEBCHK("[%d] CkPupGroupData %s: numGroups = %d\n", CkMyPe(),p.typeString(),numGroups);
GroupInfo *tmpInfo = new GroupInfo [numGroups];
if (!p.isUnpacking()) {
for(i=0;i<numGroups;i++) {
tmpInfo[i].gID = (*CkpvAccess(_groupIDTable))[i];
TableEntry ent = CkpvAccess(_groupTable)->find(tmpInfo[i].gID);
tmpInfo[i].MigCtor = _chareTable[ent.getcIdx()]->migCtor;
tmpInfo[i].DefCtor = _chareTable[ent.getcIdx()]->defCtor;
strncpy(tmpInfo[i].name,_chareTable[ent.getcIdx()]->name,255);
//CkPrintf("[%d] CkPupGroupData: %s group %s \n", CkMyPe(), p.typeString(), tmpInfo[i].name);
if(tmpInfo[i].MigCtor==-1) {
char buf[512];
sprintf(buf,"Group %s needs a migration constructor and PUP'er routine for restart.\n", tmpInfo[i].name);
CkAbort(buf);
}
}
}
for (i=0; i<numGroups; i++) p|tmpInfo[i];
for(i=0;i<numGroups;i++)
{
CkGroupID gID = tmpInfo[i].gID;
if (p.isUnpacking()) {
//CkpvAccess(_groupIDTable)->push_back(gID);
int eIdx = tmpInfo[i].MigCtor;
// error checking
if (eIdx == -1) {
CkPrintf("[%d] ERROR> Group %s's migration constructor is not defined!\n", CkMyPe(), tmpInfo[i].name); CkAbort("Abort");
}
void *m = CkAllocSysMsg();
envelope* env = UsrToEnv((CkMessage *)m);
if(create)
CkCreateLocalGroup(gID, eIdx, env);
} // end of unPacking
IrrGroup *gobj = CkpvAccess(_groupTable)->find(gID).getObj();
// if using migration constructor, you'd better have a pup
if(!create)
gobj->mlogData->teamRecoveryFlag = 1;
gobj->pup(p);
// CkPrintf("Group PUP'ed: gid = %d, name = %s\n",gobj->ckGetGroupID().idx, tmpInfo[i].name);
}
delete [] tmpInfo;
}
示例2: CkPupNodeGroupData
// handle NodeGroupTable and data
void CkPupNodeGroupData(PUP::er &p, CmiBool create)
{
int numNodeGroups, i;
if (!p.isUnpacking()) {
numNodeGroups = CksvAccess(_nodeGroupIDTable).size();
}
p|numNodeGroups;
if (p.isUnpacking()) {
if(CkMyPe()==0){ CksvAccess(_numNodeGroups) = numNodeGroups+1; }
else { CksvAccess(_numNodeGroups) = 1; }
}
if(CkMyPe() == 3)
CkPrintf("[%d] CkPupNodeGroupData %s: numNodeGroups = %d\n",CkMyPe(),p.typeString(),numNodeGroups);
GroupInfo *tmpInfo = new GroupInfo [numNodeGroups];
if (!p.isUnpacking()) {
for(i=0;i<numNodeGroups;i++) {
tmpInfo[i].gID = CksvAccess(_nodeGroupIDTable)[i];
TableEntry ent2 = CksvAccess(_nodeGroupTable)->find(tmpInfo[i].gID);
tmpInfo[i].MigCtor = _chareTable[ent2.getcIdx()]->migCtor;
if(tmpInfo[i].MigCtor==-1) {
char buf[512];
sprintf(buf,"NodeGroup %s either need a migration constructor and\n\
declared as [migratable] in .ci to be able to checkpoint.",\
_chareTable[ent2.getcIdx()]->name);
CkAbort(buf);
}
}
}
for (i=0; i<numNodeGroups; i++) p|tmpInfo[i];
for (i=0;i<numNodeGroups;i++) {
CkGroupID gID = tmpInfo[i].gID;
if (p.isUnpacking()) {
//CksvAccess(_nodeGroupIDTable).push_back(gID);
int eIdx = tmpInfo[i].MigCtor;
void *m = CkAllocSysMsg();
envelope* env = UsrToEnv((CkMessage *)m);
if(create){
CkCreateLocalNodeGroup(gID, eIdx, env);
}
}
TableEntry ent2 = CksvAccess(_nodeGroupTable)->find(gID);
IrrGroup *obj = ent2.getObj();
obj->pup(p);
if(CkMyPe() == 3) CkPrintf("Nodegroup PUP'ed: gid = %d, name = %s\n",
obj->ckGetGroupID().idx,
_chareTable[ent2.getcIdx()]->name);
}
delete [] tmpInfo;
}