void SourceFileManager::loadState()

in src/debugger/SourceFileManager.cpp [161:181]


void SourceFileManager::loadState(SEXP _list) {
  ShieldSEXP list = _list;
  if (list.type() != VECSXP) return;
  currentGeneratedFileId = asInt(list[1]);
  ShieldSEXP files = list[0];
  if (files.type() != VECSXP) return;
  for (int i = 0; i < files.length(); ++i) {
    ShieldSEXP entry = files[i];
    if (entry.type() != VECSXP || entry.length() != 5) continue;
    std::string id = asStringUTF8(entry[1]);
    if (id.empty() || virtualFiles.count(id)) continue;
    ShieldSEXP extPtr = entry[0];
    if (extPtr.type() != EXTPTRSXP) continue;
    createVirtualFileInfo(id, extPtr);
    virtualFiles[id] = extPtr;
    VirtualFileInfoPtr virtualFile(extPtr);
virtualFile->isGenerated = asBool(entry[2]);
    virtualFile->generatedName = asStringUTF8(entry[3]);
    virtualFile->lines = TYPEOF(entry[4]) == STRSXP ? entry[4] : R_NilValue;
  }
}