/*========================================================================= Program: bbtk Module: $RCSfile: bbtkUtilities.h,v $ Language: C++ Date: $Date: 2008/10/17 08:18:14 $ Version: $Revision: 1.17 $ =========================================================================*/ /* --------------------------------------------------------------------- * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale) * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux * * This software is governed by the CeCILL-B license under French law and * abiding by the rules of distribution of free software. You can use, * modify and/ or redistribute the software under the terms of the CeCILL-B * license as circulated by CEA, CNRS and INRIA at the following URL * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html * or in the file LICENSE.txt. * * As a counterpart to the access to the source code and rights to copy, * modify and redistribute granted by the license, users are provided only * with a limited warranty and the software's author, the holder of the * economic rights, and the successive licensors have only limited * liability. * * The fact that you are presently reading this means that you have had * knowledge of the CeCILL-B license and that you accept its terms. * ------------------------------------------------------------------------ */ /** * \file * \brief struct bbtk::Utilities : various usefull methods */ /** * \class bbtk::Utilities * \brief various usefull methods */ #ifndef __bbtkUtilities_h_INCLUDED__ #define __bbtkUtilities_h_INCLUDED__ #include "bbtkConfigurationFile.h" #include "bbtkSystem.h" #include #include #ifdef CMAKE_HAVE_TERMIOS_H #include #define BBTK_USE_TERMIOS_BASED_PROMPT #endif #ifdef _MSC_VER #include #include #else #include #include #endif #include // std::toupper //#include "bbtkMessageManager.h" namespace bbtk { /// Holds various usefull methods struct BBTK_EXPORT Utilities { // ====================================================================== // See : http://www.techbytes.ca/techbyte103.html for more O.S. static bool FileExists(std::string strFilename); // ===================================================================== static std::string ExtractPackageName(const std::string &name, std::string& path); //===================================================================== static std::string ExtractScriptName(const std::string &name, std::string& path); // ======================================================================== static std::string ExpandLibName(const std::string &name, bool verbose); // =================================================================================== static std::string MakeLibnameFromPath(std::string path, std::string pkgname); // =================================================================================== static std::string MakePkgnameFromPath(std::string path, std::string pkgname, bool addExt); //======================================================================== // ======================================================================= /// Builds the complete path to the file 'name' located /// in user settings dir, e.g. /home/username/.bbtk/ static std::string MakeUserSettingsFullFileName(const std::string& name); static bool IsAtRoot(std::string cwd); // ====================================================================== static bool IsDirectory(std::string const &dirName); // =================================================================================== static void SplitAroundFirstDot( const std::string& in, std::string& left, std::string& right); //======================================================================= static void SplitString ( const std::string& str, const std::string& delimiters, std::vector& tokens); //======================================================================= // =================================================================================== static std::string get_file_name(const std::string& s) ; // =================================================================================== /** * \brief Explore a directory with possibility of recursion * return number of files read * @param dirpath directory to explore * @param recursive whether we want recursion or not */ static int Explore(std::string const &dirpath, bool recursive, std::vector &Filenames); //======================================================================= // Replaces substrings "\\n" by a real carriage return "\n" static void SubsBackslashN ( std::string& s ); //======================================================================= //======================================================================== // Usefull functions for html generation //======================================================================== static inline void replace( std::string& str, const std::string& what, const std::string& with ) { std::string::size_type pos = str.find( what ); while ( pos != std::string::npos ) { str.replace( pos, what.size(), with ); pos = str.find( what, pos+what.size()-1 ); } } //======================================================================== static inline void html_format(std::string& str) { replace( str, "&", "&" ); replace( str, "<", "<" ); replace( str, ">", ">" ); } //======================================================================== // Usefull functions OPTIONS string //======================================================================== static bool loosematch(std::string stdLine,std::string stdOptions); }; } // namespace bbtk #endif //#ifndef __bbtkUtilities_h_INCLUDED__ //EOF