From 630e281e4632ce407c56d4668c62f3c8a8d3c4ec Mon Sep 17 00:00:00 2001 From: Jürgen Knödlseder Date: Sat, 12 Dec 2015 20:35:04 +0100 Subject: [PATCH] Added default argument to extno() and extver() Integrate code (default extno and extver handling in GFilename). --- include/GFilename.hpp | 30 +++--------------------------- pyext/GFilename.i | 4 ++-- src/support/GFilename.cpp | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ test/test_GSupport.cpp | 12 ++++++++++++ 4 files changed, 67 insertions(+), 29 deletions(-) diff --git a/include/GFilename.hpp b/include/GFilename.hpp index f8a96e0..a25edbc 100644 --- a/include/GFilename.hpp +++ b/include/GFilename.hpp @@ -61,8 +61,8 @@ public: int length(void) const; const std::string& filename(void) const; std::string extname(const std::string& defaultname = "") const; - const int& extno(void) const; - const int& extver(void) const; + int extno(const int& defaultno = -1) const; + int extver(const int& defaultver = 0) const; bool has_extname(void) const; bool has_extno(void) const; bool has_extver(void) const; @@ -77,7 +77,7 @@ protected: // Protected members std::string m_filename; //!< Filename (with stripped extension info) - std::string m_extname; //!< Extension name + std::string m_extname; //!< Extension name ("": not set) int m_extno; //!< Extension number (-1: not set) int m_extver; //!< Extension version (0: not set) }; @@ -146,30 +146,6 @@ const std::string& GFilename::filename(void) const /***********************************************************************//** - * @brief Return extension number - * - * @return Extension number (-1 if not set). - ***************************************************************************/ -inline -const int& GFilename::extno(void) const -{ - return (m_extno); -} - - -/***********************************************************************//** - * @brief Return extension version - * - * @return Extension version (0 if not set). - ***************************************************************************/ -inline -const int& GFilename::extver(void) const -{ - return (m_extver); -} - - -/***********************************************************************//** * @brief Signal if filename has an extension name * * @return True if filename has an extension name, false otherwise. diff --git a/pyext/GFilename.i b/pyext/GFilename.i index 154ad51..312310a 100644 --- a/pyext/GFilename.i +++ b/pyext/GFilename.i @@ -53,8 +53,8 @@ public: int length(void) const; const std::string& filename(void) const; std::string extname(const std::string& defaultname = "") const; - const int& extno(void) const; - const int& extver(void) const; + int extno(const int& defaultno = -1) const; + int extver(const int& defaultver = 0) const; bool has_extname(void) const; bool has_extno(void) const; bool has_extver(void) const; diff --git a/src/support/GFilename.cpp b/src/support/GFilename.cpp index 8456f75..97ed953 100644 --- a/src/support/GFilename.cpp +++ b/src/support/GFilename.cpp @@ -225,6 +225,56 @@ std::string GFilename::extname(const std::string& defaultname) const /***********************************************************************//** + * @brief Return extension number + * + * @param[in] defaultno Default extension number (default: -11). + * @return Integer containing extension number. + * + * Returns the extension number. If no extension number is given the number + * provided by the @p defaultno argument will be used. By default, the + * @p defaultno parameter is set to -1. + ***************************************************************************/ +int GFilename::extno(const int& defaultno) const +{ + // Set the extension number + int extno = m_extno; + + // If no extension number is set, the use the default extension number + if (!has_extno()) { + extno = defaultno; + } + + // Return extension number + return (extno); +} + + +/***********************************************************************//** + * @brief Return extension version number + * + * @param[in] defaultver Default extension version number (default: 0). + * @return Integer containing extension version number. + * + * Returns the extension version number. If no extension version number is + * given the number provided by the @p defaultver argument will be used. By + * default, the @p defaultextver parameter is set to 0. + ***************************************************************************/ +int GFilename::extver(const int& defaultver) const +{ + // Set the extension version + int extver = m_extver; + + // If no extension version is set, the use the default extension version + if (!has_extver()) { + extver = defaultver; + } + + // Return extension version + return (extver); +} + + +/***********************************************************************//** * @brief Print file name information * * @param[in] chatter Chattiness (default: NORMAL). diff --git a/test/test_GSupport.cpp b/test/test_GSupport.cpp index a8de738..d58fc6b 100644 --- a/test/test_GSupport.cpp +++ b/test/test_GSupport.cpp @@ -768,6 +768,18 @@ void TestGSupport::test_filename(void) "Expected \"LUCKY\" extension name, " "found \""+filename.extname()+"\""); + // Test default extension number + filename = "myfile.fits"; + test_value(filename.extno(1), 1); + filename = "myfile.fits[3]"; + test_value(filename.extno(1), 3); + + // Test default extension version + filename = "myfile.fits"; + test_value(filename.extver(1), 1); + filename = "myfile.fits[3,3]"; + test_value(filename.extver(1), 3); + // Return return; } -- libgit2 0.21.4