File Path Builder

// Simplifies building a file path.
class RVAPI Path
{
public:
    // Check if non-empty.
    bool operator ! () const;

    // Get native string.
    operator wcstr () const;

    // Get name part.
    wcstr GetName() const;

    // Get extension part.
    wcstr GetExt() const;

    // Get name and extension part.
    wcstr GetNameAndExt() const;

    // Get directory part.
    wcstr GetDir() const;

    // Set path.
    void operator = (wcstr string);

    // Append slash then add [part].
    void operator &= (wcstr part);

    // Append [part].
    void operator += (wcstr part);

    // Remove [n] part(s) from end of path.
    void Up(uint n = 1);

    // Make path lower case.
    void ToLower();

    // Clear path.
    void Clear();

    // Internal.
    void *operator () () const { return (void *)wobj; }

    // Constructor.
    Path();

    // Destructor.
    ~Path();

private:
    byte wobj[64];
};