Skip to content

Commit 8b93cf3

Browse files
Merge pull request #5 from LIHPC-Computational-Geometry/basename
Version 6.6.0. Method File::getBaseName.
2 parents 3cef81e + 49da1b7 commit 8b93cf3

File tree

5 files changed

+57
-31
lines changed

5 files changed

+57
-31
lines changed

cmake/version.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#
44

55
set (TK_UTIL_MAJOR_VERSION "6")
6-
set (TK_UTIL_MINOR_VERSION "5")
7-
set (TK_UTIL_RELEASE_VERSION "1")
6+
set (TK_UTIL_MINOR_VERSION "6")
7+
set (TK_UTIL_RELEASE_VERSION "0")
88
set (TK_UTIL_VERSION ${TK_UTIL_MAJOR_VERSION}.${TK_UTIL_MINOR_VERSION}.${TK_UTIL_RELEASE_VERSION})
99

1010
set (TK_UTIL_SCRIPTING_MAJOR_VERSION ${TK_UTIL_MAJOR_VERSION})

src/TkUtil/File.cpp

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ void File::setFullFileName (const string& fullFileName)
6969

7070
string File::getFileName ( ) const
7171
{
72-
string::size_type separator = getFullFileName ( ).rfind ('/');
72+
const string::size_type separator = getFullFileName ( ).rfind ('/');
73+
74+
if (0 == separator)
75+
return string ("/"); // v 6.6.0, cf. man basename
7376

7477
if (string::npos == separator)
7578
return getFullFileName ( );
@@ -80,15 +83,33 @@ string File::getFileName ( ) const
8083

8184
File File::getPath ( ) const
8285
{
83-
string::size_type separator = getFullFileName ( ).rfind ('/');
86+
const string::size_type separator = getFullFileName ( ).rfind ('/');
8487

88+
if (0 == separator)
89+
return string ("/"); // v 6.6.0, cf. man basename
90+
8591
if (string::npos == separator)
8692
return File (".");
8793

8894
return getFullFileName ( ).substr (0, separator);
8995
} // File::getPath
9096

9197

98+
const string File::getBaseName ( ) const // v 6.6.0
99+
{
100+
const string fileName = getFileName ( );
101+
const string::size_type lastDot = fileName.rfind ('.');
102+
103+
if ((1 == lastDot) && (fileName == ".."))
104+
return fileName;
105+
106+
if (string::npos == lastDot)
107+
return fileName;
108+
109+
return 0 == lastDot ? string (".") : fileName.substr (0, lastDot);
110+
} // File::getBaseName
111+
112+
92113
const string File::getExtension ( ) const
93114
{
94115
string::size_type lastDot = getFileName ( ).rfind ('.');
@@ -201,6 +222,7 @@ bool File::isSocket ( ) const
201222
return false;
202223
} // File::isSocket
203224

225+
204226
bool File::isReadable ( ) const
205227
{
206228
return (0 == ::access (getFullFileName ( ).c_str ( ), R_OK) ? true : false);
@@ -470,8 +492,9 @@ void File::print (IN_STD ostream& stream) const
470492

471493
stream << "Nom complet : " << getFullFileName ( ) << endl
472494
<< "Nom : " << getFileName ( ) << endl
473-
<< "Répertoire : " << getPath ( ).getFullFileName ( )
474-
<< endl
495+
<< "Base : " << getBaseName ( ) << endl
496+
<< "Extension : " << getExtension ( ) << endl
497+
<< "Répertoire : " << getPath ( ).getFullFileName ( ) << endl
475498
<< "Existe : "
476499
<< (true == exist ? "oui" : "non") << endl;
477500
if (true == exist)

src/TkUtil/public/TkUtil/File.h

Lines changed: 22 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ BEGIN_NAMESPACE_UTIL
1212

1313

1414
/**
15-
* Cette classe permet d'accéder à des informations propres à un
16-
* fichier.
17-
* @todo Plein de choses !
15+
* Cette classe permet d'accéder à des informations propres à un fichier.
16+
* @todo Plein de choses !
1817
* @author Charles PIGNEROL, CEA/DAM/DSSI
1918
*/
2019
class File
@@ -58,11 +57,20 @@ class File
5857

5958
/**
6059
* @return Le répertoire contenant le fichier ou ".".
60+
* @see getBaseName
6161
*/
6262
virtual File getPath ( ) const;
6363

64+
/**
65+
* @return Le nom du fichier sans son extension (ex : "toto" pour "toto.txt").
66+
* @see getExtension
67+
* @since 6.6.0
68+
*/
69+
const IN_STD string getBaseName ( ) const;
70+
6471
/**
6572
* @return L'extension du fichier (ex : "txt" pour "toto.txt").
73+
* @see getBaseName
6674
*/
6775
const IN_STD string getExtension ( ) const;
6876

@@ -103,15 +111,13 @@ class File
103111
virtual bool isReadable ( ) const;
104112

105113
/**
106-
* @return true si le fichier est accessible en écriture, sinon
107-
* false. Si le fichier n'existe pas les droits en
114+
* @return true si le fichier est accessible en écriture, sinon false. Si le fichier n'existe pas les droits en
108115
* écriture sont testés sur son répertoire.
109116
*/
110117
virtual bool isWritable ( ) const;
111118

112119
/**
113-
* @return true si le fichier est accessible en exécution, sinon
114-
* false.
120+
* @return true si le fichier est accessible en exécution, sinon false.
115121
*/
116122
virtual bool isExecutable ( ) const;
117123

@@ -132,19 +138,15 @@ class File
132138
virtual void setAccessRights (mode_t rigths); // v 5.11.0
133139

134140
/**
135-
* Créé effectivement le fichier si celui-ci n'existe pas. Créé
136-
* l'arborescence parente si nécessaire.
137-
* @param true si c'est un fichier, false si ce doit être un
138-
* répertoire.
139-
* @exception Une exception est levée en cas d'échec de la création du
140-
* fichier.
141+
* Créé effectivement le fichier si celui-ci n'existe pas. Créé l'arborescence parente si nécessaire.
142+
* @param true si c'est un fichier, false si ce doit être un répertoire.
143+
* @exception Une exception est levée en cas d'échec de la création du fichier.
141144
*/
142145
virtual void create (bool asFile);
143146

144147
/**
145148
* Vide le fichier de son contenu.
146-
* @exception Une exception est levée si le fichier n'existe pas, si c'est
147-
* un répertoire ou en cas d'erreur.
149+
* @exception Une exception est levée si le fichier n'existe pas, si c'est un répertoire ou en cas d'erreur.
148150
*/
149151
virtual void reset ( );
150152

@@ -160,16 +162,13 @@ class File
160162

161163
/**
162164
* Détruit le fichier s'il existe.
163-
* @warning <B>Si le fichier est un répertoire le contenu de celui-ci
164-
* est également détruit.</B>
165-
* @exception Une exception est levée en cas d'échec de la destruction du
166-
* fichier.
165+
* @warning <B>Si le fichier est un répertoire le contenu de celui-ci est également détruit.</B>
166+
* @exception Une exception est levée en cas d'échec de la destruction du fichier.
167167
*/
168168
virtual void remove ( );
169169

170170
/**
171-
* Affiche les informations sur le fichier dans le flux reçu en
172-
* argument.
171+
* Affiche les informations sur le fichier dans le flux reçu en argument.
173172
*/
174173
virtual void print (IN_STD ostream& stream) const;
175174

@@ -182,9 +181,8 @@ class File
182181
/**
183182
* Créé un nom unique de fichier temporaire.
184183
* @param Préfix du nom de fichier temporaire.
185-
* @param true si le fichier doit être créé dans le répertoire des
186-
* fichiers temporaires, false si il doit être créé en relatif
187-
* par rapport à prefix.
184+
* @param true si le fichier doit être créé dans le répertoire des fichiers temporaires,
185+
* false si il doit être créé en relatif par rapport à prefix.
188186
* @exception Une exception est levée en cas d'échec.
189187
*/
190188
static IN_STD string createTemporaryName (const IN_STD string& prefix, bool inTmpDir = true);

src/TkUtilScripting/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ set (ALL_TARGETS TkUtilScripting)
2828
set_property (SOURCE TkUtilScripting.i PROPERTY CPLUSPLUS ON)
2929
swig_add_library (TkUtilScripting TYPE SHARED LANGUAGE PYTHON SOURCES ${CPP_SOURCES})
3030
cmake_policy (SET CMP0086 NEW)
31-
set_source_files_properties (TkUtilScripting.i PROPERTIES CPLUSPLUS ON)
3231
set_source_files_properties (TkUtilScripting.i PROPERTIES SWIG_MODULE_NAME TkUtil)
3332
add_custom_command (TARGET TkUtilScripting POST_BUILD COMMAND cp ${CMAKE_CURRENT_BINARY_DIR}/TkUtil.py ${CMAKE_CURRENT_BINARY_DIR}/binding.py COMMAND cat ${GUIToolkitsVariables_CMAKE_DIR}/utf8-header.py ${CMAKE_CURRENT_BINARY_DIR}/binding.py >> ${CMAKE_CURRENT_BINARY_DIR}/TkUtilScripting.py)
3433
# Objectif avoir les flags de compilation SWIG suivants :

versions.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
Version 6.6.0 : 08/12/23
2+
===============
3+
4+
Méthode File::getBaseName.
5+
6+
17
Version 6.5.0 : 21/06/23
28
===============
39

0 commit comments

Comments
 (0)