BlockFile *DirManager::LoadBlockFile(wxTextFile * in, sampleFormat format) { wxASSERT(projFull != ""); long summaryLen; if (!(in->GetNextLine().ToLong(&summaryLen))) return NULL; wxString blockName = in->GetNextLine(); bool alias = false; wxString aliasFullPath; long localLen, start, len, channel; if (blockName == "Alias") { alias = true; aliasFullPath = in->GetNextLine(); //if (!(in->GetNextLine().ToLong(&localLen))) // return NULL; if (!(in->GetNextLine().ToLong(&start))) return NULL; if (!(in->GetNextLine().ToLong(&len))) return NULL; if (!(in->GetNextLine().ToLong(&channel))) return NULL; blockName = in->GetNextLine(); } wxString pathName = projFull + wxFILE_SEP_PATH + blockName; BlockFile *retrieved = (BlockFile *) blockFileHash->Get(blockName); if (retrieved) { wxASSERT(retrieved->IsAlias() == alias); retrieved->Ref(); return retrieved; } else { BlockFile *newBlockFile = new BlockFile(blockName, pathName, summaryLen); if (alias) { newBlockFile->SetAliasedData(aliasFullPath, start, len, channel); aliasList.Add(aliasFullPath); } newBlockFile->mSampleFormat = format; blockFileHash->Put(blockName, (wxObject *) newBlockFile); CheckHashTableSize(); if (!wxFileExists(pathName)) return 0; return newBlockFile; } }
BlockFile *DirManager::LoadBlockFile(wxTextFile * in) { wxASSERT(projFull != ""); wxString blockName = in->GetNextLine(); bool alias = false; wxString aliasFullPath; long localLen, start, len, channel; if (blockName == "Alias") { alias = true; aliasFullPath = in->GetNextLine(); if (!(in->GetNextLine().ToLong(&localLen))) return NULL; if (!(in->GetNextLine().ToLong(&start))) return NULL; if (!(in->GetNextLine().ToLong(&len))) return NULL; if (!(in->GetNextLine().ToLong(&channel))) return NULL; blockName = in->GetNextLine(); } wxString pathName = projFull + pathChar + blockName; BlockFile *retrieved = (BlockFile *) blockFileHash->Get(blockName); if (retrieved) { wxASSERT(retrieved->IsAlias() == alias); retrieved->Ref(); return retrieved; } else { BlockFile *newBlockFile; if (alias) { newBlockFile = new BlockFile(blockName, pathName, localLen, aliasFullPath, start, len, channel); aliasList.Add(aliasFullPath); } else newBlockFile = new BlockFile(blockName, pathName); blockFileHash->Put(blockName, (wxObject *) newBlockFile); CheckHashTableSize(); if (!wxFileExists(pathName)) return 0; return newBlockFile; } }
BlockFile *DirManager::GetBlockFile(wxString &blockName) { wxASSERT(projFull != ""); wxString pathName = projFull + pathChar + blockName; BlockFile *retrieved = (BlockFile *)blockFileHash->Get(blockName); if (retrieved) { retrieved->Ref(); return retrieved; } else { BlockFile *newBlockFile = new BlockFile(blockName, pathName); blockFileHash->Put(blockName, (wxObject *)newBlockFile); CheckHashTableSize(); if (!wxFileExists(pathName)) return 0; return newBlockFile; } }