#ifndef __UTILITY_H
#define __UTILITY_H

#ifndef __STRINGS_H
#include <strings.h>
#endif

#ifndef __INCSTR_H
#include <../xvaga/incstr.h>
#endif

class TPerformance_profiler : public TObject
{
  TString _desc;
  long _start;
  bool _trc;

public:
  void show() const;
  
  TPerformance_profiler(const char* desc = "", bool trc = false);
  ~TPerformance_profiler();
};

char* format (const char* fmt, ...);
const char* cmd2name(const char* argv0, const char* argv1 = "");
int rtoi(const char * roman);
const char* itor(int i);
bool fcopy(const char* orig, const char* dest, bool append=FALSE);
bool fexist(const char* file);
long fsize(const char* file);

bool make_dir(const char* dir);
bool remove_file(const char* file);
int list_files(const char* mask, TString_array& result);
bool input_filename(TFilename& file);

const char* encode(const char* data);
const char* decode(const char* data);

inline bool is_slash(char s)  // @parm Carattere da confrontare
{ return s == '\\' || s == '/'; }

inline bool is_not_slash(char s)  // @parm Carattere da confrontare
{ return s != '\\' && s != '/'; }

const char* esc(const char* str);   // Trasforma le sequenze "\n" nel carattere '\n'
const char* unesc(const char* str); // Trasforma i caratteri '\n' nella sequenza "\n"

istream& eatwhite (istream& i);

const TString& get_hostname();
bool is_power_station();
long daytime();
bool expand_sys_vars(TString& str);

#define ODD(x)   (x & 1)
#define EVEN(x) !(x & 1) 

#endif /* __UTILITY_H */