Initial commit - from Precise source
[freerdp-ubuntu-pcb-backport.git] / include / freerdp / api.h
1 /**
2  * FreeRDP: A Remote Desktop Protocol Client
3  * FreeRDP Interface
4  *
5  * Copyright 2009-2011 Jay Sorg
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 #ifndef __FREERDP_API_H
21 #define __FREERDP_API_H
22
23 #define FREERDP_INTERFACE_VERSION 4
24
25 #if defined _WIN32 || defined __CYGWIN__
26   #ifdef FREERDP_EXPORTS
27     #ifdef __GNUC__
28       #define FREERDP_API __attribute__((dllexport))
29     #else
30       #define FREERDP_API __declspec(dllexport)
31     #endif
32   #else
33     #ifdef __GNUC__
34       #define FREERDP_API __attribute__((dllimport))
35     #else
36       #define FREERDP_API __declspec(dllimport)
37     #endif
38   #endif
39 #else
40   #if __GNUC__ >= 4
41     #define FREERDP_API   __attribute__ ((visibility("default")))
42   #else
43     #define FREERDP_API
44   #endif
45 #endif
46
47 #ifdef _WIN32
48 #define FREERDP_CC __cdecl
49 #else
50 #define FREERDP_CC
51 #endif
52
53 #ifdef _WIN32
54 #define INLINE  __inline
55 #else
56 #define INLINE  inline
57 #endif
58
59 #define IFCALL(_cb, ...) do { if (_cb != NULL) { _cb( __VA_ARGS__ ); } } while (0)
60 #define IFCALLRET(_cb, _ret, ...) do { if (_cb != NULL) { _ret = _cb( __VA_ARGS__ ); } } while (0)
61
62 #endif