-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathLanguageExports.c
More file actions
executable file
·117 lines (99 loc) · 3.49 KB
/
LanguageExports.c
File metadata and controls
executable file
·117 lines (99 loc) · 3.49 KB
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/** © 2014, Brandon T. All Rights Reserved.
This project is licensed under the General Public License v3.
This project uses LibCurl and LibSSL.
In addition to the project's licenses, the following exception applies:
In addition, as a special exception, the copyright holders give
permission to link the code of portions of this program with the
OpenSSL library under certain conditions as described in each
individual source file, and distribute linked combinations including
the two.
You must obey the GNU General Public License in all respects for all
of the code used other than OpenSSL. If you modify file(s) with this
exception, you may extend this exception to your version of the
file(s), but you are not obligated to do so. If you do not wish to do
so, delete this exception statement from your version. If you delete
this exception statement from all source files in the program, then
also delete it here.
Author : Brandon T.
Contact: Brandon.T-@Live.com
**/
#include "LanguageExports.h"
#ifdef __cplusplus
extern "C"
{
#endif
DLL_FUNC void Curl_InitSocketEx(CurlSock* curl_info,
const char* useragent,
size_t (*func_write_buffer)(void *contents, size_t size, size_t nmemb, void *userp),
size_t (*func_write_header)(void *contents, size_t size, size_t nmemb, void *userp),
size_t (*func_error_handler)(const void* str, long errorcode),
size_t (*func_str_len)(void *str)
)
{
Curl_InitSocket(curl_info, func_write_buffer, func_write_header, func_error_handler, func_str_len);
Curl_CreateSocket(curl_info, useragent);
}
DLL_FUNC void Curl_DoGetEx(CurlSock* curl_info, CurlMemoryStruct* res)
{
CurlMemoryStruct* data = Curl_DoGet(curl_info);
memcpy(res, data, sizeof(*data));
}
DLL_FUNC void Curl_DoPostEx(CurlSock* curl_info, CurlMemoryStruct* res)
{
CurlMemoryStruct* data = Curl_DoPost(curl_info);
memcpy(res, data, sizeof(*data));
}
DLL_FUNC void Curl_PerformEx(CurlSock* curl_info, CurlMemoryStruct* res)
{
CurlMemoryStruct* data = Curl_Perform(curl_info);
memcpy(res, data, sizeof(*data));
}
DLL_FUNC void Curl_GetHeadersEx(CurlSock* curl_info, CurlMemoryStruct* res)
{
CurlMemoryStruct* data = Curl_GetHeaders(curl_info);
memcpy(res, data, sizeof(*data));
}
DLL_FUNC void Curl_MSTPC(CurlSock* curl_info, CurlMemoryStruct* res)
{
CurlMemoryStruct* data = (CurlMemoryStruct *)curl_info->data;
memcpy(res, data, sizeof(*data));
}
#ifdef __cplusplus
}
#endif
int GetPluginABIVersion()
{
return 2;
}
int GetFunctionCount()
{
return PascalExportCount;
}
int GetTypeCount()
{
return PascalTypeCount;
}
int GetFunctionInfo(int Index, void** Address, char** Definition)
{
if (Index < PascalExportCount)
{
#if defined(_WIN32) || defined(_WIN64)
*Address = (void*)GetProcAddress(module, PascalExports[Index * 2]);
#else
*Address = (void*)dlsym(RTLD_DEFAULT, PascalExports[Index * 2]);
#endif
strcpy(*Definition, PascalExports[Index * 2 + 1]);
return Index;
}
return -1;
}
int GetTypeInfo(int Index, char** Type, char** Definition)
{
if (Index < PascalTypeCount)
{
strcpy(*Type, PascalTypes[Index * 2 + 0]);
strcpy(*Definition, PascalTypes[Index * 2 + 1]);
return Index;
}
return -1;
}