/* * This file is a part of Winix * and is not publicly distributed * * Copyright (c) 2008-2010, Tomasz Sowa * All rights reserved. * */ #ifndef headerfilecmslucoremisc #define headerfilecmslucoremisc #include #include #include #include #include "item.h" int Atoi(const std::string & str, int base = 10); int Atoi(const std::wstring & str, int base = 10); int Atoi(const char * str, int base = 10); int Atoi(const wchar_t * str, int base = 10); long Atol(const std::string & str, int base = 10); long Atol(const std::wstring & str, int base = 10); long Atol(const char * str, int base = 10); long Atol(const wchar_t * str, int base = 10); // warning: it uses its own static buffer // one buffer for both these functions const wchar_t * Itoa(int value, int base = 10); const wchar_t * Ltoa(long value, int base = 10); void AssignString(const char * src, std::wstring & dst, bool clear = true); void AssignString(const std::string & src, std::wstring & dst, bool clear = true); void AssignString(const wchar_t * src, std::string & dst, bool clear = true); void AssignString(const std::wstring & src, std::string & dst, bool clear = true); void AssignString(const std::string & src, std::string & dst, bool clear = true); void AssignString(const std::wstring & src, std::wstring & dst, bool clear = true); void ToString(std::string & s, int value); void ToString(std::string & s, long value); void ToString(std::wstring & s, int value); void ToString(std::wstring & s, long value); //int ChangeLocalChar(unsigned char c); bool CorrectUrlChar(wchar_t c); void CorrectUrlDots(std::wstring & url); void CorrectUrlChars(std::wstring & url); void CorrectUrlOnlyAllowedChar(std::wstring & url); const wchar_t * DateToStr(int year, int month, int day); const wchar_t * DateToStr(int year, int month, int day, int hour, int min, int sec); const wchar_t * DateToStr(const tm * ptm); const wchar_t * DateToStr(const tm & rtm); const wchar_t * DateToStr(time_t t); const wchar_t * DateToStrWithoutHours(const tm * ptm); const wchar_t * DateToStrWithoutHours(const tm & rtm); const wchar_t * DateToStrWithoutHours(time_t t); const char * DateToStrCookie(int year, int month, int day, int hour, int min, int sec); const char * DateToStrCookie(const tm * ptm); const char * DateToStrCookie(const tm & rtm); const char * DateToStrCookie(time_t t); const wchar_t * IpToStr(unsigned int ip_); bool IsWhite(wchar_t s); template void TrimWhite(StringType & s) { typename StringType::size_type i; if( s.empty() ) return; // looking for white characters at the end for(i=s.size()-1 ; i>0 && IsWhite(s[i]) ; --i); if( i==0 && IsWhite(s[i]) ) { // the whole string has white characters s.clear(); return; } // deleting white characters at the end if( i != s.size() - 1 ) s.erase(i+1, StringType::npos); // looking for white characters at the beginning for(i=0 ; i void Trim(StringType & s, wchar_t c) { typename StringType::size_type i; if( s.empty() ) return; // looking for the 'c' characters at the end for(i=s.size()-1 ; i>0 && s[i]==c ; --i); if( i==0 && s[i]==c ) { // the whole string has the 'c' characters s.clear(); return; } // deleting 'c' characters at the end if( i != s.size() - 1 ) s.erase(i+1, StringType::npos); // looking for the 'c' characters at the beginning for(i=0 ; i bool IsSubString(const StringType1 * short_str, const StringType2 * long_str) { while( *short_str && *long_str && wchar_t(*short_str) == wchar_t(*long_str) ) { ++short_str; ++long_str; } if( *short_str == 0 ) return true; return false; } template bool IsSubString(const StringType1 & short_str, const StringType2 & long_str) { return IsSubString(short_str.c_str(), long_str.c_str()); } template bool IsSubStringNoCase(const StringType1 * short_str, const StringType2 * long_str) { while( *short_str && *long_str && ToSmall(*short_str) == ToSmall(*long_str) ) { ++short_str; ++long_str; } if( *short_str == 0 ) return true; return false; } template bool IsSubStringNoCase(const StringType1 & short_str, const StringType2 & long_str) { return IsSubStringNoCase(short_str.c_str(), long_str.c_str()); } template bool Equal(const StringType1 * str1, const StringType2 * str2) { while( *str1 && *str2 && wchar_t(*str1) == wchar_t(*str2) ) { ++str1; ++str2; } if( *str1 == 0 && *str2 == 0 ) return true; return false; } template bool Equal(const StringType1 & str1, const StringType2 & str2) { return Equal(str1.c_str(), str2.c_str()); } template bool EqualNoCase(const StringType1 * str1, const StringType2 * str2) { while( *str1 && *str2 && ToSmall(*str1) == ToSmall(*str2) ) { ++str1; ++str2; } if( *str1 == 0 && *str2 == 0 ) return true; return false; } template bool EqualNoCase(const StringType1 & str1, const StringType2 & str2) { return EqualNoCase(str1.c_str(), str2.c_str()); } template void NoLastSlash(StringType & s) { if( s.empty() ) return; size_t i = s.size(); for( ; i>0 && s[i-1]=='/' ; --i); if( i < s.size() ) s.erase(i); } template void NoFirstHttp(StringType & s) { if( s.empty() ) return; const char http[] = "http://"; const char https[] = "https://"; if( IsSubStringNoCase(http, s.c_str()) ) { s.erase(0, sizeof(http)/sizeof(char)); } else if( IsSubStringNoCase(https, s.c_str()) ) { s.erase(0, sizeof(https)/sizeof(char)); } } bool ValidateEmail(const std::wstring & email); bool IsFile(const wchar_t * file); bool IsFile(const std::wstring & file); bool CreateDir(const wchar_t * dir, int priv); bool CreateDir(const std::wstring & dir, int priv); bool CreateDirs(const wchar_t * base_dir, const wchar_t * dirs, int priv); bool CreateDirs(const std::wstring & base_dir, const std::wstring & dirs, int priv); bool CopyFile(FILE * in, FILE * out); bool CopyFile(const wchar_t * src, const wchar_t * dst); bool CopyFile(const std::wstring & src, const std::wstring & dst); bool RemoveFile(const wchar_t * file); bool RemoveFile(const std::wstring & file); bool RenameFile(const wchar_t * from, const wchar_t * to); bool RenameFile(const std::wstring & from, const std::wstring & to); const wchar_t * GetFileExt(const wchar_t * name); Item::Auth SelectFileType(const wchar_t * file_name); time_t Time(const tm & par); time_t Time(const tm * par); tm Time(time_t par); #endif