openMSX
Public Member Functions | List of all members
openmsx::Filename Class Reference

This class represents a filename. More...

#include <Filename.hh>

Public Member Functions

 Filename ()=default
 
template<typename String >
requires (!std::same_as<Filename, std::remove_cvref_t<String>>)
 Filename (String &&filename)
 
template<typename String >
 Filename (String &&filename, const FileContext &context)
 
const std::string & getOriginal () const
 
const std::string & getResolved () const &
 
std::string getResolved () &&
 
void updateAfterLoadState ()
 After a loadstate we prefer to use the exact same file as before savestate.
 
bool empty () const
 Convenience method to test for empty filename.
 
void setResolved (std::string resolved)
 Change the resolved part of this filename E.g.
 
bool operator== (const Filename &other) const
 
template<typename Archive >
void serialize (Archive &ar, unsigned version)
 

Detailed Description

This class represents a filename.

A filename is resolved in a certain context. It is possible to query both the resolved and unresolved filename.

Most file operations will want the resolved name, but for example for savestates we (also) want the unresolved name.

Definition at line 19 of file Filename.hh.

Constructor & Destructor Documentation

◆ Filename() [1/3]

openmsx::Filename::Filename ( )
default

◆ Filename() [2/3]

template<typename String >
requires (!std::same_as<Filename, std::remove_cvref_t<String>>)
openmsx::Filename::Filename ( String &&  filename)
inlineexplicit

Definition at line 27 of file Filename.hh.

◆ Filename() [3/3]

template<typename String >
openmsx::Filename::Filename ( String &&  filename,
const FileContext context 
)
inline

Definition at line 32 of file Filename.hh.

Member Function Documentation

◆ empty()

bool openmsx::Filename::empty ( ) const

Convenience method to test for empty filename.

In any case getOriginal().empty() and getResolved().empty() return the same result. This method is a shortcut to either of these.

Definition at line 21 of file Filename.cc.

References empty(), getOriginal(), and getResolved().

Referenced by openmsx::DiskName::empty(), empty(), openmsx::SoundDevice::recordChannel(), openmsx::HD::serialize(), openmsx::LaserdiscPlayer::serialize(), and updateAfterLoadState().

◆ getOriginal()

const std::string & openmsx::Filename::getOriginal ( ) const
inline

◆ getResolved() [1/2]

std::string openmsx::Filename::getResolved ( ) &&
inline

Definition at line 39 of file Filename.hh.

◆ getResolved() [2/2]

const std::string & openmsx::Filename::getResolved ( ) const &
inline

◆ operator==()

bool openmsx::Filename::operator== ( const Filename other) const
inline

Definition at line 63 of file Filename.hh.

◆ serialize()

template<typename Archive >
void openmsx::Filename::serialize ( Archive &  ar,
unsigned  version 
)

Definition at line 28 of file Filename.cc.

Referenced by openmsx::DiskChanger::serialize().

◆ setResolved()

void openmsx::Filename::setResolved ( std::string  resolved)
inline

Change the resolved part of this filename E.g.

on loadstate when we didn't find the original file, but another file with a matching checksum.

Definition at line 58 of file Filename.hh.

Referenced by openmsx::CassettePlayer::serialize().

◆ updateAfterLoadState()

void openmsx::Filename::updateAfterLoadState ( )

After a loadstate we prefer to use the exact same file as before savestate.

But if that file is not available (possibly because snapshot is loaded on a different host machine), we fallback to the original filename.

Definition at line 8 of file Filename.cc.

References empty(), openmsx::FileOperations::exists(), openmsx::FileOperations::getAbsolutePath(), and openmsx::userFileContext().

Referenced by openmsx::CassettePlayer::serialize(), openmsx::HD::serialize(), and openmsx::DiskName::updateAfterLoadState().


The documentation for this class was generated from the following files: