1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-25 07:43:54 +02:00

Rewrite DirManager::EnsureSafeFileName without downcasts...

... weakening but not yet eliminating dependency on BlockFile subclasses
This commit is contained in:
Paul Licameli
2019-05-14 12:58:20 -04:00
parent d46bb29e3a
commit 81d4c217e6
5 changed files with 50 additions and 27 deletions

View File

@@ -114,6 +114,12 @@ class PROFILE_DLL_API BlockFile /* not final, abstract */ {
virtual GetFileNameResult GetFileName() const;
virtual void SetFileName(wxFileNameWrapper &&name);
// Managing an external file dependency
// Default always returns empty
virtual const wxFileNameWrapper &GetExternalFileName() const;
// Default does nothing (and gives assertion violation in debug)
virtual void SetExternalFileName( wxFileNameWrapper &&newName );
size_t GetLength() const { return mLen; }
void SetLength(size_t newLen) { mLen = newLen; }
@@ -278,10 +284,13 @@ class AliasBlockFile /* not final */ : public BlockFile
//
// These methods are for advanced use only!
//
const wxFileName &GetAliasedFileName() const { return mAliasedFileName; }
const wxFileNameWrapper &GetAliasedFileName() const { return mAliasedFileName; }
void ChangeAliasedFileName(wxFileNameWrapper &&newAliasedFile);
bool IsAlias() const override { return true; }
const wxFileNameWrapper &GetExternalFileName() const override;
void SetExternalFileName( wxFileNameWrapper &&newName ) override;
protected:
// Introduce a NEW virtual.
/// Write the summary to disk, using the derived ReadData() to get the data