示例#1
0
FarString FarXMLScanner::NextName()
{
    if (!IsNameStart (*fBufPos))
  {
    if (fErrorSink)
      fErrorSink->ReportError (fCurLine, GetCurColumn(), "name");
    return FarString();
  }
  int nameLength = 1;
  while (IsNameChar (fBufPos [nameLength]))
    nameLength++;
    FarString result (fBufPos, nameLength);
  fBufPos += nameLength;
  return result;
}
示例#2
0
文件: AddLump.cpp 项目: DavidPH/GDCC
   //
   // AddWadDir
   //
   static void AddWadDir(Wad *wadRoot, Core::String wadName, Core::DirStream *dir)
   {
      SubWadTemp wad{wadRoot, wadName};

      while(dir->next())
      {
         Core::String name = GetNameFromFile(dir->getStrPart());
         char const  *path = dir->getStrFull();

         if(Core::IsDir(path))
         {
            if(IsNameStart(name))
               AddStartDir(wad, name, Core::DirOpenStream(path).get(),
                  name, GetNameEnd(name));
            else
               AddMapDir(wad, name, Core::DirOpenStream(path).get(), name);
         }
         else
            wad->addLump(new Lump_File{name, Core::StrDup(path)});
      }

      wad.finish();
   }
示例#3
0
文件: AddLump.cpp 项目: DavidPH/GDCC
   //
   // AddStartDir
   //
   static void AddStartDir(Wad *wadRoot, Core::String wadName, Core::DirStream *dir,
      Core::String nameHead, std::pair<Core::String, Core::String> nameTail)
   {
      SubWadTemp wad{wadRoot, wadName};

      while(dir->next())
      {
         Core::String name = GetNameFromFile(dir->getStrPart());
         char const  *path = dir->getStrFull();

         if(Core::IsDir(path))
         {
            if(IsNameStart(name))
               AddStartDir(wad, name, Core::DirOpenStream(path).get(),
                  name, GetNameEnd(name));
            else
               AddDir(wad, name, Core::DirOpenStream(path).get());
         }
         else
         {
            Lump *lump = new Lump_File{name, Core::StrDup(path)};

            if(name == nameTail.first || name == nameTail.second)
               wad.wadLump->tail.reset(lump);
            else if(name == nameHead)
               wad.wadLump->head.reset(lump);
            else
               wad->addLump(lump);
         }
      }

      if(!wad.wadLump->head) wad.wadLump->head.reset(new Lump_Empty{nameHead});
      if(!wad.wadLump->tail) wad.wadLump->tail.reset(new Lump_Empty{nameTail.first});

      wad.finish();
   }