comparison LinkedList.h @ 54:516da6d93534

Added explicit symbol visibility markers to support files in ALmixer for public headers so they can be built as a dynamic library if needed.
author Eric Wing <ewing@anscamobile.com>
date Tue, 29 May 2012 19:40:38 -0700
parents a8d96c934e77
children 36644b1b940b
comparison
equal deleted inserted replaced
51:e2687188aea5 54:516da6d93534
28 /* Set up for C function definitions, even when using C++ */ 28 /* Set up for C function definitions, even when using C++ */
29 #ifdef __cplusplus 29 #ifdef __cplusplus
30 extern "C" { 30 extern "C" {
31 #endif 31 #endif
32 32
33
34 #ifndef DOXYGEN_SHOULD_IGNORE_THIS
35 /** @cond DOXYGEN_SHOULD_IGNORE_THIS */
36
37 /* Note: For Doxygen to produce clean output, you should set the
38 * PREDEFINED option to remove C_LINKED_LIST_DECLSPEC, C_LINKED_LIST_CALL, and
39 * the DOXYGEN_SHOULD_IGNORE_THIS blocks.
40 * PREDEFINED = DOXYGEN_SHOULD_IGNORE_THIS=1 C_LINKED_LIST_DECLSPEC= C_LINKED_LIST_CALL=
41 */
42
43 /** Windows needs to know explicitly which functions to export in a DLL. */
44 #if defined(_WIN32)
45 #if defined(C_LINKED_LIST_BUILD_LIBRARY)
46 #define C_LINKED_LIST_DECLSPEC __declspec(dllexport)
47 #else
48 #define C_LINKED_LIST_DECLSPEC __declspec(dllimport)
49 #endif
50 #else
51 #if defined(C_LINKED_LIST_BUILD_LIBRARY)
52 #if defined (__GNUC__) && __GNUC__ >= 4
53 #define C_LINKED_LIST_DECLSPEC __attribute__((visibility("default")))
54 #else
55 #define C_LINKED_LIST_DECLSPEC
56 #endif
57 #else
58 #define C_LINKED_LIST_DECLSPEC
59 #endif
60 #endif
61
62 /* For Windows, by default, use the C calling convention */
63 #if defined(_WIN32)
64 #define C_LINKED_LIST_CALL __cdecl
65 #else
66 #define C_LINKED_LIST_CALL
67 #endif
68
69 /** @endcond DOXYGEN_SHOULD_IGNORE_THIS */
70 #endif /* DOXYGEN_SHOULD_IGNORE_THIS */
71
72
33 #include <stddef.h> 73 #include <stddef.h>
34 74
35 typedef struct LinkedListNode LinkedListNode; 75 typedef struct LinkedListNode LinkedListNode;
36 typedef struct LinkedList LinkedList; 76 typedef struct LinkedList LinkedList;
37 77
38 LinkedList* LinkedList_Create(); 78 extern C_LINKED_LIST_DECLSPEC LinkedList* C_LINKED_LIST_CALL LinkedList_Create(void);
39 79
40 void LinkedList_Free(LinkedList* linked_list); 80 extern C_LINKED_LIST_DECLSPEC void C_LINKED_LIST_CALL LinkedList_Free(LinkedList* linked_list);
41 81
42 void* LinkedList_Front(LinkedList* linked_list); 82 extern C_LINKED_LIST_DECLSPEC void* C_LINKED_LIST_CALL LinkedList_Front(LinkedList* linked_list);
43 83
44 void* LinkedList_Back(LinkedList* linked_list); 84 extern C_LINKED_LIST_DECLSPEC void* C_LINKED_LIST_CALL LinkedList_Back(LinkedList* linked_list);
45 85
46 unsigned int LinkedList_PushFront(LinkedList* linked_list, void* new_item); 86 extern C_LINKED_LIST_DECLSPEC unsigned int C_LINKED_LIST_CALL LinkedList_PushFront(LinkedList* linked_list, void* new_item);
47 87
48 unsigned int LinkedList_PushBack(LinkedList* linked_list, void* new_item); 88 extern C_LINKED_LIST_DECLSPEC unsigned int C_LINKED_LIST_CALL LinkedList_PushBack(LinkedList* linked_list, void* new_item);
49 89
50 void* LinkedList_PopFront(LinkedList* linked_list); 90 extern C_LINKED_LIST_DECLSPEC void* C_LINKED_LIST_CALL LinkedList_PopFront(LinkedList* linked_list);
51 91
52 void* LinkedList_PopBack(LinkedList* linked_list); 92 extern C_LINKED_LIST_DECLSPEC void* C_LINKED_LIST_CALL LinkedList_PopBack(LinkedList* linked_list);
53 93
54 size_t LinkedList_Size(LinkedList* linked_list); 94 extern C_LINKED_LIST_DECLSPEC size_t C_LINKED_LIST_CALL LinkedList_Size(LinkedList* linked_list);
55 95
56 void LinkedList_Clear(LinkedList* linked_list); 96 extern C_LINKED_LIST_DECLSPEC void C_LINKED_LIST_CALL LinkedList_Clear(LinkedList* linked_list);
57 97
58 void* LinkedListNode_GetData(LinkedListNode* list_node); 98 extern C_LINKED_LIST_DECLSPEC void* C_LINKED_LIST_CALL LinkedListNode_GetData(LinkedListNode* list_node);
59 99
60 LinkedListNode* LinkedList_Find(LinkedList* linked_list, void* the_data, LinkedListNode* start_node); 100 extern C_LINKED_LIST_DECLSPEC LinkedListNode* C_LINKED_LIST_CALL LinkedList_Find(LinkedList* linked_list, void* the_data, LinkedListNode* start_node);
61 101
62 unsigned int LinkedList_Remove(LinkedList* linked_list, LinkedListNode* list_node); 102 extern C_LINKED_LIST_DECLSPEC unsigned int C_LINKED_LIST_CALL LinkedList_Remove(LinkedList* linked_list, LinkedListNode* list_node);
63 103
64 /* Ends C function definitions when using C++ */ 104 /* Ends C function definitions when using C++ */
65 #ifdef __cplusplus 105 #ifdef __cplusplus
66 } 106 }
67 #endif 107 #endif