comparison oct-conf-post-public.in.h @ 31487:2ec625c04947 stable

Mark exceptions with default visibility also where they are used (bug #61704). For exceptions that are thrown across library borders to work correctly, the definition of those exceptions needs to be attributed with default visibility both in the library where they are defined and in the code where they are caught. * oct-conf-post-public.in.h: Add new preprocessor macros for visibility attributes of exception classes. * liboctave/util/quit.h (execution_exception), liboctave/util/lo-array-errwarn.h (index_exception): Use new preprocessor macro to flag exception classes that are thrown across library borders.
author Markus Mützel <markus.muetzel@gmx.de>
date Sat, 19 Nov 2022 16:55:11 +0100
parents e7fc6251b698
children d5415300e53b e88a07dec498
comparison
equal deleted inserted replaced
31485:8acc0fd58ba2 31487:2ec625c04947
135 #endif 135 #endif
136 136
137 /* API macros for liboctave */ 137 /* API macros for liboctave */
138 #if defined (OCTAVE_DLL) 138 #if defined (OCTAVE_DLL)
139 # define OCTAVE_API OCTAVE_EXPORT 139 # define OCTAVE_API OCTAVE_EXPORT
140 # define OCTAVE_EXCEPTION_API OCTAVE_EXPORT
140 # if defined (_WIN32) || defined (__CYGWIN__) 141 # if defined (_WIN32) || defined (__CYGWIN__)
141 # define OCTAVE_TEMPLATE_API 142 # define OCTAVE_TEMPLATE_API
142 # if defined(__MINGW32__) 143 # if defined(__MINGW32__)
143 # define OCTAVE_EXTERN_TEMPLATE_API OCTAVE_EXPORT 144 # define OCTAVE_EXTERN_TEMPLATE_API OCTAVE_EXPORT
144 # define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API 145 # define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API
153 # define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API 154 # define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API
154 # define OCTAVE_OVERRIDABLE_FUNC_API 155 # define OCTAVE_OVERRIDABLE_FUNC_API
155 # endif 156 # endif
156 #else 157 #else
157 # define OCTAVE_API OCTAVE_IMPORT 158 # define OCTAVE_API OCTAVE_IMPORT
159 # if defined (_WIN32) || defined (__CYGWIN__)
160 # define OCTAVE_EXCEPTION_API OCTAVE_IMPORT
161 # else
162 # define OCTAVE_EXCEPTION_API OCTAVE_EXPORT
163 # endif
158 # define OCTAVE_TEMPLATE_API 164 # define OCTAVE_TEMPLATE_API
159 # define OCTAVE_EXTERN_TEMPLATE_API OCTAVE_IMPORT 165 # define OCTAVE_EXTERN_TEMPLATE_API OCTAVE_IMPORT
160 # define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API 166 # define OCTAVE_CLASS_TEMPLATE_INSTANTIATION_API
161 # define OCTAVE_OVERRIDABLE_FUNC_API 167 # define OCTAVE_OVERRIDABLE_FUNC_API
162 #endif 168 #endif
163 169
164 /* API macros for liboctinterp */ 170 /* API macros for liboctinterp */
165 #if defined (OCTINTERP_DLL) 171 #if defined (OCTINTERP_DLL)
166 # define OCTINTERP_API OCTAVE_EXPORT 172 # define OCTINTERP_API OCTAVE_EXPORT
173 # define OCTINTERP_EXCEPTION_API OCTAVE_EXPORT
167 # if defined (_WIN32) || defined (__CYGWIN__) 174 # if defined (_WIN32) || defined (__CYGWIN__)
168 # define OCTINTERP_TEMPLATE_API 175 # define OCTINTERP_TEMPLATE_API
169 # if defined(__MINGW32__) 176 # if defined(__MINGW32__)
170 # define OCTINTERP_EXTERN_TEMPLATE_API OCTAVE_EXPORT 177 # define OCTINTERP_EXTERN_TEMPLATE_API OCTAVE_EXPORT
171 # define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API 178 # define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API
180 # define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API 187 # define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API
181 # define OCTINTERP_OVERRIDABLE_FUNC_API 188 # define OCTINTERP_OVERRIDABLE_FUNC_API
182 # endif 189 # endif
183 #else 190 #else
184 # define OCTINTERP_API OCTAVE_IMPORT 191 # define OCTINTERP_API OCTAVE_IMPORT
192 # if defined (_WIN32) || defined (__CYGWIN__)
193 # define OCTINTERP_EXCEPTION_API OCTAVE_IMPORT
194 # else
195 # define OCTINTERP_EXCEPTION_API OCTAVE_EXPORT
196 # endif
185 # define OCTINTERP_TEMPLATE_API 197 # define OCTINTERP_TEMPLATE_API
186 # define OCTINTERP_EXTERN_TEMPLATE_API OCTAVE_IMPORT 198 # define OCTINTERP_EXTERN_TEMPLATE_API OCTAVE_IMPORT
187 # define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API 199 # define OCTINTERP_CLASS_TEMPLATE_INSTANTIATION_API
188 # define OCTINTERP_OVERRIDABLE_FUNC_API 200 # define OCTINTERP_OVERRIDABLE_FUNC_API
189 #endif 201 #endif
190 202
191 /* API macros for the Array class in liboctave and liboctinterp */ 203 /* API macros for the Array class in liboctave and liboctinterp */
192 #if (defined (OCTAVE_DLL) || defined (OCTINTERP_DLL)) 204 #if (defined (OCTAVE_DLL) || defined (OCTINTERP_DLL))
193 # define OCTARRAY_API OCTAVE_EXPORT 205 # define OCTARRAY_API OCTAVE_EXPORT
206 # define OCTARRAY_EXCEPTION_API OCTAVE_EXPORT
194 # if defined (_WIN32) || defined (__CYGWIN__) 207 # if defined (_WIN32) || defined (__CYGWIN__)
195 # define OCTARRAY_TEMPLATE_API 208 # define OCTARRAY_TEMPLATE_API
196 # if defined(__MINGW32__) 209 # if defined(__MINGW32__)
197 # define OCTARRAY_EXTERN_TEMPLATE_API OCTAVE_EXPORT 210 # define OCTARRAY_EXTERN_TEMPLATE_API OCTAVE_EXPORT
198 # define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API 211 # define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API
207 # define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API 220 # define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API
208 # define OCTARRAY_OVERRIDABLE_FUNC_API 221 # define OCTARRAY_OVERRIDABLE_FUNC_API
209 # endif 222 # endif
210 #else 223 #else
211 # define OCTARRAY_API OCTAVE_IMPORT 224 # define OCTARRAY_API OCTAVE_IMPORT
225 # if defined (_WIN32) || defined (__CYGWIN__)
226 # define OCTARRAY_EXCEPTION_API OCTAVE_IMPORT
227 # else
228 # define OCTARRAY_EXCEPTION_API OCTAVE_EXPORT
229 # endif
212 # define OCTARRAY_TEMPLATE_API 230 # define OCTARRAY_TEMPLATE_API
213 # define OCTARRAY_EXTERN_TEMPLATE_API OCTAVE_IMPORT 231 # define OCTARRAY_EXTERN_TEMPLATE_API OCTAVE_IMPORT
214 # define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API 232 # define OCTARRAY_CLASS_TEMPLATE_INSTANTIATION_API
215 # define OCTARRAY_OVERRIDABLE_FUNC_API 233 # define OCTARRAY_OVERRIDABLE_FUNC_API
216 #endif 234 #endif
217 235
218 /* API macros for libinterp/graphics */ 236 /* API macros for libinterp/graphics */
219 #if defined (OCTGRAPHICS_DLL) 237 #if defined (OCTGRAPHICS_DLL)
220 # define OCTGRAPHICS_API OCTAVE_EXPORT 238 # define OCTGRAPHICS_API OCTAVE_EXPORT
239 # define OCTGRAPHICS_EXCEPTION_API OCTAVE_EXPORT
221 # if defined (_WIN32) || defined (__CYGWIN__) 240 # if defined (_WIN32) || defined (__CYGWIN__)
222 # define OCTGRAPHICS_TEMPLATE_API 241 # define OCTGRAPHICS_TEMPLATE_API
223 # if defined(__MINGW32__) 242 # if defined(__MINGW32__)
224 # define OCTGRAPHICS_EXTERN_TEMPLATE_API OCTAVE_EXPORT 243 # define OCTGRAPHICS_EXTERN_TEMPLATE_API OCTAVE_EXPORT
225 # define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API 244 # define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API
234 # define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API 253 # define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API
235 # define OCTGRAPHICS_OVERRIDABLE_FUNC_API 254 # define OCTGRAPHICS_OVERRIDABLE_FUNC_API
236 # endif 255 # endif
237 #else 256 #else
238 # define OCTGRAPHICS_API OCTAVE_IMPORT 257 # define OCTGRAPHICS_API OCTAVE_IMPORT
258 # if defined (_WIN32) || defined (__CYGWIN__)
259 # define OCTGRAPHICS_EXCEPTION_API OCTAVE_IMPORT
260 # else
261 # define OCTGRAPHICS_EXCEPTION_API OCTAVE_EXPORT
262 # endif
239 # define OCTGRAPHICS_TEMPLATE_API 263 # define OCTGRAPHICS_TEMPLATE_API
240 # define OCTGRAPHICS_EXTERN_TEMPLATE_API OCTAVE_IMPORT 264 # define OCTGRAPHICS_EXTERN_TEMPLATE_API OCTAVE_IMPORT
241 # define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API 265 # define OCTGRAPHICS_CLASS_TEMPLATE_INSTANTIATION_API
242 # define OCTGRAPHICS_OVERRIDABLE_FUNC_API 266 # define OCTGRAPHICS_OVERRIDABLE_FUNC_API
243 #endif 267 #endif
244 268
245 /* API macros for libgui */ 269 /* API macros for libgui */
246 #if defined (OCTGUI_DLL) 270 #if defined (OCTGUI_DLL)
247 # define OCTGUI_API OCTAVE_EXPORT 271 # define OCTGUI_API OCTAVE_EXPORT
272 # define OCTGUI_EXCEPTION_API OCTAVE_EXPORT
248 # if defined (_WIN32) || defined (__CYGWIN__) 273 # if defined (_WIN32) || defined (__CYGWIN__)
249 # define OCTGUI_TEMPLATE_API 274 # define OCTGUI_TEMPLATE_API
250 # if defined(__MINGW32__) 275 # if defined(__MINGW32__)
251 # define OCTGUI_EXTERN_TEMPLATE_API OCTAVE_EXPORT 276 # define OCTGUI_EXTERN_TEMPLATE_API OCTAVE_EXPORT
252 # define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API 277 # define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API
261 # define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API 286 # define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API
262 # define OCTGUI_OVERRIDABLE_FUNC_API 287 # define OCTGUI_OVERRIDABLE_FUNC_API
263 # endif 288 # endif
264 #else 289 #else
265 # define OCTGUI_API OCTAVE_IMPORT 290 # define OCTGUI_API OCTAVE_IMPORT
291 # if defined (_WIN32) || defined (__CYGWIN__)
292 # define OCTGUI_EXCEPTION_API OCTAVE_IMPORT
293 # else
294 # define OCTGUI_EXCEPTION_API OCTAVE_EXPORT
295 # endif
266 # define OCTGUI_TEMPLATE_API 296 # define OCTGUI_TEMPLATE_API
267 # define OCTGUI_EXTERN_TEMPLATE_API OCTAVE_IMPORT 297 # define OCTGUI_EXTERN_TEMPLATE_API OCTAVE_IMPORT
268 # define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API 298 # define OCTGUI_CLASS_TEMPLATE_INSTANTIATION_API
269 # define OCTGUI_OVERRIDABLE_FUNC_API 299 # define OCTGUI_OVERRIDABLE_FUNC_API
270 #endif 300 #endif