Test-fileName.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
11  OpenFOAM is free software: you can redistribute it and/or modify it
12  under the terms of the GNU General Public License as published by
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
16  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 Application
25  Test-fileName
26 
27 Description
28  Test some basic fileName functionality
29 
30 \*---------------------------------------------------------------------------*/
31 
32 #include "fileName.H"
33 #include "SubList.H"
34 #include "IOobject.H"
35 #include "IOstreams.H"
36 #include "OSspecific.H"
37 
38 using namespace Foam;
39 
40 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41 // Main program:
42 
43 int main()
44 {
45  wordList wrdList(5);
46  wrdList[0] = "hello";
47  wrdList[1] = "hello1";
48  wrdList[2] = "hello2";
49  wrdList[3] = "hello3";
50  wrdList[4] = "hello4.hmm";
51 
52  fileName pathName(wrdList);
53 
54  Info<< "pathName = " << pathName << nl
55  << "pathName.name() = >" << pathName.name() << "<\n"
56  << "pathName.path() = " << pathName.path() << nl
57  << "pathName.ext() = >" << pathName.ext() << "<\n"
58  << "pathName.name(true) = >" << pathName.name(true) << "<\n";
59 
60  Info<< "pathName.components() = " << pathName.components() << nl
61  << "pathName.component(2) = " << pathName.component(2) << nl
62  << endl;
63 
64  // try with different combination
65  // The final one should emit warnings
66  for (label start = 0; start <= wrdList.size(); ++start)
67  {
68  fileName instance, local;
69  word name;
70 
71  fileName path(SubList<word>(wrdList, wrdList.size()-start, start));
72  fileName path2 = "."/path;
73 
75  (
76  path,
77  instance,
78  local,
79  name
80  );
81 
82  Info<< "IOobject::fileNameComponents for " << path << nl
83  << " instance = " << instance << nl
84  << " local = " << local << nl
85  << " name = " << name << endl;
86 
88  (
89  path2,
90  instance,
91  local,
92  name
93  );
94 
95  Info<< "IOobject::fileNameComponents for " << path2 << nl
96  << " instance = " << instance << nl
97  << " local = " << local << nl
98  << " name = " << name << endl;
99 
100  }
101 
102  // test findEtcFile
103  Info<< "\n\nfindEtcFile tests:" << nl
104  << " controlDict => " << findEtcFile("controlDict") << nl
105  << " badName => " << findEtcFile("badName") << endl;
106 
107  Info<< "This should emit a fatal error:" << endl;
108  Info<< " badName(die) => " << findEtcFile("badName", true) << nl
109  << endl;
110 
111  Info<< "\nEnd\n" << endl;
112  return 0;
113 }
114 
115 
116 // ************************************************************************* //
Foam::findEtcFile
fileName findEtcFile(const fileName &, bool mandatory=false)
Search for a file using findEtcFiles.
Definition: POSIX.C:404
OSspecific.H
Functions used by OpenFOAM that are specific to POSIX compliant operating systems and need to be repl...
IOstreams.H
Useful combination of include files which define Sin, Sout and Serr and the use of IO streams general...
SubList.H
main
int main()
Definition: Test-fileName.C:40
Foam::word
A class for handling words, derived from string.
Definition: word.H:59
Foam::fileName
A class for handling file names.
Definition: fileName.H:69
Foam::SubList
A List obtained as a section of another List.
Definition: SubList.H:53
Foam::fileName::components
wordList components(const char delimiter='/') const
Return path components as wordList.
Definition: fileName.C:357
Foam::fileName::path
fileName path() const
Return directory path name (part before last /)
Definition: fileName.C:293
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
Foam::fileName::name
word name() const
Return file name (part beyond last /)
Definition: fileName.C:212
Foam::fileName::component
word component(const size_type, const char delimiter='/') const
Return a single component of the path.
Definition: fileName.C:386
Foam::label
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Definition: label.H:59
Foam::nl
static const char nl
Definition: Ostream.H:260
Foam::Info
messageStream Info
fileName.H
Foam::IOobject::fileNameComponents
static bool fileNameComponents(const fileName &path, fileName &instance, fileName &local, word &name)
Split path into instance, local, name components.
Definition: IOobject.C:43
IOobject.H
Foam::fileName::ext
word ext() const
Return file name extension (part after last .)
Definition: fileName.C:329
Foam
Namespace for OpenFOAM.
Definition: combustionModel.C:30
Foam::List
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
Definition: HashTable.H:59
path
fileName path(UMean.rootPath()/UMean.caseName()/"graphs"/UMean.instance())
Foam::List::size
void size(const label)
Override size to be inconsistent with allocated storage.
Foam::name
word name(const complex &)
Return a string representation of a complex.
Definition: complex.C:47