/////////////////////////////////////////////////////////////////////////////// // Copyright (C) 2002-2025, Open Design Alliance (the "Alliance"). // All rights reserved. // // This software and its documentation and related materials are owned by // the Alliance. The software may only be incorporated into application // programs owned by members of the Alliance, subject to a signed // Membership Agreement and Supplemental Software License Agreement with the // Alliance. The structure and organization of this software are the valuable // trade secrets of the Alliance and its suppliers. The software is also // protected by copyright law and international treaty provisions. Application // programs incorporating this software must include the following statement // with their copyright notices: // // This application incorporates Open Design Alliance software pursuant to a license // agreement with Open Design Alliance. // Open Design Alliance Copyright (C) 2002-2025 by Open Design Alliance. // All rights reserved. // // By use of this software, its documentation or related materials, you // acknowledge and accept the above terms. /////////////////////////////////////////////////////////////////////////////// #ifndef _Path_Util_H_ #define _Path_Util_H_ #include "OdString.h" #include "OdArray.h" #include /** */ namespace OD { class Path; class Path : public OdArray { Path& parse(const OdAnsiString& name, const char* delimeters = "/\\"); Path& parse(const OdString& name, const OdChar* delimeters = L"/\\"); Path& add(const Path& path); Path& add(const OdAnsiString& part); void append(const OdAnsiString& part); void append(const Path& path); public: Path() {} Path(const OdAnsiString& path); Path(const OdString& path); Path(const OdChar* path); Path(const char* path); static const char* Walk(const char* szPath, const char* delimeters = "/\\"); Path operator + (const OdAnsiString& path) const; Path operator + (const OdString& path) const; Path operator + (const char* path) const; Path operator + (const OdChar* path) const; Path operator + (const Path& path) const; Path& operator += (const OdAnsiString& path); Path& operator += (const OdString& path); Path& operator += (const char* path); Path& operator += (const OdChar* path); Path& operator += (const Path& path); OdString asStr(bool asdir = false, char sepch = '/') const; }; inline void Path::append(const OdAnsiString & part) { if(size()>0 && part==".." && last() != "..") { removeLast(); } else { OdArray::append(part); } } inline void Path::append(const Path & path) { for(size_type i=0; i