29 : originalFilename(f.originalFilename)
30 , resolvedFilename(f.resolvedFilename) {}
35 template<
typename String>
37 : originalFilename(
std::forward<String>(filename))
38 , resolvedFilename(originalFilename) {}
40 template<
typename String>
42 : originalFilename(
std::forward<String>(filename))
44 context.resolve(originalFilename))) {}
46 [[nodiscard]]
const std::string&
getOriginal()
const {
return originalFilename; }
47 [[nodiscard]]
const std::string&
getResolved() const & {
return resolvedFilename; }
48 [[nodiscard]] std::string
getResolved() && {
return std::move(resolvedFilename); }
61 [[nodiscard]]
bool empty()
const;
68 resolvedFilename = std::move(resolved);
73 return resolvedFilename == other.resolvedFilename;
76 template<
typename Archive>
77 void serialize(Archive& ar,
unsigned version);
82 std::string originalFilename;
83 std::string resolvedFilename;
This class represents a filename.
void setResolved(std::string resolved)
Change the resolved part of this filename E.g.
const std::string & getOriginal() const
bool empty() const
Convenience method to test for empty filename.
Filename(String &&filename, const FileContext &context)
Filename(const Filename &f)
Filename & operator=(const Filename &)=default
void serialize(Archive &ar, unsigned version)
const std::string & getResolved() const &
Filename(Filename &&)=default
bool operator==(const Filename &other) const
void updateAfterLoadState()
After a loadstate we prefer to use the exact same file as before savestate.
Filename(String &&filename)
std::string getResolved() &&
Filename & operator=(Filename &&)=default
std::optional< Context > context
string getAbsolutePath(string_view path)
Transform given path into an absolute path.
This file implemented 3 utility functions: