示例#1
0
文件: Parser.cpp 项目: DRIZO/xcsoar
static bool
Commit(FileRepository &repository, AvailableFile &file)
{
  if (file.IsEmpty())
    return true;

  if (!file.IsValid())
    return false;

  repository.files.emplace_back(std::move(file));
  file.Clear();
  return true;
}
示例#2
0
static AllocatedPath
LocalPath(const AvailableFile &file)
{
  const UTF8ToWideConverter base(file.GetName());
  if (!base.IsValid())
    return nullptr;

  return LocalPath(base);
}
示例#3
0
static bool
LocalPath(TCHAR *buffer, const AvailableFile &file)
{
  ACPToWideConverter base(file.GetName());
  if (!base.IsValid())
    return false;

  ::LocalPath(buffer, base);
  return true;
}
示例#4
0
文件: Parser.cpp 项目: DRIZO/xcsoar
bool
ParseFileRepository(FileRepository &repository, NLineReader &reader)
{
  AvailableFile file;
  file.Clear();

  char *line;
  while ((line = reader.ReadLine()) != NULL) {
    line = const_cast<char *>(TrimLeft(line));
    if (*line == 0 || *line == '#')
      continue;

    const char *name = line, *value = ParseLine(line);
    if (value == NULL)
      return false;

    if (StringIsEqual(name, "name")) {
      if (!Commit(repository, file))
        return false;

      file.name.assign(value);
    } else if (file.IsEmpty()) {
      /* ignore */
    } else if (StringIsEqual(name, "uri")) {
      file.uri.assign(value);
    } else if (StringIsEqual(name, "area")) {
      file.area = value;
    } else if (StringIsEqual(name, "type")) {
      if (StringIsEqual(value, "airspace"))
        file.type = AvailableFile::Type::AIRSPACE;
      else if (StringIsEqual(value, "waypoint"))
        file.type = AvailableFile::Type::WAYPOINT;
      else if (StringIsEqual(value, "map"))
        file.type = AvailableFile::Type::MAP;
      else if (StringIsEqual(value, "flarmnet"))
        file.type = AvailableFile::Type::FLARMNET;
    }
  }

  return Commit(repository, file);
}
示例#5
0
 gcc_pure
 bool IsDownloading(const AvailableFile &file,
                    DownloadStatus &status_r) const {
   return IsDownloading(file.GetName(), status_r);
 }
示例#6
0
 gcc_pure
 bool IsDownloading(const AvailableFile &file) const {
   return IsDownloading(file.GetName());
 }
示例#7
0
 gcc_pure
 bool HasFailed(const AvailableFile &file) const {
   return HasFailed(file.GetName());
 }