Beispiel #1
0
	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;
		}
	}
Beispiel #2
0
	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;
	}
Beispiel #3
0
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;
    }
  }
}