//
// Util.hh for pekwm
// Copyright (C) 2002-2005 Claes Nasten <pekdon{@}pekdon{.}net>
//
// This program is licensed under the GNU GPL.
// See the LICENSE file for more information.
//
#include "../config.h"
#ifndef _UTIL_HH_
#define _UTIL_HH_
#include "Types.hh"
#include <string>
#include <vector>
#include <functional>
#include <sstream>
//! @brief Namespace Util used for various small file/string tasks.
namespace Util {
void forkExec(std::string command);
bool isFile(const std::string &file);
bool isExecutable(const std::string &file);
std::string getFileExt(const std::string &file);
std::string getDir(const std::string &file);
void expandFileName(std::string &file);
uint splitString(const std::string &str, std::vector<std::string> &vals,
const char *sep, uint max = 0);
template<class T> std::string to_string (T o_t)
{
std::ostringstream o_oss;
o_oss << o_t;
return o_oss.str ();
}
//! @brief Removes leading blanks( \n\t) from string.
inline void trimLeadingBlanks(std::string &trim) {
std::string::size_type first = trim.find_first_not_of(" \n\t");
if ((first != std::string::npos) &&
(first != (std::string::size_type) trim[0]))
trim = trim.substr(first, trim.size() - first);
}
//! @brief Returns true if value represents true(1 or TRUE).
inline bool isTrue(const std::string &value) {
if (value.size() > 0)
{
if ((value[0] == '1') // check for 1 / 0
|| !strncasecmp(value.c_str(), "TRUE", 4))
return true;
}
return false;
}
//! @brief for_each delete utility.
template<class T> struct Free : public std::unary_function<T, void> {
void operator ()(T t) { delete t; }
};
}
#ifndef HAVE_SETENV
int setenv(const char *name, const char *value, int overwrite);
#endif // HAVE_SETENV
#endif // _UTIL_HH_
syntax highlighted by Code2HTML, v. 0.9.1