void classContent(ifstream & istr,CLMsgClass * t_class,CLMsgClassManager * pmng) { string tmp; char input[1024] = {0}; getNextObj(istr,tmp); if(tmp == ":") { getNextObj(istr,tmp); t_class->addSuperClass(tmp); getNextObj(istr,tmp); } // istr.sync(); // getline(istr,tmp,'\n'); #ifdef _WINDOWS_PROC_ istr.getline(input,MAX_SIZE,0x0d); istr.get(); #endif #ifdef _LINUX_PROC_ istr.getline(input,MAX_SIZE,'\n'); #endif tmp = input; while(tmp != "};") { if(tmp == KEY_WORD_PUBLIC||tmp == KEY_WORD_PRIVATE||tmp == KEY_WORD_PROTECTED||tmp == ""||tmp[0] == 0x0d) { } else if(sentenceAndStaticJudge(tmp)) { if(tmp.find("virtual",0)!=string::npos) t_class->setVirtualClass(); } else { t_class->addMemberVar(CLMsgElementMap::getInstance()->initNewElement(tmp,pmng))->newVarDefinitionSentence(tmp); } // istr.sync(); // getline(istr,tmp,'\n'); memset(input,0,MAX_SIZE); #ifdef _WINDOWS_PROC_ istr.getline(input,MAX_SIZE,0x0d); istr.get(); #endif #ifdef _LINUX_PROC_ istr.getline(input,MAX_SIZE,'\n'); #endif tmp = input; } }
bool classJudge(ifstream & istr,string & classname,bool & is_needSerial,bool & is_struct) { string tmp; getNextObj(istr,tmp); while((tmp!=STRUCT_FLAG&&tmp!=CLASS_FLAG)&&tmp!= CLMsgClassLoader::serialFlag&&istr.peek() != EOF) { if(tmp == "define") getNextObj(istr,tmp); getNextObj(istr,tmp); } if(istr.peek() == EOF) return false; if(tmp == CLMsgClassLoader::serialFlag) { getNextObj(istr,tmp); is_needSerial = true; } if(tmp ==STRUCT_FLAG) { is_struct = true; } getNextObj(istr,classname);; getNextObj(istr,tmp); if(tmp == ";") return false; istr.seekg(-1,ios::cur); return true; }
dikuObject *realEditObjType(dikuObject *obj, const char allowJump /*= TRUE*/) { usint ch; dikuObject *newObj; char done = FALSE, addedIdentKeyword = FALSE; ulong numb, oldVnum; if (!obj) return NULL; // ya never know oldVnum = obj->objNumber; // copy obj into newObj and display the menu newObj = copyObjectType(obj, FALSE); displayEditObjTypeMenu(newObj); while (TRUE) { ch = toupper(getkey()); #ifndef __UNIX__ if (ch == '$') { displayFreeStack(1, 1, FALSE); } #endif if (checkMenuKey(ch, FALSE) == MENUKEY_ABORT) { // if user changed vnum and aborted, set it back if (newObj->objNumber != oldVnum) { resetAllObjHere(newObj->objNumber, oldVnum, roomHead); resetNumbLoaded(ENTITY_OBJECT, newObj->objNumber, oldVnum); checkAndFixRefstoObj(newObj->objNumber, oldVnum); objLookup[oldVnum] = obj; objLookup[newObj->objNumber] = NULL; } deleteObjectType(newObj, FALSE); _outtext("\n\n"); return NULL; } if (allowJump) { if ((checkMenuKey(ch, FALSE) == MENUKEY_NEXT) && (obj->objNumber != getHighestObjNumber())) { done = TRUE; } if ((checkMenuKey(ch, FALSE) == MENUKEY_PREV) && (obj->objNumber != getLowestObjNumber())) { done = TRUE; } if (checkMenuKey(ch, FALSE) == MENUKEY_JUMP) done = TRUE; } // if interpEditObjTypeMenu is TRUE, user has quit if (!done) done = interpEditObjTypeMenu(ch, newObj, obj, &addedIdentKeyword); if (done) { if (!compareObjectType(obj, newObj)) // changes have been made { deleteObjectTypeAssocLists(obj); memcpy(obj, newObj, sizeof(dikuObject)); delete newObj; numb = obj->objNumber; if (!obj->defaultObj) { if (numb < lowestObjNumber) lowestObjNumber = numb; if (numb > highestObjNumber) highestObjNumber = numb; if (numbObjTypes == 1) lowestObjNumber = highestObjNumber = numb; } madeChanges = TRUE; // recreate all editable and master keyword lists. no choice.. updateAllObjMandElists(); // update if room has objs // recreate inventory keywords for appropriate objs updateInvKeywordsObj(obj); } else deleteObjectType(newObj, FALSE); if (checkMenuKey(ch, FALSE) != MENUKEY_JUMP) _outtext("\n\n"); if (allowJump) { if (checkMenuKey(ch, FALSE) == MENUKEY_JUMP) { switch (jumpObj(obj, &numb)) { case MENU_JUMP_ERROR : return obj; case MENU_JUMP_VALID : return findObj(numb); default : _outtext("ERR in editObjType()\n"); getkey(); return NULL; } } else if (checkMenuKey(ch, FALSE) == MENUKEY_NEXT) { return getNextObj(obj->objNumber); } else if (checkMenuKey(ch, FALSE) == MENUKEY_PREV) { return getPrevObj(obj->objNumber); } } return NULL; } } }