URL
https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk
Subversion Repositories openrisc_2011-10-31
[/] [openrisc/] [trunk/] [rtos/] [ecos-2.0/] [tools/] [src/] [tools/] [configtool/] [standalone/] [wxwin/] [filename.h] - Rev 174
Compare with Previous | Blame | View Log
//####COPYRIGHTBEGIN#### // // ---------------------------------------------------------------------------- // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. // // This program is part of the eCos host tools. // // This program is free software; you can redistribute it and/or modify it // under the terms of the GNU General Public License as published by the Free // Software Foundation; either version 2 of the License, or (at your option) // any later version. // // This program is distributed in the hope that it will be useful, but WITHOUT // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for // more details. // // You should have received a copy of the GNU General Public License along with // this program; if not, write to the Free Software Foundation, Inc., // 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // ---------------------------------------------------------------------------- // //####COPYRIGHTEND#### //=========================================================================== //#####DESCRIPTIONBEGIN#### // // Author(s): sdf // Contact(s): sdf // Date: 1998/09/11 // Version: 0.01 // Purpose: Class to encapsulate filename operations (i.e. broadly on a file which probably do not involve opening // it). Importantly, the + and += operators performs filename segment addition, making sure that only one '\\' // comes between each piece. // Translated to wxWindows conventions by julians (in progress) // Description: Interface of the filename class // Requires: // Provides: // See also: // Known bugs: // Usage: // //####DESCRIPTIONEND#### // //=========================================================================== #ifndef _ECOS_FILENAME_H_ #define _ECOS_FILENAME_H_ #include "wx/wxchar.h" #include "wx/dir.h" /* * ecFileName * * This class extends wxString with functionality related * to filenames. */ class ecFileName : public wxString { public: void ReplaceExtension (const wxString& newExt); // previous directory is returned: static ecFileName SetCurrentDirectory (const wxChar* pszDir); const wxString Root() const; const wxString Extension() const; static ecFileName GetTempPath(); bool IsAbsolute() const; static const wxChar cSep; // The path separator ('\' on windows) // Standard ctors ecFileName():wxString(){} ecFileName(const ecFileName& stringSrc):wxString(stringSrc){Normalize();} ecFileName(const wxString& stringSrc):wxString(stringSrc){Normalize();} ecFileName(wxChar ch, int nRepeat = 1):wxString(ch,nRepeat){Normalize();} ecFileName(/*LPCSTR*/ const wxChar* lpsz):wxString(lpsz){Normalize();} /* TODO ecFileName(LPCWSTR lpsz):wxString(lpsz){Normalize();} */ ecFileName(/*LPCSTR*/ const wxChar* lpch, int nLength):wxString(lpch,nLength){Normalize();} /* TODO ecFileName(LPCWSTR lpch, int nLength):wxString(lpch,nLength){Normalize();} */ ecFileName(const unsigned char* psz):wxString(psz){Normalize();} // Construct from path fragments ecFileName(const wxChar*,const wxChar*); ecFileName(const wxChar*,const wxChar*,const wxChar*); ecFileName(const wxChar*,const wxChar*,const wxChar*,const wxChar*); ecFileName(const wxChar*,const wxChar*,const wxChar*,const wxChar*,const wxChar*); //~ecFileName(); // catenation operators: exactly one separator is placed between L and R const ecFileName& operator+=(const ecFileName& string); const ecFileName& operator+=(wxChar ch); #ifdef _UNICODE const ecFileName& operator+=(char ch); #endif const ecFileName& operator+=(const wxChar* lpsz); friend ecFileName operator+(const ecFileName& string1,const ecFileName& string2); friend ecFileName operator+(const ecFileName& string, wxChar ch); friend ecFileName operator+(wxChar ch, const ecFileName& string); #ifdef _UNICODE friend ecFileName operator+(const ecFileName& string, char ch); friend ecFileName operator+(char ch, const ecFileName& string); #endif friend ecFileName operator+(const ecFileName& string, const wxChar* lpsz); friend ecFileName operator+(const wxChar* lpsz, const ecFileName& string); // Textual append - no separator functionality const ecFileName& Append (wxChar ch); const ecFileName& Append (const wxChar* psz); // Utility functions const ecFileName FullName() const; // full path name const ecFileName NoSpaceName() const;// sans spaces const ecFileName ShortName() const; // the type with ~s in it const ecFileName Tail() const; // file name sans directory part const ecFileName Head() const; // directory part const ecFileName CygPath() const; // path mangled for CygWin static ecFileName GetCurrentDirectory(); const ecFileName& ExpandEnvironmentStrings(); static ecFileName ExpandEnvironmentStrings(const wxChar* psz); // Form path name relative to given parameter (if NULL, current directory) const ecFileName& MakeRelative(const wxChar* pszRelativeTo=0); static ecFileName Relative(const wxChar* psz,const wxChar* pszRelativeTo=0); bool SameFile (const ecFileName &strOther) const; /* TODO bool SetFileAttributes (long dwFileAttributes) const; long Attributes() const { return ::GetFileAttributes(*this); } */ bool Exists () const ; bool IsDir () const ; bool IsFile () const ; bool IsReadOnly () const ; time_t LastModificationTime() const; bool RecursivelyDelete(); bool CreateDirectory (bool bParentsToo=true,bool bFailIfAlreadyExists=false) const; static int FindFiles (const wxString& pszDir,wxArrayString &ar,const wxString& pszPattern=wxT("*.*"),bool bRecurse=TRUE,long dwExclude=wxDIR_DIRS|wxDIR_HIDDEN); protected: /* Don't appear to be necessary // Helpers for Relative(): const wxChar* *Chop (); static ecFileName Drive(const wxChar* psz); */ // Remove trailing '/' (helper for ctors) void Normalize(); // Implementating catenation functionality: void ConcatInPlace(const wxString& src); void ConcatCopy(const wxString& src1, const wxString& src2); }; class wxSaveExcursion { const ecFileName m_strPrevDir; public: wxSaveExcursion(const wxChar* pszDir) : m_strPrevDir(ecFileName::SetCurrentDirectory(pszDir)) {} ~wxSaveExcursion() { ecFileName::SetCurrentDirectory(m_strPrevDir); } bool Ok() const { return !m_strPrevDir.IsEmpty(); } }; #endif // _ECOS_FILENAME_H_