@@ -115,14 +115,28 @@ class MCBrowserFactory : public MCBrowserRefCounted
115115//
116116// SYMBOL EXPORTS
117117//
118+
119+ /* MC_BROWSER_DLLEXPORT should be applied to declarations.
120+ * MC_BROWSER_DLLEXPORT_DEF should be applied to definitions. These MUST
121+ * be applied to functions for which there is a binding in browser.lcb
122+ * to avoid the symbols being dead stripped. */
118123#ifdef _WIN32
124+ /* On Windows, declaring something as having "dllexport" storage
125+ * modifies the naming of the corresponding symbol, so the export
126+ * attribute must be attached to declarations (and possibly to the
127+ * definition *as well* if no separate declaration appears) */
119128# ifdef _MSC_VER
120- # define MC_DLLEXPORT __declspec (dllexport)
129+ # define MC_BROWSER_DLLEXPORT __declspec (dllexport)
121130# else
122- # define MC_DLLEXPORT __attribute__ ((dllexport))
131+ # define MC_BROWSER_DLLEXPORT __attribute__ ((dllexport))
123132# endif
133+ # define MC_BROWSER_DLLEXPORT_DEF MC_BROWSER_DLLEXPORT
124134#else
125- # define MC_DLLEXPORT __attribute__ ((__visibility__(" default" )))
135+ /* On non-Windows platforms, the external visibility of a symbol is
136+ * simply a property of its definition (i.e. whether or not it should
137+ * appear in the list of exported symbols). */
138+ # define MC_BROWSER_DLLEXPORT
139+ # define MC_BROWSER_DLLEXPORT_DEF __attribute__ ((__visibility__(" default" ), __used__))
126140#endif
127141
128142// //////////////////////////////////////////////////////////////////////////////
@@ -131,24 +145,24 @@ class MCBrowserFactory : public MCBrowserRefCounted
131145extern " C"
132146{
133147
134- MC_DLLEXPORT bool MCBrowserLibraryInitialize ();
135- MC_DLLEXPORT void MCBrowserLibraryFinalize ();
148+ MC_BROWSER_DLLEXPORT bool MCBrowserLibraryInitialize ();
149+ MC_BROWSER_DLLEXPORT void MCBrowserLibraryFinalize ();
136150
137151typedef bool (*MCBrowserAllocator)(size_t p_size, void *&r_mem);
138152typedef void (*MCBrowserDeallocator)(void *p_mem);
139153typedef bool (*MCBrowserReallocator)(void *p_mem, size_t p_new_size, void *&r_new_mem);
140154typedef bool (*MCBrowserWaitFunction)(void );
141155typedef void (*MCBrowserBreakWaitFunction)(void );
142156
143- MC_DLLEXPORT void MCBrowserLibrarySetAllocator (MCBrowserAllocator p_alloc);
144- MC_DLLEXPORT void MCBrowserLibrarySetDeallocator (MCBrowserDeallocator p_dealloc);
145- MC_DLLEXPORT void MCBrowserLibrarySetReallocator (MCBrowserReallocator p_realloc);
146- MC_DLLEXPORT void MCBrowserLibrarySetWaitFunction (MCBrowserWaitFunction p_wait);
147- MC_DLLEXPORT void MCBrowserLibrarySetBreakWaitFunction (MCBrowserBreakWaitFunction p_breakwait);
157+ MC_BROWSER_DLLEXPORT void MCBrowserLibrarySetAllocator (MCBrowserAllocator p_alloc);
158+ MC_BROWSER_DLLEXPORT void MCBrowserLibrarySetDeallocator (MCBrowserDeallocator p_dealloc);
159+ MC_BROWSER_DLLEXPORT void MCBrowserLibrarySetReallocator (MCBrowserReallocator p_realloc);
160+ MC_BROWSER_DLLEXPORT void MCBrowserLibrarySetWaitFunction (MCBrowserWaitFunction p_wait);
161+ MC_BROWSER_DLLEXPORT void MCBrowserLibrarySetBreakWaitFunction (MCBrowserBreakWaitFunction p_breakwait);
148162
149163typedef void (*MCBrowserRunloopCallback)(void *p_context);
150164
151- MC_DLLEXPORT bool MCBrowserLibraryGetRunloopCallback (MCBrowserRunloopCallback &r_callback, void *&r_context);
165+ MC_BROWSER_DLLEXPORT bool MCBrowserLibraryGetRunloopCallback (MCBrowserRunloopCallback &r_callback, void *&r_context);
152166
153167// ////////
154168
@@ -166,84 +180,84 @@ enum MCBrowserValueType
166180 kMCBrowserValueTypeDictionary ,
167181};
168182
169- MC_DLLEXPORT bool MCBrowserListCreate (MCBrowserListRef &r_browser, uint32_t p_size = 0 );
170- MC_DLLEXPORT MCBrowserListRef MCBrowserListRetain (MCBrowserListRef p_list);
171- MC_DLLEXPORT void MCBrowserListRelease (MCBrowserListRef p_list);
183+ MC_BROWSER_DLLEXPORT bool MCBrowserListCreate (MCBrowserListRef &r_browser, uint32_t p_size = 0 );
184+ MC_BROWSER_DLLEXPORT MCBrowserListRef MCBrowserListRetain (MCBrowserListRef p_list);
185+ MC_BROWSER_DLLEXPORT void MCBrowserListRelease (MCBrowserListRef p_list);
172186
173- MC_DLLEXPORT bool MCBrowserListGetSize (MCBrowserListRef p_list, uint32_t &r_size);
174- MC_DLLEXPORT bool MCBrowserListGetType (MCBrowserListRef p_list, uint32_t p_index, MCBrowserValueType &r_type);
187+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetSize (MCBrowserListRef p_list, uint32_t &r_size);
188+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetType (MCBrowserListRef p_list, uint32_t p_index, MCBrowserValueType &r_type);
175189
176- MC_DLLEXPORT bool MCBrowserListSetBoolean (MCBrowserListRef p_list, uint32_t p_index, bool p_value);
177- MC_DLLEXPORT bool MCBrowserListSetInteger (MCBrowserListRef p_list, uint32_t p_index, int32_t p_value);
178- MC_DLLEXPORT bool MCBrowserListSetDouble (MCBrowserListRef p_list, uint32_t p_index, double p_value);
179- MC_DLLEXPORT bool MCBrowserListSetUTF8String (MCBrowserListRef p_list, uint32_t p_index, const char *p_value);
180- MC_DLLEXPORT bool MCBrowserListSetList (MCBrowserListRef p_list, uint32_t p_index, MCBrowserListRef p_value);
181- MC_DLLEXPORT bool MCBrowserListSetDictionary (MCBrowserListRef p_list, uint32_t p_index, MCBrowserDictionaryRef p_value);
190+ MC_BROWSER_DLLEXPORT bool MCBrowserListSetBoolean (MCBrowserListRef p_list, uint32_t p_index, bool p_value);
191+ MC_BROWSER_DLLEXPORT bool MCBrowserListSetInteger (MCBrowserListRef p_list, uint32_t p_index, int32_t p_value);
192+ MC_BROWSER_DLLEXPORT bool MCBrowserListSetDouble (MCBrowserListRef p_list, uint32_t p_index, double p_value);
193+ MC_BROWSER_DLLEXPORT bool MCBrowserListSetUTF8String (MCBrowserListRef p_list, uint32_t p_index, const char *p_value);
194+ MC_BROWSER_DLLEXPORT bool MCBrowserListSetList (MCBrowserListRef p_list, uint32_t p_index, MCBrowserListRef p_value);
195+ MC_BROWSER_DLLEXPORT bool MCBrowserListSetDictionary (MCBrowserListRef p_list, uint32_t p_index, MCBrowserDictionaryRef p_value);
182196
183- MC_DLLEXPORT bool MCBrowserListAppendBoolean (MCBrowserListRef p_list, bool p_value);
184- MC_DLLEXPORT bool MCBrowserListAppendInteger (MCBrowserListRef p_list, int32_t p_value);
185- MC_DLLEXPORT bool MCBrowserListAppendDouble (MCBrowserListRef p_list, double p_value);
186- MC_DLLEXPORT bool MCBrowserListAppendUTF8String (MCBrowserListRef p_list, const char *p_value);
187- MC_DLLEXPORT bool MCBrowserListAppendList (MCBrowserListRef p_list, MCBrowserListRef p_value);
188- MC_DLLEXPORT bool MCBrowserListAppendDictionary (MCBrowserListRef p_list, MCBrowserDictionaryRef p_value);
197+ MC_BROWSER_DLLEXPORT bool MCBrowserListAppendBoolean (MCBrowserListRef p_list, bool p_value);
198+ MC_BROWSER_DLLEXPORT bool MCBrowserListAppendInteger (MCBrowserListRef p_list, int32_t p_value);
199+ MC_BROWSER_DLLEXPORT bool MCBrowserListAppendDouble (MCBrowserListRef p_list, double p_value);
200+ MC_BROWSER_DLLEXPORT bool MCBrowserListAppendUTF8String (MCBrowserListRef p_list, const char *p_value);
201+ MC_BROWSER_DLLEXPORT bool MCBrowserListAppendList (MCBrowserListRef p_list, MCBrowserListRef p_value);
202+ MC_BROWSER_DLLEXPORT bool MCBrowserListAppendDictionary (MCBrowserListRef p_list, MCBrowserDictionaryRef p_value);
189203
190- MC_DLLEXPORT bool MCBrowserListGetBoolean (MCBrowserListRef p_list, uint32_t p_index, bool &r_value);
191- MC_DLLEXPORT bool MCBrowserListGetInteger (MCBrowserListRef p_list, uint32_t p_index, int32_t &r_value);
192- MC_DLLEXPORT bool MCBrowserListGetDouble (MCBrowserListRef p_list, uint32_t p_index, double &r_value);
193- MC_DLLEXPORT bool MCBrowserListGetUTF8String (MCBrowserListRef p_list, uint32_t p_index, char *&r_value);
194- MC_DLLEXPORT bool MCBrowserListGetList (MCBrowserListRef p_list, uint32_t p_index, MCBrowserListRef &r_value);
195- MC_DLLEXPORT bool MCBrowserListGetDictionary (MCBrowserListRef p_list, uint32_t p_index, MCBrowserDictionaryRef &r_value);
204+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetBoolean (MCBrowserListRef p_list, uint32_t p_index, bool &r_value);
205+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetInteger (MCBrowserListRef p_list, uint32_t p_index, int32_t &r_value);
206+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetDouble (MCBrowserListRef p_list, uint32_t p_index, double &r_value);
207+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetUTF8String (MCBrowserListRef p_list, uint32_t p_index, char *&r_value);
208+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetList (MCBrowserListRef p_list, uint32_t p_index, MCBrowserListRef &r_value);
209+ MC_BROWSER_DLLEXPORT bool MCBrowserListGetDictionary (MCBrowserListRef p_list, uint32_t p_index, MCBrowserDictionaryRef &r_value);
196210
197211// ////////
198212
199- MC_DLLEXPORT bool MCBrowserDictionaryCreate (MCBrowserDictionaryRef &r_dict, uint32_t p_size = 0 );
200- MC_DLLEXPORT MCBrowserDictionaryRef MCBrowserDictionaryRetain (MCBrowserDictionaryRef p_dict);
201- MC_DLLEXPORT void MCBrowserDictionaryRelease (MCBrowserDictionaryRef p_dict);
213+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryCreate (MCBrowserDictionaryRef &r_dict, uint32_t p_size = 0 );
214+ MC_BROWSER_DLLEXPORT MCBrowserDictionaryRef MCBrowserDictionaryRetain (MCBrowserDictionaryRef p_dict);
215+ MC_BROWSER_DLLEXPORT void MCBrowserDictionaryRelease (MCBrowserDictionaryRef p_dict);
202216
203- MC_DLLEXPORT bool MCBrowserDictionaryGetType (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserValueType &r_type);
204- MC_DLLEXPORT bool MCBrowserDictionaryGetKeys (MCBrowserDictionaryRef p_dict, char **&r_keys, uint32_t &r_count);
217+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetType (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserValueType &r_type);
218+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetKeys (MCBrowserDictionaryRef p_dict, char **&r_keys, uint32_t &r_count);
205219
206220/* WORKAROUND - Can't currently dereference a Pointer-to-CString at the moment so need to provide key accessor functions */
207- MC_DLLEXPORT bool MCBrowserDictionaryGetKeyCount (MCBrowserDictionaryRef p_dict, uint32_t &r_count);
208- MC_DLLEXPORT bool MCBrowserDictionaryGetKey (MCBrowserDictionaryRef p_dict, uint32_t p_index, char *&r_key);
209-
210- MC_DLLEXPORT bool MCBrowserDictionarySetBoolean (MCBrowserDictionaryRef p_dict, const char *p_key, bool p_value);
211- MC_DLLEXPORT bool MCBrowserDictionarySetInteger (MCBrowserDictionaryRef p_dict, const char *p_key, int32_t p_value);
212- MC_DLLEXPORT bool MCBrowserDictionarySetDouble (MCBrowserDictionaryRef p_dict, const char *p_key, double p_value);
213- MC_DLLEXPORT bool MCBrowserDictionarySetUTF8String (MCBrowserDictionaryRef p_dict, const char *p_key, const char *p_value);
214- MC_DLLEXPORT bool MCBrowserDictionarySetList (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserListRef p_value);
215- MC_DLLEXPORT bool MCBrowserDictionarySetDictionary (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserDictionaryRef p_value);
221+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetKeyCount (MCBrowserDictionaryRef p_dict, uint32_t &r_count);
222+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetKey (MCBrowserDictionaryRef p_dict, uint32_t p_index, char *&r_key);
223+
224+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionarySetBoolean (MCBrowserDictionaryRef p_dict, const char *p_key, bool p_value);
225+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionarySetInteger (MCBrowserDictionaryRef p_dict, const char *p_key, int32_t p_value);
226+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionarySetDouble (MCBrowserDictionaryRef p_dict, const char *p_key, double p_value);
227+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionarySetUTF8String (MCBrowserDictionaryRef p_dict, const char *p_key, const char *p_value);
228+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionarySetList (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserListRef p_value);
229+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionarySetDictionary (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserDictionaryRef p_value);
216230
217- MC_DLLEXPORT bool MCBrowserDictionaryGetBoolean (MCBrowserDictionaryRef p_dict, const char *p_key, bool &r_value);
218- MC_DLLEXPORT bool MCBrowserDictionaryGetInteger (MCBrowserDictionaryRef p_dict, const char *p_key, int32_t &r_value);
219- MC_DLLEXPORT bool MCBrowserDictionaryGetDouble (MCBrowserDictionaryRef p_dict, const char *p_key, double &r_value);
220- MC_DLLEXPORT bool MCBrowserDictionaryGetUTF8String (MCBrowserDictionaryRef p_dict, const char *p_key, char *&r_value);
221- MC_DLLEXPORT bool MCBrowserDictionaryGetList (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserListRef &r_value);
222- MC_DLLEXPORT bool MCBrowserDictionaryGetDictionary (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserDictionaryRef &r_value);
231+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetBoolean (MCBrowserDictionaryRef p_dict, const char *p_key, bool &r_value);
232+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetInteger (MCBrowserDictionaryRef p_dict, const char *p_key, int32_t &r_value);
233+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetDouble (MCBrowserDictionaryRef p_dict, const char *p_key, double &r_value);
234+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetUTF8String (MCBrowserDictionaryRef p_dict, const char *p_key, char *&r_value);
235+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetList (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserListRef &r_value);
236+ MC_BROWSER_DLLEXPORT bool MCBrowserDictionaryGetDictionary (MCBrowserDictionaryRef p_dict, const char *p_key, MCBrowserDictionaryRef &r_value);
223237
224238// ////////
225239
226240typedef class MCBrowser *MCBrowserRef;
227241typedef class MCBrowserFactory *MCBrowserFactoryRef;
228242
229- MC_DLLEXPORT bool MCBrowserFactoryGet (const char *p_factory_id, MCBrowserFactoryRef &r_factory);
230- MC_DLLEXPORT bool MCBrowserFactoryCreateBrowser (MCBrowserFactoryRef p_factory, void *p_display, void *p_parent_view, MCBrowserRef &r_browser);
243+ MC_BROWSER_DLLEXPORT bool MCBrowserFactoryGet (const char *p_factory_id, MCBrowserFactoryRef &r_factory);
244+ MC_BROWSER_DLLEXPORT bool MCBrowserFactoryCreateBrowser (MCBrowserFactoryRef p_factory, void *p_display, void *p_parent_view, MCBrowserRef &r_browser);
231245
232- MC_DLLEXPORT MCBrowserRef MCBrowserRetain (MCBrowserRef p_browser);
233- MC_DLLEXPORT void MCBrowserRelease (MCBrowserRef p_browser);
246+ MC_BROWSER_DLLEXPORT MCBrowserRef MCBrowserRetain (MCBrowserRef p_browser);
247+ MC_BROWSER_DLLEXPORT void MCBrowserRelease (MCBrowserRef p_browser);
234248
235- MC_DLLEXPORT void *MCBrowserGetNativeLayer (MCBrowserRef p_browser);
249+ MC_BROWSER_DLLEXPORT void *MCBrowserGetNativeLayer (MCBrowserRef p_browser);
236250
237- MC_DLLEXPORT bool MCBrowserGetBoolProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, bool &r_value);
238- MC_DLLEXPORT bool MCBrowserSetBoolProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, bool p_value);
251+ MC_BROWSER_DLLEXPORT bool MCBrowserGetBoolProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, bool &r_value);
252+ MC_BROWSER_DLLEXPORT bool MCBrowserSetBoolProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, bool p_value);
239253
240- MC_DLLEXPORT bool MCBrowserGetStringProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, char *&r_utf8_string);
241- MC_DLLEXPORT bool MCBrowserSetStringProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, const char *p_utf8_string);
254+ MC_BROWSER_DLLEXPORT bool MCBrowserGetStringProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, char *&r_utf8_string);
255+ MC_BROWSER_DLLEXPORT bool MCBrowserSetStringProperty (MCBrowserRef p_browser, MCBrowserProperty p_property, const char *p_utf8_string);
242256
243- MC_DLLEXPORT bool MCBrowserGoBack (MCBrowserRef p_browser);
244- MC_DLLEXPORT bool MCBrowserGoForward (MCBrowserRef p_browser);
245- MC_DLLEXPORT bool MCBrowserGoToURL (MCBrowserRef p_browser, const char *p_url);
246- MC_DLLEXPORT bool MCBrowserEvaluateJavaScript (MCBrowserRef p_browser, const char *p_script, char *&r_result);
257+ MC_BROWSER_DLLEXPORT bool MCBrowserGoBack (MCBrowserRef p_browser);
258+ MC_BROWSER_DLLEXPORT bool MCBrowserGoForward (MCBrowserRef p_browser);
259+ MC_BROWSER_DLLEXPORT bool MCBrowserGoToURL (MCBrowserRef p_browser, const char *p_url);
260+ MC_BROWSER_DLLEXPORT bool MCBrowserEvaluateJavaScript (MCBrowserRef p_browser, const char *p_script, char *&r_result);
247261
248262enum MCBrowserRequestType
249263{
@@ -261,8 +275,8 @@ enum MCBrowserRequestState
261275typedef void (*MCBrowserRequestCallback)(void *p_context, MCBrowserRef p_browser, MCBrowserRequestType p_type, MCBrowserRequestState p_state, bool p_in_frame, const char *p_url, const char *p_error);
262276typedef void (*MCBrowserJavaScriptCallback)(void *p_context, MCBrowserRef p_browser, const char *p_handler, MCBrowserListRef p_params);
263277
264- MC_DLLEXPORT bool MCBrowserSetRequestHandler (MCBrowserRef p_browser, MCBrowserRequestCallback p_callback, void *p_context);
265- MC_DLLEXPORT bool MCBrowserSetJavaScriptHandler (MCBrowserRef p_browser, MCBrowserJavaScriptCallback p_callback, void *p_context);
278+ MC_BROWSER_DLLEXPORT bool MCBrowserSetRequestHandler (MCBrowserRef p_browser, MCBrowserRequestCallback p_callback, void *p_context);
279+ MC_BROWSER_DLLEXPORT bool MCBrowserSetJavaScriptHandler (MCBrowserRef p_browser, MCBrowserJavaScriptCallback p_callback, void *p_context);
266280
267281}
268282
0 commit comments