summaryrefslogtreecommitdiff
path: root/plugins/FTPFileYM/libcurl.h
blob: 4a8ba6b253487ba3d7939f16c1ad1132d5e1a50f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/*
FTP File YM plugin
Copyright (C) 2007-2010 Jan Holub

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 version 2
of the License.

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 <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "common.h"

class LibCurl
{
private:
	typedef CURL					*PCURL;
	typedef struct curl_slist		*PCURL_SLIST;
	typedef curl_version_info_data	*PVERSION_INFO;	

	typedef CURLcode		(__cdecl * _curl_global_init) (long);
	typedef void			(__cdecl * _curl_global_cleanup) (void);

	typedef PCURL			(__cdecl * _curl_easy_init) (void);
	typedef void			(__cdecl * _curl_easy_cleanup) (PCURL);	
	typedef CURLcode 		(__cdecl * _curl_easy_perform) (PCURL);
	typedef CURLcode 		(__cdecl * _curl_easy_pause) (PCURL,int);
	typedef CURLcode 		(__cdecl * _curl_easy_setopt) (PCURL,CURLoption,...);

	typedef PCURL_SLIST		(__cdecl * _curl_slist_append) (PCURL_SLIST,LPCSTR);
	typedef void			(__cdecl * _curl_slist_free_all) (PCURL_SLIST);
	
	typedef PVERSION_INFO	(__cdecl * _curl_version_info) (CURLversion);

	static LibCurl *instance;
	LibCurl() { };
	~LibCurl() { instance = NULL; };

public:
	_curl_global_init		global_init;
	_curl_global_cleanup	global_cleanup;
	_curl_easy_init			easy_init;
	_curl_easy_cleanup		easy_cleanup;
	_curl_easy_perform		easy_perform;
	_curl_easy_pause		easy_pause;
	_curl_easy_setopt		easy_setopt;
	_curl_slist_append		slist_append;
	_curl_slist_free_all	slist_free_all;
	_curl_version_info		version_info;

	static LibCurl &getInstance() 
	{
		if (!instance)
			instance = new LibCurl();
		return *instance;
	};

	BOOL init();
	void deinit();
};