#ifndef ROOT_TMemStatHelpers
#define ROOT_TMemStatHelpers
#ifndef ROOT_TString
#include "TString.h"
#endif
#ifndef ROOT_TObjString
#include "TObjString.h"
#endif
#ifndef ROOT_TCollection
#include "TCollection.h"
#endif
#include <string>
#include <functional>
#include <algorithm>
#include <cctype>
class TObject;
namespace Memstat
{
std::string dig2bytes(Long64_t bytes);
struct SFind_t : std::binary_function<TObject*, TString, bool> {
bool operator()(TObject *_Obj, const TString &_ToFind) const
{
TObjString *str(dynamic_cast<TObjString*>(_Obj));
if (!str)
return false;
return !str->String().CompareTo(_ToFind);
}
};
template<class T>
Int_t find_string( const T &_Container, const TString &_ToFind )
{
typedef TIterCategory<T> iterator_t;
iterator_t iter(&_Container);
iterator_t found(
std::find_if(iter.Begin(), iterator_t::End(), bind2nd(SFind_t(), _ToFind))
);
return ( ( !(*found) )? -1: std::distance(iter.Begin(), found) );
}
struct ToLower_t
{
char operator() ( char c ) const
{
return std::tolower( c );
}
};
};
#endif