#ifndef __UTILITY_H #define __UTILITY_H #ifndef __ARRAY_H #include #endif #ifndef __DATE_H #include #endif #ifndef __STRINGS_H #include #endif #ifndef __VARIANT_H #include #endif #include #define STRINGIFY(x) #x #define SAFE_DELETE(p) safe_delete(p) #define TOSTRING(x) STRINGIFY(x) #define DEBUG_ENABLED is_debug_station() bool sirio_codesigning(const TFilename& filename, bool verify = false); #define SIRIOSIGN(filename) sirio_codesigning((const TFilename&)((filename)), false) #define SIRIOSIGN_VERIFY(filename) sirio_codesigning((const TFilename&)((filename)), true) #define SIRIOCFPI "04879210963" typedef enum { desktop_dir = 0, documents_dir, exec_dir, install_dir, temp_dir } TSystem_dirs; template void safe_delete(T*& a) { delete a; a = nullptr; } 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 advanced = false); bool fmove(const char* orig, const char* dest, bool append = false, bool advanced = false); bool fexist(const char* file); long fsize(const char* file); bool dexist(const char* file); void log_message(const char* fmt, ...); const time_t atime(const char* file); // access time const time_t ctime(const char* file); // creation time const time_t mtime(const char* file); // modification time struct tm * altime(const char* file); // access local time struct tm * cltime(const char* file); // creation local time struct tm * mltime(const char* file); // creation local time TDate aldate(const char* file); // creation date TDate cldate(const char* file);// modification date TDate mldate(const char* file);// access date bool make_dir(const char* dir); bool remove_file(const char* file); int remove_files(const char* mask, bool subdirs); int count_files(const char* dir, bool subdirs); int list_files(const char* mask, TString_array& result); bool input_filename(TFilename& file); const char * get_system_dir(TSystem_dirs what); const char * standard_path_list(); 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_debug_station(); bool is_power_station(); bool is_power_reseller(bool power_user_only = false); long daytime(); bool expand_sys_vars(TString& str); void quoted_string(TString& query, const char* val); inline const char* get_iva_sirio() // Ritorna la partita IVA della Sirio { return "04879210963"; } TString& to_tstring(long n); TString& to_tstring(int n); const TString & mod2name(word module); const TString & mod2tabname(word module); inline bool is_multi_table(const int file) { return file == LF_TAB || file == LF_TABGEN || file == LF_TABCOM || file == LF_TABMOD; } void build_IBAN(TString & iban, const char * iso, const char * icin, const char * bcin, const char * abi, const char * cab, const char * cc); void split_IBAN(const char * iban, TString & iso, TString & icin, TString & bcin, TString & abi, TString & cab, TString & cc); void set_test_mail(const TString & email); bool send_mail(TToken_string & to, TToken_string & cc, TToken_string & ccn, const char * subj, const char * text, TToken_string & attachment, bool ui, bool receipt); #endif /* __UTILITY_H */