From b61ba851da0157ace3bdfc1ebbf87156b0b76413 Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Wed, 6 Jun 2012 08:58:27 +0000 Subject: protocols plugins moved to protocols git-svn-id: http://svn.miranda-ng.org/main/trunk@327 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- protocols/Twitter/utility.h | 107 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 protocols/Twitter/utility.h (limited to 'protocols/Twitter/utility.h') diff --git a/protocols/Twitter/utility.h b/protocols/Twitter/utility.h new file mode 100644 index 0000000000..b68a4fcb9d --- /dev/null +++ b/protocols/Twitter/utility.h @@ -0,0 +1,107 @@ +/* +Copyright © 2009 Jim Porter + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +#include "http.h" +#include "twitter.h" + +template +void CreateProtoService(const char *module,const char *service, + int (__cdecl T::*serviceProc)(WPARAM,LPARAM),T *self) +{ + char temp[MAX_PATH*2]; + + mir_snprintf(temp,sizeof(temp),"%s%s",module,service); + CreateServiceFunctionObj(temp,( MIRANDASERVICEOBJ )*(void**)&serviceProc, self ); +} + +template +void HookProtoEvent(const char* evt, int (__cdecl T::*eventProc)(WPARAM,LPARAM), T *self) +{ + ::HookEventObj(evt,(MIRANDAHOOKOBJ)*(void**)&eventProc,self); +} + +template +HANDLE ForkThreadEx(void (__cdecl T::*thread)(void*),T *self,void *data = 0) +{ + return reinterpret_cast( mir_forkthreadowner( + (pThreadFuncOwner)*(void**)&thread,self,data,0)); +} + +template +void ForkThread(void (__cdecl T::*thread)(void*),T *self,void *data = 0) +{ + CloseHandle(ForkThreadEx(thread,self,data)); +} + +std::string b64encode(const std::string &s); + +class mir_twitter : public twitter +{ +public: + void set_handle(HANDLE h) + { + handle_ = h; + } +protected: + http::response slurp(const std::string &,http::method,const std::string &); + HANDLE handle_; +}; + +inline void mbcs_to_tcs(UINT code_page,const char *mbstr,TCHAR *tstr,int tlen) +{ +#ifdef UNICODE + MultiByteToWideChar(code_page,0,mbstr,-1,tstr,tlen); +#else + strncpy(tstr,mbstr,tlen); +#endif +} + +inline void wcs_to_tcs(UINT code_page,const wchar_t *wstr,TCHAR *tstr,int tlen) +{ +#ifdef UNICODE + wcsncpy(tstr,wstr,tlen); +#else + WideCharToMultiByte(code_page,0,wstr,-1,tstr,tlen,0,0); +#endif +} + +class ScopedLock +{ +public: + ScopedLock(HANDLE h) : handle_(h) + { + WaitForSingleObject(handle_,INFINITE); + } + ~ScopedLock() + { + if (handle_) + ReleaseMutex(handle_); + } + + void Unlock() + { + ReleaseMutex(handle_); + handle_ = 0; + } +private: + HANDLE handle_; +}; + +int ext_to_format(const std::string &ext); +bool save_url(HANDLE hNetlib,const std::string &url,const std::string &filename); \ No newline at end of file -- cgit v1.2.3