Exemple #1
0
 Analysis::Path::Ptr GetPluginsChain() const override
 {
   const Analysis::Path::Ptr parentPlugins = Parent->GetPluginsChain();
   if (Subdata->GetOffset())
   {
     return parentPlugins->Append(Subplugin);
   }
   return parentPlugins;
 }
Exemple #2
0
 Analysis::Path::Ptr GetPath() const override
 {
   const Analysis::Path::Ptr parentPath = Parent->GetPath();
   if (std::size_t offset = Subdata->GetOffset())
   {
     const String subPath = RawPath.Build(offset);
     return parentPath->Append(subPath);
   }
   return parentPath;
 }
 Formats::Archived::File::Ptr FindFile(const Formats::Archived::Container& container, const Analysis::Path& path) const
 {
   Analysis::Path::Ptr resolved = Analysis::ParsePath(String(), Text::MODULE_SUBPATH_DELIMITER[0]);
   for (const Analysis::Path::Iterator::Ptr components = path.GetIterator();
        components->IsValid(); components->Next())
   {
     resolved = resolved->Append(components->Get());
     const String filename = resolved->AsString();
     Dbg("Trying '%1%'", filename);
     if (Formats::Archived::File::Ptr file = container.FindFile(filename))
     {
       Dbg("Found");
       return file;
     }
     if (!SupportDirectories)
     {
       break;
     }
   }
   return Formats::Archived::File::Ptr();
 }