text: #include "DataSpec/DNACommon/STRG.hpp"
  
  #include "DataSpec/DNAMP1/STRG.hpp"
  #include "DataSpec/DNAMP2/STRG.hpp"
  #include "DataSpec/DNAMP3/STRG.hpp"
  
  #include <logvisor/logvisor.hpp>
  
  namespace DataSpec {
  
  void ISTRG::gatherDependencies(std::vector<hecl::ProjectPath>& pathsOut) const { /* TODO: parse out resource tokens */ }
  
  std::unique_ptr<ISTRG> LoadSTRG(athena::io::IStreamReader& reader) {
    uint32_t magic = reader.readUint32Big();
    if (magic != 0x87654321) {
      LogDNACommon.report(logvisor::Error, fmt("invalid STRG magic"));
      return std::unique_ptr<ISTRG>();
    }
  
    uint32_t version = reader.readUint32Big();
    switch (version) {
    case 0: {
      DNAMP1::STRG* newStrg = new DNAMP1::STRG;
      newStrg->_read(reader);
      return std::unique_ptr<ISTRG>(newStrg);
    }
    case 1: {
      DNAMP2::STRG* newStrg = new DNAMP2::STRG;
      newStrg->_read(reader);
      return std::unique_ptr<ISTRG>(newStrg);
    }
    case 3: {
      DNAMP3::STRG* newStrg = new DNAMP3::STRG;
      newStrg->_read(reader);
      return std::unique_ptr<ISTRG>(newStrg);
    }
    default:
      break;
    }
    return std::unique_ptr<ISTRG>();
  }
  } // namespace DataSpec
  