include: Make sure interlocked_cmpxchg128 is defined on ARM64.
[wine] / include / xcmc.h
1 /*
2  * Copyright (C) 2004 Chris Morgan
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18
19 #ifndef _XCMC_H
20 #define _XCMC_H
21
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25
26 typedef char                CMC_sint8;
27 typedef short               CMC_sint16;
28 typedef LONG                CMC_sint32;
29 typedef unsigned short int  CMC_uint16;
30 typedef ULONG               CMC_uint32;
31 typedef void*               CMC_buffer;
32 typedef char*               CMC_string;
33
34 typedef CMC_uint16          CMC_boolean;
35 typedef CMC_sint32          CMC_enum;
36 typedef CMC_uint32          CMC_return_code;
37 typedef CMC_uint32          CMC_flags;
38 typedef CMC_string          CMC_object_identifier;
39 typedef CMC_uint32          CMC_session_id;
40 typedef CMC_uint32          CMC_ui_id;
41
42 #define CMC_FALSE   ((CMC_boolean)0)
43 #define CMC_TRUE    ((CMC_boolean)1)
44
45 #define CMC_SUCCESS                         ((CMC_return_code) 0)
46
47 #define CMC_E_AMBIGUOUS_RECIPIENT           ((CMC_return_code) 1)
48 #define CMC_E_ATTACHMENT_NOT_FOUND          ((CMC_return_code) 2)
49 #define CMC_E_ATTACHMENT_OPEN_FAILURE       ((CMC_return_code) 3)
50 #define CMC_E_ATTACHMENT_READ_FAILURE       ((CMC_return_code) 4)
51 #define CMC_E_ATTACHMENT_WRITE_FAILURE      ((CMC_return_code) 5)
52 #define CMC_E_COUNTED_STRING_UNSUPPORTED    ((CMC_return_code) 6)
53 #define CMC_E_DISK_FULL                     ((CMC_return_code) 7)
54 #define CMC_E_FAILURE                       ((CMC_return_code) 8)
55 #define CMC_E_INSUFFICIENT_MEMORY           ((CMC_return_code) 9)
56 #define CMC_E_INVALID_CONFIGURATION         ((CMC_return_code) 10)
57 #define CMC_E_INVALID_ENUM                  ((CMC_return_code) 11)
58 #define CMC_E_INVALID_FLAG                  ((CMC_return_code) 12)
59 #define CMC_E_INVALID_MEMORY                ((CMC_return_code) 13)
60 #define CMC_E_INVALID_MESSAGE_PARAMETER     ((CMC_return_code) 14)
61 #define CMC_E_INVALID_MESSAGE_REFERENCE     ((CMC_return_code) 15)
62 #define CMC_E_INVALID_PARAMETER             ((CMC_return_code) 16)
63 #define CMC_E_INVALID_SESSION_ID            ((CMC_return_code) 17)
64 #define CMC_E_INVALID_UI_ID                 ((CMC_return_code) 18)
65 #define CMC_E_LOGON_FAILURE                 ((CMC_return_code) 19)
66 #define CMC_E_MESSAGE_IN_USE                ((CMC_return_code) 20)
67 #define CMC_E_NOT_SUPPORTED                 ((CMC_return_code) 21)
68 #define CMC_E_PASSWORD_REQUIRED             ((CMC_return_code) 22)
69 #define CMC_E_RECIPIENT_NOT_FOUND           ((CMC_return_code) 23)
70 #define CMC_E_SERVICE_UNAVAILABLE           ((CMC_return_code) 24)
71 #define CMC_E_TEXT_TOO_LARGE                ((CMC_return_code) 25)
72 #define CMC_E_TOO_MANY_FILES                ((CMC_return_code) 26)
73 #define CMC_E_TOO_MANY_RECIPIENTS           ((CMC_return_code) 27)
74 #define CMC_E_UNABLE_TO_NOT_MARK_AS_READ    ((CMC_return_code) 28)
75 #define CMC_E_UNRECOGNIZED_MESSAGE_TYPE     ((CMC_return_code) 29)
76 #define CMC_E_UNSUPPORTED_ACTION            ((CMC_return_code) 30)
77 #define CMC_E_UNSUPPORTED_CHARACTER_SET     ((CMC_return_code) 31)
78 #define CMC_E_UNSUPPORTED_DATA_EXT          ((CMC_return_code) 32)
79 #define CMC_E_UNSUPPORTED_FLAG              ((CMC_return_code) 33)
80 #define CMC_E_UNSUPPORTED_FUNCTION_EXT      ((CMC_return_code) 34)
81 #define CMC_E_UNSUPPORTED_VERSION           ((CMC_return_code) 35)
82 #define CMC_E_USER_CANCEL                   ((CMC_return_code) 36)
83 #define CMC_E_USER_NOT_LOGGED_ON            ((CMC_return_code) 37)
84
85 #define CMC_ERROR_DISPLAYED                 ((CMC_return_code) 0x00008000)
86 #define CMC_ERROR_RSV_MASK                  ((CMC_return_code) 0x0000FFFF)
87 #define CMC_ERROR_IMPL_MASK                 ((CMC_return_code) 0xFFFF0000)
88
89 typedef struct {
90     CMC_uint32          length;
91     char                string[1];
92 } CMC_counted_string;
93
94 typedef CMC_counted_string CMC_message_reference;
95
96 typedef struct {
97     CMC_sint8  second;
98     CMC_sint8  minute;
99     CMC_sint8  hour;
100     CMC_sint8  day;
101     CMC_sint8  month;
102     CMC_sint8  year;
103     CMC_sint8  isdst;
104     CMC_sint8  unused1;
105     CMC_sint16 tmzone;
106     CMC_sint16 unused2;
107 } CMC_time;
108
109 #define CMC_NO_TIMEZONE ((CMC_sint16) 0x8000)
110
111
112 typedef struct {
113     CMC_uint32 item_code;
114     CMC_uint32 item_data;
115     CMC_buffer item_reference;
116     CMC_flags  extension_flags;
117 } CMC_extension;
118
119 #define CMC_EXT_REQUIRED                    ((CMC_flags) 0x00010000)
120 #define CMC_EXT_OUTPUT                      ((CMC_flags) 0x00020000)
121 #define CMC_EXT_LAST_ELEMENT                ((CMC_flags) 0x80000000)
122 #define CMC_EXT_RSV_FLAG_MASK               ((CMC_flags) 0xFFFF0000)
123 #define CMC_EXT_ITEM_FLAG_MASK              ((CMC_flags) 0x0000FFFF)
124
125
126 typedef struct CMC_attachment_s {
127     CMC_string              attach_title;
128     CMC_object_identifier   attach_type;
129     CMC_string              attach_filename;
130     CMC_flags               attach_flags;
131     CMC_extension          *attach_extensions;
132 } CMC_attachment;
133
134 #define CMC_ATT_APP_OWNS_FILE  ((CMC_flags) 1)
135 #define CMC_ATT_LAST_ELEMENT   ((CMC_flags) 0x80000000)
136
137 #define CMC_ATT_OID_BINARY      "? ? ? ? ? ?"
138 #define CMC_ATT_OID_TEXT        "? ? ? ? ? ?"
139
140
141 typedef struct {
142     CMC_string              name;
143     CMC_enum                name_type;
144     CMC_string              address;
145     CMC_enum                role;
146     CMC_flags               recip_flags;
147     CMC_extension          *recip_extensions;
148 } CMC_recipient;
149
150 #define CMC_TYPE_UNKNOWN                    ((CMC_enum) 0)
151 #define CMC_TYPE_INDIVIDUAL                 ((CMC_enum) 1)
152 #define CMC_TYPE_GROUP                      ((CMC_enum) 2)
153
154 #define CMC_ROLE_TO                         ((CMC_enum) 0)
155 #define CMC_ROLE_CC                         ((CMC_enum) 1)
156 #define CMC_ROLE_BCC                        ((CMC_enum) 2)
157 #define CMC_ROLE_ORIGINATOR                 ((CMC_enum) 3)
158 #define CMC_ROLE_AUTHORIZING_USER           ((CMC_enum) 4)
159
160 #define CMC_RECIP_IGNORE                    ((CMC_flags) 1)
161 #define CMC_RECIP_LIST_TRUNCATED            ((CMC_flags) 2)
162 #define CMC_RECIP_LAST_ELEMENT              ((CMC_flags) 0x80000000)
163
164
165 typedef struct {
166     CMC_message_reference  *message_reference;
167     CMC_string              message_type;
168     CMC_string              subject;
169     CMC_time                time_sent;
170     CMC_string              text_note;
171     CMC_recipient          *recipients;
172     CMC_attachment         *attachments;
173     CMC_flags               message_flags;
174     CMC_extension          *message_extensions;
175 } CMC_message;
176
177 #define CMC_MSG_READ                        ((CMC_flags) 1)
178 #define CMC_MSG_TEXT_NOTE_AS_FILE           ((CMC_flags) 2)
179 #define CMC_MSG_UNSENT                      ((CMC_flags) 4)
180 #define CMC_MSG_LAST_ELEMENT                ((CMC_flags) 0x80000000)
181
182
183 typedef struct {
184     CMC_message_reference  *message_reference;
185     CMC_string              message_type;
186     CMC_string              subject;
187     CMC_time                time_sent;
188     CMC_uint32              byte_length;
189     CMC_recipient          *originator;
190     CMC_flags               summary_flags;
191     CMC_extension          *message_summary_extensions;
192 } CMC_message_summary;
193
194 #define CMC_SUM_READ                        ((CMC_flags) 1)
195 #define CMC_SUM_UNSENT                      ((CMC_flags) 2)
196 #define CMC_SUM_LAST_ELEMENT                ((CMC_flags) 0x80000000)
197
198 #define CMC_ERROR_UI_ALLOWED                ((CMC_flags) 0x01000000)
199 #define CMC_LOGON_UI_ALLOWED                ((CMC_flags) 0x02000000)
200 #define CMC_COUNTED_STRING_TYPE             ((CMC_flags) 0x04000000)
201
202 CMC_return_code WINAPI cmc_send(
203     CMC_session_id          session,
204     CMC_message            *message,
205     CMC_flags               send_flags,
206     CMC_ui_id               ui_id,
207     CMC_extension          *send_extensions
208 );
209
210 #define CMC_SEND_UI_REQUESTED               ((CMC_flags) 1)
211
212
213 CMC_return_code WINAPI cmc_send_documents(
214     CMC_string              recipient_addresses,
215     CMC_string              subject,
216     CMC_string              text_note,
217     CMC_flags               send_doc_flags,
218     CMC_string              file_paths,
219     CMC_string              file_names,
220     CMC_string              delimiter,
221     CMC_ui_id               ui_id
222 );
223
224 #define CMC_FIRST_ATTACH_AS_TEXT_NOTE       ((CMC_flags) 2)
225
226
227 CMC_return_code WINAPI cmc_act_on(
228     CMC_session_id          session,
229     CMC_message_reference  *message_reference,
230     CMC_enum                operation,
231     CMC_flags               act_on_flags,
232     CMC_ui_id               ui_id,
233     CMC_extension          *act_on_extensions
234 );
235
236 #define CMC_ACT_ON_EXTENDED                 ((CMC_enum) 0)
237 #define CMC_ACT_ON_DELETE                   ((CMC_enum) 1)
238
239
240 CMC_return_code WINAPI cmc_list(
241     CMC_session_id          session,
242     CMC_string              message_type,
243     CMC_flags               list_flags,
244     CMC_message_reference  *seed,
245     CMC_uint32             *count,
246     CMC_ui_id               ui_id,
247     CMC_message_summary   **result,
248     CMC_extension          *list_extensions
249 );
250
251 #define CMC_LIST_UNREAD_ONLY                ((CMC_flags) 1)
252 #define CMC_LIST_MSG_REFS_ONLY              ((CMC_flags) 2)
253 #define CMC_LIST_COUNT_ONLY                 ((CMC_flags) 4)
254
255 #define CMC_LENGTH_UNKNOWN          0xFFFFFFFF
256
257
258 CMC_return_code WINAPI cmc_read(
259     CMC_session_id          session,
260     CMC_message_reference  *message_reference,
261     CMC_flags               read_flags,
262     CMC_message           **message,
263     CMC_ui_id               ui_id,
264     CMC_extension          *read_extensions
265 );
266
267 #define CMC_DO_NOT_MARK_AS_READ             ((CMC_flags) 1)
268 #define CMC_MSG_AND_ATT_HDRS_ONLY           ((CMC_flags) 2)
269 #define CMC_READ_FIRST_UNREAD_MESSAGE       ((CMC_flags) 4)
270
271
272 CMC_return_code WINAPI cmc_look_up(
273     CMC_session_id          session,
274     CMC_recipient          *recipient_in,
275     CMC_flags               look_up_flags,
276     CMC_ui_id               ui_id,
277     CMC_uint32             *count,
278     CMC_recipient         **recipient_out,
279     CMC_extension          *look_up_extensions
280 );
281
282 #define CMC_LOOKUP_RESOLVE_PREFIX_SEARCH    ((CMC_flags) 1)
283 #define CMC_LOOKUP_RESOLVE_IDENTITY         ((CMC_flags) 2)
284 #define CMC_LOOKUP_RESOLVE_UI               ((CMC_flags) 4)
285 #define CMC_LOOKUP_DETAILS_UI               ((CMC_flags) 8)
286 #define CMC_LOOKUP_ADDRESSING_UI            ((CMC_flags) 16)
287
288
289 CMC_return_code WINAPI cmc_free( CMC_buffer memory );
290
291 CMC_return_code WINAPI cmc_logoff(
292     CMC_session_id          session,
293     CMC_ui_id               ui_id,
294     CMC_flags               logoff_flags,
295     CMC_extension          *logoff_extensions
296 );
297
298 CMC_return_code WINAPI cmc_logon(
299     CMC_string              service,
300     CMC_string              user,
301     CMC_string              password,
302     CMC_object_identifier   character_set,
303     CMC_ui_id               ui_id,
304     CMC_uint16              caller_cmc_version,
305     CMC_flags               logon_flags,
306     CMC_session_id         *session,
307     CMC_extension          *logon_extensions
308 );
309
310 #define CMC_VERSION         ((CMC_uint16) 100)
311
312 CMC_return_code WINAPI cmc_query_configuration(
313     CMC_session_id          session,
314     CMC_enum                item,
315     CMC_buffer              reference,
316     CMC_extension          *config_extensions
317 );
318
319 #define CMC_CONFIG_CHARACTER_SET            ((CMC_enum) 1)
320 #define CMC_CONFIG_LINE_TERM                ((CMC_enum) 2)
321 #define CMC_CONFIG_DEFAULT_SERVICE          ((CMC_enum) 3)
322 #define CMC_CONFIG_DEFAULT_USER             ((CMC_enum) 4)
323 #define CMC_CONFIG_REQ_PASSWORD             ((CMC_enum) 5)
324 #define CMC_CONFIG_REQ_SERVICE              ((CMC_enum) 6)
325 #define CMC_CONFIG_REQ_USER                 ((CMC_enum) 7)
326 #define CMC_CONFIG_UI_AVAIL                 ((CMC_enum) 8)
327 #define CMC_CONFIG_SUP_NOMKMSGREAD          ((CMC_enum) 9)
328 #define CMC_CONFIG_SUP_COUNTED_STR          ((CMC_enum) 10)
329 #define CMC_CONFIG_VER_IMPLEM               ((CMC_enum) 11)
330 #define CMC_CONFIG_VER_SPEC                 ((CMC_enum) 12)
331
332 #define CMC_LINE_TERM_CRLF                  ((CMC_enum) 0)
333 #define CMC_LINE_TERM_CR                    ((CMC_enum) 1)
334 #define CMC_LINE_TERM_LF                    ((CMC_enum) 2)
335
336 #define CMC_REQUIRED_NO                     ((CMC_enum) 0)
337 #define CMC_REQUIRED_YES                    ((CMC_enum) 1)
338 #define CMC_REQUIRED_OPT                    ((CMC_enum) 2)
339
340 #define CMC_CHAR_CP437                      "1 2 840 113556 3 2 437"
341 #define CMC_CHAR_CP850                      "1 2 840 113556 3 2 85"
342 #define CMC_CHAR_CP1252                     "1 2 840 113556 3 2 1252"
343 #define CMC_CHAR_ISTRING                    "1 2 840 113556 3 2 0"
344 #define CMC_CHAR_UNICODE                    "1 2 840 113556 3 2 1"
345
346 #ifdef __cplusplus
347 }
348 #endif
349
350 #endif /* #ifndef _XCMC_H */