Visual Servoing Platform  version 3.1.0
vpIoTools.h
1 /****************************************************************************
2  *
3  * This file is part of the ViSP software.
4  * Copyright (C) 2005 - 2017 by Inria. All rights reserved.
5  *
6  * This software is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  * See the file LICENSE.txt at the root directory of this source
11  * distribution for additional information about the GNU GPL.
12  *
13  * For using ViSP with software that can not be combined with the GNU
14  * GPL, please contact Inria about acquiring a ViSP Professional
15  * Edition License.
16  *
17  * See http://visp.inria.fr for more information.
18  *
19  * This software was developed at:
20  * Inria Rennes - Bretagne Atlantique
21  * Campus Universitaire de Beaulieu
22  * 35042 Rennes Cedex
23  * France
24  *
25  * If you have questions regarding the use of this file, please contact
26  * Inria at visp@inria.fr
27  *
28  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30  *
31  * Description:
32  * Directory management.
33  *
34  * Authors:
35  * Fabien Spindler
36  *
37  *****************************************************************************/
38 
39 #ifndef vpIoTools_HH
40 #define vpIoTools_HH
41 
47 #include <visp3/core/vpConfig.h>
48 
49 #include <iostream>
50 #include <sstream>
51 #include <stdlib.h>
52 #include <string>
53 #include <vector>
54 #include <visp3/core/vpColor.h>
55 
155 class VISP_EXPORT vpIoTools
156 {
157 
158 public:
159  static const std::string &getBuildInformation();
160  static void getUserName(std::string &username);
161  static std::string getUserName();
162  static std::string getenv(const char *env);
163  static std::string getenv(const std::string &env);
164  static std::string getViSPImagesDataPath();
165  static void getVersion(const std::string &version, unsigned int &major, unsigned int &minor, unsigned int &patch);
166  static bool checkDirectory(const char *dirname);
167  static bool checkDirectory(const std::string &dirname);
168  static bool checkFilename(const char *filename);
169  static bool checkFilename(const std::string &filename);
170  static bool copy(const char *src, const char *dst);
171  static bool copy(const std::string &src, const std::string &dst);
172  static void makeDirectory(const char *dirname);
173  static void makeDirectory(const std::string &dirname);
174  static bool remove(const char *filename);
175  static bool remove(const std::string &filename);
176  static bool rename(const char *oldfilename, const char *newfilename);
177  static bool rename(const std::string &oldfilename, const std::string &newfilename);
178 
179  static std::string path(const char *pathname);
180  static std::string path(const std::string &pathname);
181 
186  static const char separator =
187 #if defined(_WIN32)
188  '\\';
189 #else
190  '/';
191 #endif
192 
193  static std::string getAbsolutePathname(const std::string &pathname);
194  static std::string getFileExtension(const std::string &pathname, const bool checkFile = false);
195  static std::string getName(const std::string &pathname);
196  static std::string getNameWE(const std::string &pathname);
197  static std::string getParent(const std::string &pathname);
198  static std::string createFilePath(const std::string &parent, const std::string &child);
199  static bool isAbsolutePathname(const std::string &pathname);
200  static bool isSamePathname(const std::string &pathname1, const std::string &pathname2);
201  static std::pair<std::string, std::string> splitDrive(const std::string &pathname);
202  static std::vector<std::string> splitChain(const std::string &chain, const std::string &sep);
203  static std::vector<std::string> getDirFiles(const std::string &dirname);
204 
209  // read configuration file
210  static bool loadConfigFile(const std::string &confFile);
211  static bool readConfigVar(const std::string &var, float &value);
212  static bool readConfigVar(const std::string &var, double &value);
213  static bool readConfigVar(const std::string &var, int &value);
214  static bool readConfigVar(const std::string &var, unsigned int &value);
215  static bool readConfigVar(const std::string &var, bool &value);
216  static bool readConfigVar(const std::string &var, std::string &value);
217  static bool readConfigVar(const std::string &var, vpColor &value);
218  static bool readConfigVar(const std::string &var, vpArray2D<double> &value, const unsigned int &nCols = 0,
219  const unsigned int &nRows = 0);
220 
221  // construct experiment filename & path
222  static void setBaseName(const std::string &s);
223  static void setBaseDir(const std::string &dir);
224  static void addNameElement(const std::string &strTrue, const bool &cond = true, const std::string &strFalse = "");
225  static void addNameElement(const std::string &strTrue, const double &val);
226  static std::string getBaseName();
227  static std::string getFullName();
228 
229  // write files
230  static void saveConfigFile(const bool &actuallySave = true);
231  static void createBaseNamePath(const bool &empty = false);
233 
234 protected:
235  static std::string baseName;
236  static std::string baseDir;
237  static std::string configFile;
238  static std::vector<std::string> configVars;
239  static std::vector<std::string> configValues;
240 
241  static int mkdir_p(const char *path, const int mode);
242 };
243 #endif
File and directories basic tools.
Definition: vpIoTools.h:155
Class to define colors available for display functionnalities.
Definition: vpColor.h:120
static std::string baseDir
Definition: vpIoTools.h:236
static std::vector< std::string > configVars
Definition: vpIoTools.h:238
static std::string baseName
Definition: vpIoTools.h:235
static std::string configFile
Definition: vpIoTools.h:237
static std::vector< std::string > configValues
Definition: vpIoTools.h:239