joachim99@75: /* joachim99@75: * Copyright (c) 2003-2005, Sergey Zorin. All rights reserved. joachim99@75: * joachim99@75: * This software is distributable under the BSD license. See the terms joachim99@75: * of the BSD license in the LICENSE file provided with this software. joachim99@75: * joachim99@75: */ joachim99@75: #ifndef __server_h__ joachim99@75: #define __server_h__ joachim99@75: #include // std::list joachim99@75: //#include joachim99@75: #include joachim99@75: joachim99@75: #if 1 joachim99@75: #include // std::wstring joachim99@75: #ifdef UNICODE joachim99@75: typedef std::wstring tstring; joachim99@75: #else joachim99@75: typedef std::string tstring; joachim99@75: #endif joachim99@75: #define i18n(x) getTranslation( TEXT(x) ) joachim99@75: #else joachim99@75: #include "diffextstring.h" joachim99@75: typedef STRING tstring; joachim99@75: #define i18n(x) TEXT(x) joachim99@75: #endif joachim99@75: joachim99@75: #define MESSAGELOG( msg ) SERVER::logMessage( __FUNCTION__, __FILE__, __LINE__, msg ) joachim99@75: #define LOG() MESSAGELOG( TEXT("") ) joachim99@75: #define ERRORLOG( msg ) MESSAGELOG( TEXT("Error: ")+tstring(msg) ) joachim99@75: #define SYSERRORLOG( msg ) \ joachim99@75: { \ joachim99@75: LPTSTR message; \ joachim99@75: FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, 0, \ joachim99@75: GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR) &message, 0, 0); \ joachim99@75: ERRORLOG( (tstring(msg) + TEXT(": ")) + message ); \ joachim99@75: LocalFree(message); \ joachim99@75: } joachim99@75: joachim99@75: joachim99@75: class SERVER { joachim99@75: public: joachim99@75: static SERVER* instance(); joachim99@75: void initLogging(); joachim99@75: joachim99@75: public: joachim99@75: virtual ~SERVER(); joachim99@75: joachim99@75: tstring getRegistryKeyString( const tstring& subKey, const tstring& value ); joachim99@75: joachim99@75: HINSTANCE handle() const; joachim99@75: joachim99@75: HRESULT do_register(); joachim99@75: HRESULT do_unregister(); joachim99@75: joachim99@75: void lock(); joachim99@75: void release(); joachim99@75: joachim99@75: ULONG reference_count() const { joachim99@75: return _reference_count; joachim99@75: } joachim99@75: joachim99@75: std::list< tstring >& recent_files(); joachim99@75: joachim99@75: void save_history() const; joachim99@75: joachim99@75: static void logMessage( const char* function, const char* file, int line, const tstring& msg ); joachim99@75: joachim99@75: private: joachim99@75: SERVER(); joachim99@75: SERVER(const SERVER&) {} joachim99@75: joachim99@75: private: joachim99@75: LONG _reference_count; joachim99@75: std::list* m_pRecentFiles; joachim99@75: static SERVER* _instance; joachim99@75: tstring m_registryBaseName; joachim99@75: FILE* m_pLogFile; joachim99@75: }; joachim99@75: joachim99@75: #endif // __server_h__