37 #define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers 42 #ifdef DETECT_MEMORY_LEAK 43 extern void*
operator new(
size_t nSize,
const char* lpszFileName,
int nLine);
44 extern void operator delete(
void* p,
const char* lpszFileName,
int nLine);
45 #define DEBUG_NEW new(THIS_FILE, __LINE__) 72 #pragma warning (disable : 4018) 73 #pragma warning (disable : 4244) 74 #pragma warning (disable : 4103) 75 #pragma warning (disable : 4530) 76 #pragma warning (disable : 4251) 77 #pragma warning (disable : 4996) 82 using namespace stlport;
94 typedef unsigned char BYTE;
99 typedef __int64
QWORD;
114 # define likely(x) __builtin_expect(!!(x), 1) 115 # define unlikely(x) __builtin_expect(!!(x), 0) 118 # define unlikely(x) x 122 #include "../CommonLib/ddcLocale.h" 123 #include "../CommonLib/ddcVersion.h" 124 #include "../CommonLib/ddcString.h" 130 # define DWORD_MAX (0xffffffff) 135 #define QWORD_MAX 0xffffffffffffffff 137 #define QWORD_MAX 0xffffffffffffffffULL 143 # define SIZE_MAX ((size_t)-1) 151 {
return QWORD_MAX; }
172 template <
class T1,
class T2,
class T3>
193 CExpc(
int ErrorCode)
throw();
194 CExpc(
int ErrorCode,
const string& Cause)
throw();
195 CExpc(
const string& Cause)
throw();
197 CExpc(
int ErrorCode,
const char* format, ... ) throw();
198 CExpc(const
char* format, ... ) throw();
207 void Set(
const char* format, ... )
throw();
210 void vSet(
const char *format, va_list& arglst)
throw();
216 virtual const char* what()
const throw();
219 virtual int code()
const throw();
250 {
return FileSize(filename.c_str()); };
252 extern time_t
FileMTime (
const char *filename);
257 extern void ErrorMessage (
const string& Label,
const string& Message);
259 extern string MakeFName (
const string& InpitFileName,
const string& Ext);
260 extern bool MakePath (
const char* RossPath,
const char* FileName,
char* FullPath);
262 extern bool IsBinFile (
const char* FileName);
266 extern bool IsHtmlFile (
const string& FileName);
268 extern bool IsJsonFile (
const string& FileName);
278 extern string FileBasename (
const string& FileName,
const string& FileExtension);
287 extern string RelativePathName(
const string &RefDir,
const string &PathName);
290 extern string RelativeFileName(
const string &RefFile,
const string &PathName);
293 extern void AddFile(
const char* MainFile,
const char* ToAdd);
297 extern void FileAppend(
const char* srcFile,
const char* dstFile);
298 extern void FileAppend(
const string& srcFile,
const string& dstFile);
303 extern bool RmlMoveFile(
const char *oldpath,
const char *newpath);
304 extern bool RmlCopyFile(
const char *oldpath,
const char *newpath);
306 extern bool MakeDir(
const string& DirName);
307 extern bool MakeDirP(
const string& DirName);
335 : VmSize(0), VmLck(0), VmPin(0), VmHWM(0), VmRSS(0), VmData(0), VmStk(0), VmExe(0), VmLib(0), VmPTE(0), VmPMD(0), VmSwap(0), RssFile(0), RssAnon(0)
346 void fetch(pid_t pid);
350 { fetch(getpid()); };
364 extern struct tm RmlGetCurrentTime ();
370 extern char*
rtrim (
char* s);
374 extern bool force_to_rus (
char* dest,
const char* sour,
size_t len);
375 extern char*
IntToStr (
int Value,
char* Buffer);
376 extern string&
IntToStr (
int Value,
string& oBuffer);
377 extern string&
TrimLeft (
string& str);
379 extern string&
Trim (
string& str);
380 extern bool LoadFileToString(
string FileName,
string& Result,
bool clobber=
true);
385 extern bool StartsWith(
const string& body,
const string& prefix);
393 vector<string>
stringSplit(
const char *s,
const char *delims);
398 void stringSplitE(
const string& s,
const string& delims, vector<string>& tokens);
401 vector<string>
stringSplitE(
const string& s,
const string& delims);
404 extern uint32_t
date2int(
signed int y,
unsigned int m=1,
unsigned int d=1);
407 extern void int2date(uint32_t i,
signed int *y,
unsigned int *m=NULL,
unsigned int *d=NULL);
410 extern string int2hex(int32_t i);
413 extern int32_t
hex2int(
const string& s);
442 return (v==0 ? 0 : __builtin_clz(v)^31);
445 static const int MultiplyDeBruijnBitPosition[32] =
447 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30,
448 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31
457 return MultiplyDeBruijnBitPosition[(uint32_t)(v * 0x07C4ACDDU) >> 27];
465 template <
class VecT>
468 return v.empty() ? 1 : max((
size_t)1, (
size_t)v[v.size()-1]/v.size());
483 template <
class ContainerT>
574 extern bool IsRussian (
const char *word);
584 template <
class T,
class Pred,
class Conv>
587 for(
size_t i = 0 ; i < Len; i++ )
588 if ( P( (
BYTE)word[i] ) )
589 word[i] = C ( (
BYTE)word[i] );
598 if (Len == 0)
return word;
603 for(
size_t i = 0 ; i < Len; i++ )
616 #define _QM(X) (((QWORD)1)<<X) void ClearContainer(ContainerT &C)
Definition: utilit.h:484
bool is_lower_vowel(BYTE x, MorphLanguageEnum Langua)
Definition: utilit.cpp:1450
T3 third
Definition: utilit.h:175
vector< DWORD > DwordVector
Definition: utilit.h:148
char log_label[64]
Definition: ddc_daemon.cpp:52
const BYTE uuml
Definition: utilit.h:518
int isbracket(BYTE x)
Definition: utilit.cpp:1783
bool is_russian_lower(BYTE x)
Definition: utilit.cpp:1387
void int2date(uint32_t i, signed int *y, unsigned int *m=NULL, unsigned int *d=NULL)
moo: int-to-date decoding (v2.2.4: use signed years)
Definition: utilit.cpp:2126
char * IntToStr(int Value, char *Buffer)
Definition: utilit.cpp:651
T & GerEngRusMakeUpperTemplate(T &word, MorphLanguageEnum Langua, size_t Len)
Definition: utilit.h:596
size_t VmRSS
Definition: utilit.h:322
void ErrorMessage(const string &Label, const string &Message)
Definition: utilit.cpp:400
string RelativeFileName(const string &RefFile, const string &PathName)
If PathName is absolute, it is returned; otherwise returns (FileDirectory(RefFile) + "/" + PathName) ...
Definition: utilit.cpp:784
string FileBasename(const string &FileName)
Returns file part of FileName, like basename(3)
Definition: utilit.cpp:686
BYTE gtolower(BYTE ch)
Definition: utilit.cpp:1364
bool is_english_alpha(BYTE x)
Definition: utilit.cpp:1271
string & Trim(string &str)
Definition: utilit.cpp:1762
DDCProcessMemoryStatus(void)
Definition: utilit.h:334
bool is_english_upper(BYTE x)
Definition: utilit.cpp:1248
size_t GetNumberOfOpenFiles(pid_t pid=0)
Definition: utilit.cpp:1012
const BYTE cIonChar
Definition: utilit.h:156
const char * ddc_set_log_label(const char *log_label)
set thread-local log prefix; returns old label (if any)
Definition: utilit.cpp:2196
BYTE force_rus_char(BYTE ch)
Definition: utilit.cpp:619
void AddFile(const char *MainFile, const char *ToAdd)
AddFile(): old ugly file-append hack using system("cat...")
Definition: utilit.cpp:790
const BYTE LowerE_cp1251
Definition: utilit.h:530
BYTE ReverseChar(BYTE ch, MorphLanguageEnum langua)
Definition: utilit.cpp:1540
string CreateTempFileName()
Definition: utilit.cpp:481
const BYTE agrave
Definition: utilit.h:523
const BYTE LowerJO_cp1251
Definition: utilit.h:528
size_t VmExe
Definition: utilit.h:325
const BYTE Auml
Definition: utilit.h:515
const BYTE szlig
Definition: utilit.h:521
size_t dual_bracket(BYTE x)
Definition: utilit.cpp:1791
uint64_t QWORD
Definition: utilit.h:107
int GetPredictionPartOfSpeech(const string &PartOfSpeech, MorphLanguageEnum langua)
Definition: utilit.cpp:1126
QWORD file_off_t
Definition: utilit.h:179
BYTE rtoupper(BYTE ch)
Definition: utilit.cpp:1423
const BYTE UnknownPartOfSpeech
Definition: utilit.h:424
bool is_german_upper(BYTE x)
Definition: utilit.cpp:1320
string timestampUTC(time_t timeval)
Definition: utilit.cpp:2075
uint32_t log2u32(uint32_t v)
Definition: utilit.h:438
bool is_english_lower(BYTE x)
Definition: utilit.cpp:1260
size_t VmPTE
Definition: utilit.h:327
generic local exception class moo: derived from stdexcept runtime_error
Definition: utilit.h:183
CFatalExpc(const CFatalExpc &from)
copy constructor
Definition: utilit.h:231
void WinToKOI8(string &s)
Definition: utilit.cpp:2360
const BYTE Apostrophe
Definition: utilit.h:532
bool CheckLanguage(const char *word, MorphLanguageEnum langua)
Definition: utilit.cpp:1623
QWORD GetMaxQWORD()
Definition: utilit.h:150
string RelativePathName(const string &RefDir, const string &PathName)
If PathName is absolute, it is returned; otherwise returns (RefDir + "/" + PathName) ...
Definition: utilit.cpp:773
BYTE gtoupper(BYTE ch)
Definition: utilit.cpp:1351
void fetch(void)
Definition: utilit.h:349
string & TrimRight(string &str)
Definition: utilit.cpp:1754
bool is_upper_alpha(BYTE x, MorphLanguageEnum langua)
Definition: utilit.cpp:1518
const unsigned int _MAX_PATH
Definition: utilit.h:109
size_t VmStk
Definition: utilit.h:324
bool IsSuperEqualChar(BYTE ch1, BYTE ch2, MorphLanguageEnum langua)
Definition: utilit.cpp:549
bool is_german_alpha(BYTE x)
Definition: utilit.cpp:1346
void stringSplitE(const string &s, const string &delims, vector< string > &tokens)
Definition: utilit.cpp:2093
const BYTE cCompanyChar
Definition: utilit.h:155
string MakeFName(const string &InpitFileName, const string &Ext)
Definition: utilit.cpp:413
string GetStringByLanguage(MorphLanguageEnum Langua)
Definition: utilit.cpp:1180
bool GetLanguageByString(string s, MorphLanguageEnum &Result)
Definition: utilit.cpp:1152
string int2hex(int32_t i)
moo: int-to-hexidecimal string encoding; encoding preserves sort order (for subcorpus->server communi...
Definition: utilit.cpp:2135
RegisterEnum
Definition: utilit.h:618
size_t VectorStride(const VecT &v)
Definition: utilit.h:466
size_t RssAnon
Definition: utilit.h:331
bool RmlCopyFile(const char *oldpath, const char *newpath)
Definition: utilit.cpp:2476
bool IsJsonFile(const string &FileName)
Definition: utilit.cpp:748
time_t FileMTime(const char *filename)
Definition: utilit.cpp:352
char * RmlMakeUpper(char *word, MorphLanguageEnum langua)
Definition: utilit.cpp:1645
bool force_to_rus(char *dest, const char *sour, size_t len)
Definition: utilit.cpp:636
uint16_t WORD
Definition: utilit.h:106
bool FileExists(const char *FName)
Definition: utilit.cpp:335
void clear(void)
Definition: utilit.h:342
const BYTE ouml
Definition: utilit.h:520
string m_strCause
symbolic error message (should also be returned by what() method)
Definition: utilit.h:190
bool StartsWith(const string &body, const string &prefix)
Definition: utilit.cpp:1769
const BYTE Ouml
Definition: utilit.h:519
bool IsDirectory(const char *DirName)
Definition: utilit.cpp:364
void TrimHeap()
Definition: utilit.h:474
BYTE etolower(BYTE ch)
Definition: utilit.cpp:1296
int CompareWithoutRegister(const char *s1, const char *s2, size_t l, MorphLanguageEnum langua)
Definition: utilit.cpp:591
bool IsRussian(const char *word)
Definition: utilit.cpp:1618
const BYTE Nu
Definition: utilit.h:522
size_t VmLck
Definition: utilit.h:319
void ClearVector(vector< T > &V)
Definition: utilit.h:493
bool isnspace(BYTE x)
Definition: utilit.cpp:1533
size_t VmPin
Definition: utilit.h:320
const BYTE Uuml
Definition: utilit.h:517
string & EngRusMakeUpper(string &word)
Definition: utilit.cpp:1679
const BYTE cParagraph
Definition: utilit.h:154
const BYTE UpperE_cp1251
Definition: utilit.h:531
bool is_upper_consonant(BYTE x, MorphLanguageEnum Langua)
Definition: utilit.cpp:1476
size_t RssFile
Definition: utilit.h:330
bool IsHtmlFile(const string &FileName)
Definition: utilit.cpp:728
bool IsAbsolutePath(const string &PathName)
Returns true iff PathName is an absolute path (simple string heuristics)
Definition: utilit.cpp:758
string FileExtension(const string &FileName)
Definition: utilit.cpp:665
void ClearString(string &S)
Definition: utilit.h:497
string ConvertASCIIToHtmlSymbols(const string &txt)
Definition: utilit.cpp:2381
size_t VmPMD
Definition: utilit.h:328
bool IsBinFile(const char *FileName)
Definition: utilit.cpp:474
int m_ErrorCode
internal error code (see ../CommonLib/DDCInternalError.h)
Definition: utilit.h:187
size_t VmLib
Definition: utilit.h:326
BYTE rtolower(BYTE ch)
Definition: utilit.cpp:1434
string GetRegistryString(string RegistryPath)
Definition: utilit.cpp:1037
vector< string > StringVector
Definition: utilit.h:146
string & EngMakeUpper(string &word)
Definition: utilit.cpp:1578
bool is_lower_alpha(BYTE x, MorphLanguageEnum langua)
Definition: utilit.cpp:1503
CFatalExpc(int ErrorCode, const string &Cause)
Definition: utilit.h:227
bool is_upper_vowel(BYTE x, MorphLanguageEnum Langua)
Definition: utilit.cpp:1463
size_t VmSize
Definition: utilit.h:318
vector< string > stringSplit(const char *s, const char *delims)
moo: convenience wrapper for string-to-vector tokenization using StringTokenizer
Definition: utilit.cpp:2085
CFatalExpc(int ErrorCode)
Definition: utilit.h:226
void FileAppend(FILE *src, FILE *dst)
FileAppend(): newer better replacement for AddFile()
Definition: utilit.cpp:802
size_t VmData
Definition: utilit.h:323
DDCProcessMemoryStatus(pid_t pid)
Definition: utilit.h:339
string & RmlMakeLower(string &word, MorphLanguageEnum langua)
Definition: utilit.cpp:1665
char * rtrim(char *s)
Definition: utilit.cpp:532
set< string > StringSet
Definition: utilit.h:147
string timestampLocal(time_t timeval)
moo: timestamp stuff
Definition: utilit.cpp:2067
bool MakeDirP(const string &DirName)
Definition: utilit.cpp:2426
bool FSeek(FILE *fp, file_off_t pos, int origin)
Definition: utilit.cpp:376
string & TrimLeft(string &str)
Definition: utilit.cpp:1746
unsigned char BYTE
Definition: utilit.h:94
const BYTE UpperJO_cp1251
Definition: utilit.h:529
const BYTE cNumberChar
Definition: utilit.h:157
string CurrentDirectory(void)
Wrapper for getcwd(); returns current working directory of current process.
Definition: utilit.cpp:707
CFatalExpc(const string &Cause)
Definition: utilit.h:228
uint32_t date2int(signed int y, unsigned int m=1, unsigned int d=1)
moo: date-to-int encoding (v2.2.4: use signed years)
Definition: utilit.cpp:2118
local exception class, fatal (can be used to force immediate bail-out)
Definition: utilit.h:223
string & EngMakeLower(string &word)
Definition: utilit.cpp:1583
virtual ~CFatalExpc()
destructor
Definition: utilit.h:234
void KOI8ToWin(string &s)
Definition: utilit.cpp:2367
const BYTE cPiChar
Definition: utilit.h:158
bool is_russian_upper(BYTE x)
Definition: utilit.cpp:1382
string GetIniFilePath()
Definition: utilit.cpp:964
const BYTE eacute
Definition: utilit.h:525
string GetPathByFile(string FileName)
Definition: utilit.cpp:454
int32_t hex2int(const string &s)
moo: int-to-hexidecimal string deccoding; ; encoding preserves sort order
Definition: utilit.cpp:2150
bool MakeDir(const string &DirName)
Definition: utilit.cpp:2417
void FileAppendPartial(FILE *src, FILE *dst, size_t nBytes)
FileAppendPartial(): append a substring of src to dst.
Definition: utilit.cpp:841
bool CanGetRegistryString(string RegistryPath)
Definition: utilit.cpp:1044
bool is_russian_alpha(BYTE x)
Definition: utilit.cpp:1418
bool IsEmptyLine(const char *t)
Definition: utilit.cpp:517
MorphLanguageEnum
Definition: utilit.h:162
void ddc_thread_init(const char *log_label=NULL)
register a thread-local log prefix (unix only)
Definition: utilit.cpp:2179
bool MakePath(const char *RossPath, const char *FileName, char *FullPath)
Definition: utilit.cpp:430
BYTE etoupper(BYTE ch)
Definition: utilit.cpp:1276
string FileDirectory(const string &FileName)
Returns directory part of FileName, or "." if FileName is a bare filename, like dirname(3) ...
Definition: utilit.cpp:673
string & EngRusMakeLower(string &word)
Definition: utilit.cpp:1631
bool SaveStringToFile(const string &Str, const string &FileName)
Definition: utilit.cpp:2219
const char * ddc_log_label(void)
get thread-local log prefix, or empty string if none registered
Definition: utilit.cpp:2187
T & RegisterConverter(T &word, size_t Len, Pred P, Conv C)
Definition: utilit.h:585
bool IsRmlRegistered(string &Error)
Definition: utilit.cpp:1057
size_t VmPeak
Definition: utilit.h:317
uint32_t DWORD
Definition: utilit.h:105
bool is_alpha(BYTE x)
Definition: utilit.cpp:1482
file_off_t FileSize(const char *filename)
Definition: utilit.cpp:340
bool is_spc_fill(BYTE x)
Definition: utilit.cpp:1199
const BYTE egrave
Definition: utilit.h:524
bool RemoveWithPrint(const string &FileName)
Definition: utilit.cpp:2442
const BYTE cHyphenChar
Definition: utilit.h:153
const BYTE cEllipseChar
Definition: utilit.h:159
void ConvertJO2Je(string &src)
Definition: utilit.cpp:1731
unsigned int UINT
Definition: utilit.h:108
string GetRmlVariable()
Definition: utilit.cpp:881
size_t VmSwap
Definition: utilit.h:329
bool is_pseudo_graph(BYTE x)
Definition: utilit.cpp:2228
size_t VmHWM
Definition: utilit.h:321
bool LoadFileToString(string FileName, string &Result, bool clobber=true)
Definition: utilit.cpp:2206
const BYTE auml
Definition: utilit.h:516
file_off_t FTell(FILE *fp)
Definition: utilit.cpp:388
bool IsTableFile(const string &FileName)
Definition: utilit.cpp:738
bool is_german_lower(BYTE x)
Definition: utilit.cpp:1325
bool RmlMoveFile(const char *oldpath, const char *newpath)
Definition: utilit.cpp:2505