To prevent mixing up local path and remote path parameters when calling the FC++ API, the path and/or filenames are wrapped using the simple fc::Local and fc::Remote classes. More...
#include <FCPath.hpp>
Public Member Functions | |
virtual | ~Name (void) |
Name (const std::string &n) | |
virtual bool | empty (void) const |
virtual const char * | c_str (void) const |
virtual | operator const char * (void) const |
virtual | operator const std::string & (void) const |
virtual const std::string & | str (void) const |
virtual Name & | operator+= (const std::string &rhs) |
Append a filename to an existing Local or Remote object. More... | |
virtual void | setDefaultDir (const std::string &dir) const =0 |
Set the default directory. Will ensure it is terminated by a slash or backslash. More... | |
virtual const std::string & | defaultDir (void) const =0 |
Get the default directory. This is guaranteed to be terminated by a slash or backslash. More... | |
virtual const std::string & | separator (void) const =0 |
Return the usual path separator, such as slash or backslash. More... | |
virtual bool | isAbsolute (void) const |
Original name is absolute, such as /tmp/test.txt or C:\Files . More... | |
virtual bool | isRelative (void) const |
Original name is relative, such as test.txt or ..\test.txt . More... | |
virtual const std::string & | name (void) const |
The original name specified when this object was first instantiated. More... | |
virtual const std::string & | parentDir (void) const |
Get the parent directory if known, or a blank string if unknown. More... | |
virtual const std::string & | filename (void) const |
Get the last component in full() which normally would be the filename. More... | |
virtual const std::string & | full (void) const |
Get the full name. More... | |
Protected Member Functions | |
std::string | findSeparator (void) const |
Logic to extract the directory separator from the default directory or the explicit name. More... | |
virtual Name & | clearCache (void) |
Clear the mutable cache items. More... | |
Protected Attributes | |
std::string | explicitName |
The name used when the object was instantiated. More... | |
std::string | fileName |
the last component from full() More... | |
std::string | parentDirectory |
the parent directory including the terminating slash More... | |
std::string | fullDirAndName |
the name combined with the default directory More... | |
To prevent mixing up local path and remote path parameters when calling the FC++ API, the path and/or filenames are wrapped using the simple fc::Local and fc::Remote classes.
This guarantees at compile-time that the local and remote paths cannot be accidentally inverted.
Consider these 2 similar examples:
In the first example, it isn't immediately obvious if the file output.txt
is being uploaded as readme.txt
, or if it is the other way around. In the second example, not only is it immediately obvious, but if the filename parameters are ever swapped, the code wouldn't compile.
Normally, when provided with a Local or Remote object, the method you'll want to call is fc::Name::full().
|
virtual |
|
explicit |
|
inlinevirtual |
References name().
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
|
inlinevirtual |
References defaultDir(), filename(), findSeparator(), full(), isAbsolute(), isRelative(), name(), operator+=(), parentDir(), separator(), and setDefaultDir().
|
virtual |
Append a filename to an existing Local or Remote object.
References clearCache(), explicitName, and separator().
|
pure virtual |
Set the default directory. Will ensure it is terminated by a slash or backslash.
Implemented in fc::Remote, and fc::Local.
|
pure virtual |
Get the default directory. This is guaranteed to be terminated by a slash or backslash.
Implemented in fc::Remote, and fc::Local.
|
pure virtual |
Return the usual path separator, such as slash or backslash.
Implemented in fc::Remote, and fc::Local.
|
virtual |
Original name
is absolute, such as /tmp/test.txt
or C:\Files
.
References empty(), explicitName, and regex.
|
virtual |
Original name
is relative, such as test.txt
or ..\test.txt
.
References empty(), and isAbsolute().
|
virtual |
The original name specified when this object was first instantiated.
References explicitName.
|
virtual |
Get the parent directory if known, or a blank string if unknown.
The directory name (if not empty) will always be terminated with /
or \
. For example:
Original Name | parentDir() |
---|---|
test.txt | |
../test.txt | ../ |
/tmp/foo/bar/name.txt | /tmp/foo/bar/ |
/testing/123/ | /testing/ |
/ | / |
References full(), parentDirectory, and separator().
|
virtual |
Get the last component in full() which normally would be the filename.
References fileName, full(), and separator().
|
virtual |
Get the full name.
name
is absolute, then this returns the name. name
is relative, then this returns the name combined with the default directory.Most of the time, this is the method you'll want to call to generate a path or filename.
Examples when the default directory is set to /tmp/
:
Directory Name | full() |
---|---|
/test.txt | /test.txt |
test.txt | /tmp/test.txt |
../test.txt | /tmp/../test.txt |
C:\MyFiles\test.txt | C:\MyFiles\test.txt |
References defaultDir(), fullDirAndName, name(), and separator().
|
protected |
Logic to extract the directory separator from the default directory or the explicit name.
References defaultDir(), and explicitName.
|
protectedvirtual |
Clear the mutable cache items.
References fileName, fullDirAndName, and parentDirectory.
|
protected |
The name used when the object was instantiated.
|
mutableprotected |
the last component from full()
|
mutableprotected |
the parent directory including the terminating slash
|
mutableprotected |
the name combined with the default directory