Mercurial > almixer_isolated
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 |