USGS

Isis 3.0 Object Programmers' Reference

Home

FileName.h

Go to the documentation of this file.
00001 
00023 #ifndef FileName_H
00024 #define FileName_H
00025 
00026 #include <string>
00027 #include <QSharedData>
00028 
00029 class QDate;
00030 class QDir;
00031 class QString;
00032 
00033 template<typename A, typename B> class QPair;
00034 
00035 namespace Isis {
00109   class FileName {
00110     public:
00111       FileName();
00112       FileName(const char *fileName);
00113       FileName(const QString &fileName);
00114       FileName(const FileName &other);
00115       ~FileName();
00116 
00117       QString originalPath() const;
00118       QString path() const;
00119 
00120       QString attributes() const;
00121       QString baseName() const;
00122       QString name() const;
00123       QString extension() const;
00124 
00125       QString expanded() const;
00126       QString original() const;
00127 
00128       FileName addExtension(const QString &extension) const;
00129       FileName removeExtension() const;
00130       FileName setExtension(const QString &extension) const;
00131 
00132       bool isVersioned() const;
00133       bool isNumericallyVersioned() const;
00134       bool isDateVersioned() const;
00135 
00136       FileName highestVersion() const;
00137       FileName newVersion() const;
00138       FileName version(long versionNumber) const;
00139       FileName version(QDate versionDate) const;
00140 
00141       // Return true if the file exists
00142       bool fileExists() const;
00143 
00144       // Create a directory
00145       QDir dir() const;
00146 
00147       static FileName createTempFile(FileName templateFileName = "$TEMPORARY/temp");
00148 
00149       QString toString() const;
00150       FileName &operator=(const FileName &rhs);
00151       bool operator==(const FileName &rhs);
00152       bool operator!=(const FileName &rhs);
00153 
00154     private:
00155       QDate highestVersionDate() const;
00156       long highestVersionNum() const;
00157       void validateVersioningState() const;
00158 
00159       QString fileNameQDatePattern() const;
00160 
00161       QPair<QString, QString> splitNameAroundVersionNum() const;
00162 
00163     private:
00171       class Data : public QSharedData {
00172         public:
00173           Data();
00174           Data(const Data &other);
00175           ~Data();
00176 
00177           QString original(bool includeAttributes) const;
00178           void setOriginal(const QString &);
00179 
00180           QString expanded(bool includeAttributes) const;
00181 
00182           // assignment operator is defined in QSharedData
00183           // Data &operator=(const Data &rhs);
00184 
00185         private:
00186           QString *m_originalFileNameString;
00187           QString *m_expandedFileNameString;
00188       };
00189 
00191       QSharedDataPointer<Data> m_d;
00192   };
00193 };
00194 
00195 #endif