|
1
|
1 /*
|
|
|
2 Simple DirectMedia Layer
|
|
|
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
|
|
|
4
|
|
|
5 This software is provided 'as-is', without any express or implied
|
|
|
6 warranty. In no event will the authors be held liable for any damages
|
|
|
7 arising from the use of this software.
|
|
|
8
|
|
|
9 Permission is granted to anyone to use this software for any purpose,
|
|
|
10 including commercial applications, and to alter it and redistribute it
|
|
|
11 freely, subject to the following restrictions:
|
|
|
12
|
|
|
13 1. The origin of this software must not be misrepresented; you must not
|
|
|
14 claim that you wrote the original software. If you use this software
|
|
|
15 in a product, an acknowledgment in the product documentation would be
|
|
|
16 appreciated but is not required.
|
|
|
17 2. Altered source versions must be plainly marked as such, and must not be
|
|
|
18 misrepresented as being the original software.
|
|
|
19 3. This notice may not be removed or altered from any source distribution.
|
|
|
20 */
|
|
|
21
|
|
|
22 /**
|
|
|
23 * # CategoryProperties
|
|
|
24 *
|
|
|
25 * A property is a variable that can be created and retrieved by name at
|
|
|
26 * runtime.
|
|
|
27 *
|
|
|
28 * All properties are part of a property group (SDL_PropertiesID). A property
|
|
|
29 * group can be created with the SDL_CreateProperties function and destroyed
|
|
|
30 * with the SDL_DestroyProperties function.
|
|
|
31 *
|
|
|
32 * Properties can be added to and retrieved from a property group through the
|
|
|
33 * following functions:
|
|
|
34 *
|
|
|
35 * - SDL_SetPointerProperty and SDL_GetPointerProperty operate on `void*`
|
|
|
36 * pointer types.
|
|
|
37 * - SDL_SetStringProperty and SDL_GetStringProperty operate on string types.
|
|
|
38 * - SDL_SetNumberProperty and SDL_GetNumberProperty operate on signed 64-bit
|
|
|
39 * integer types.
|
|
|
40 * - SDL_SetFloatProperty and SDL_GetFloatProperty operate on floating point
|
|
|
41 * types.
|
|
|
42 * - SDL_SetBooleanProperty and SDL_GetBooleanProperty operate on boolean
|
|
|
43 * types.
|
|
|
44 *
|
|
|
45 * Properties can be removed from a group by using SDL_ClearProperty.
|
|
|
46 */
|
|
|
47
|
|
|
48
|
|
|
49 #ifndef SDL_properties_h_
|
|
|
50 #define SDL_properties_h_
|
|
|
51
|
|
|
52 #include <SDL3/SDL_stdinc.h>
|
|
|
53 #include <SDL3/SDL_error.h>
|
|
|
54
|
|
|
55 #include <SDL3/SDL_begin_code.h>
|
|
|
56 /* Set up for C function definitions, even when using C++ */
|
|
|
57 #ifdef __cplusplus
|
|
|
58 extern "C" {
|
|
|
59 #endif
|
|
|
60
|
|
|
61 /**
|
|
|
62 * An ID that represents a properties set.
|
|
|
63 *
|
|
|
64 * \since This datatype is available since SDL 3.2.0.
|
|
|
65 */
|
|
|
66 typedef Uint32 SDL_PropertiesID;
|
|
|
67
|
|
|
68 /**
|
|
|
69 * SDL property type
|
|
|
70 *
|
|
|
71 * \since This enum is available since SDL 3.2.0.
|
|
|
72 */
|
|
|
73 typedef enum SDL_PropertyType
|
|
|
74 {
|
|
|
75 SDL_PROPERTY_TYPE_INVALID,
|
|
|
76 SDL_PROPERTY_TYPE_POINTER,
|
|
|
77 SDL_PROPERTY_TYPE_STRING,
|
|
|
78 SDL_PROPERTY_TYPE_NUMBER,
|
|
|
79 SDL_PROPERTY_TYPE_FLOAT,
|
|
|
80 SDL_PROPERTY_TYPE_BOOLEAN
|
|
|
81 } SDL_PropertyType;
|
|
|
82
|
|
|
83 /**
|
|
|
84 * A generic property for naming things.
|
|
|
85 *
|
|
|
86 * This property is intended to be added to any SDL_PropertiesID that needs a
|
|
|
87 * generic name associated with the property set. It is not guaranteed that
|
|
|
88 * any property set will include this key, but it is convenient to have a
|
|
|
89 * standard key that any piece of code could reasonably agree to use.
|
|
|
90 *
|
|
|
91 * For example, the properties associated with an SDL_Texture might have a
|
|
|
92 * name string of "player sprites", or an SDL_AudioStream might have
|
|
|
93 * "background music", etc. This might also be useful for an SDL_IOStream to
|
|
|
94 * list the path to its asset.
|
|
|
95 *
|
|
|
96 * There is no format for the value set with this key; it is expected to be
|
|
|
97 * human-readable and informational in nature, possibly for logging or
|
|
|
98 * debugging purposes.
|
|
|
99 *
|
|
|
100 * SDL does not currently set this property on any objects it creates, but
|
|
|
101 * this may change in later versions; it is currently expected that apps and
|
|
|
102 * external libraries will take advantage of it, when appropriate.
|
|
|
103 *
|
|
|
104 * \since This macro is available since SDL 3.4.0.
|
|
|
105 */
|
|
|
106 #define SDL_PROP_NAME_STRING "SDL.name"
|
|
|
107
|
|
|
108 /**
|
|
|
109 * Get the global SDL properties.
|
|
|
110 *
|
|
|
111 * \returns a valid property ID on success or 0 on failure; call
|
|
|
112 * SDL_GetError() for more information.
|
|
|
113 *
|
|
|
114 * \since This function is available since SDL 3.2.0.
|
|
|
115 */
|
|
|
116 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetGlobalProperties(void);
|
|
|
117
|
|
|
118 /**
|
|
|
119 * Create a group of properties.
|
|
|
120 *
|
|
|
121 * All properties are automatically destroyed when SDL_Quit() is called.
|
|
|
122 *
|
|
|
123 * \returns an ID for a new group of properties, or 0 on failure; call
|
|
|
124 * SDL_GetError() for more information.
|
|
|
125 *
|
|
|
126 * \threadsafety It is safe to call this function from any thread.
|
|
|
127 *
|
|
|
128 * \since This function is available since SDL 3.2.0.
|
|
|
129 *
|
|
|
130 * \sa SDL_DestroyProperties
|
|
|
131 */
|
|
|
132 extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_CreateProperties(void);
|
|
|
133
|
|
|
134 /**
|
|
|
135 * Copy a group of properties.
|
|
|
136 *
|
|
|
137 * Copy all the properties from one group of properties to another, with the
|
|
|
138 * exception of properties requiring cleanup (set using
|
|
|
139 * SDL_SetPointerPropertyWithCleanup()), which will not be copied. Any
|
|
|
140 * property that already exists on `dst` will be overwritten.
|
|
|
141 *
|
|
|
142 * \param src the properties to copy.
|
|
|
143 * \param dst the destination properties.
|
|
|
144 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
145 * information.
|
|
|
146 *
|
|
|
147 * \threadsafety It is safe to call this function from any thread. This
|
|
|
148 * function acquires simultaneous mutex locks on both the source
|
|
|
149 * and destination property sets.
|
|
|
150 *
|
|
|
151 * \since This function is available since SDL 3.2.0.
|
|
|
152 */
|
|
|
153 extern SDL_DECLSPEC bool SDLCALL SDL_CopyProperties(SDL_PropertiesID src, SDL_PropertiesID dst);
|
|
|
154
|
|
|
155 /**
|
|
|
156 * Lock a group of properties.
|
|
|
157 *
|
|
|
158 * Obtain a multi-threaded lock for these properties. Other threads will wait
|
|
|
159 * while trying to lock these properties until they are unlocked. Properties
|
|
|
160 * must be unlocked before they are destroyed.
|
|
|
161 *
|
|
|
162 * The lock is automatically taken when setting individual properties, this
|
|
|
163 * function is only needed when you want to set several properties atomically
|
|
|
164 * or want to guarantee that properties being queried aren't freed in another
|
|
|
165 * thread.
|
|
|
166 *
|
|
|
167 * \param props the properties to lock.
|
|
|
168 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
169 * information.
|
|
|
170 *
|
|
|
171 * \threadsafety It is safe to call this function from any thread.
|
|
|
172 *
|
|
|
173 * \since This function is available since SDL 3.2.0.
|
|
|
174 *
|
|
|
175 * \sa SDL_UnlockProperties
|
|
|
176 */
|
|
|
177 extern SDL_DECLSPEC bool SDLCALL SDL_LockProperties(SDL_PropertiesID props);
|
|
|
178
|
|
|
179 /**
|
|
|
180 * Unlock a group of properties.
|
|
|
181 *
|
|
|
182 * \param props the properties to unlock.
|
|
|
183 *
|
|
|
184 * \threadsafety It is safe to call this function from any thread.
|
|
|
185 *
|
|
|
186 * \since This function is available since SDL 3.2.0.
|
|
|
187 *
|
|
|
188 * \sa SDL_LockProperties
|
|
|
189 */
|
|
|
190 extern SDL_DECLSPEC void SDLCALL SDL_UnlockProperties(SDL_PropertiesID props);
|
|
|
191
|
|
|
192 /**
|
|
|
193 * A callback used to free resources when a property is deleted.
|
|
|
194 *
|
|
|
195 * This should release any resources associated with `value` that are no
|
|
|
196 * longer needed.
|
|
|
197 *
|
|
|
198 * This callback is set per-property. Different properties in the same group
|
|
|
199 * can have different cleanup callbacks.
|
|
|
200 *
|
|
|
201 * This callback will be called _during_ SDL_SetPointerPropertyWithCleanup if
|
|
|
202 * the function fails for any reason.
|
|
|
203 *
|
|
|
204 * \param userdata an app-defined pointer passed to the callback.
|
|
|
205 * \param value the pointer assigned to the property to clean up.
|
|
|
206 *
|
|
|
207 * \threadsafety This callback may fire without any locks held; if this is a
|
|
|
208 * concern, the app should provide its own locking.
|
|
|
209 *
|
|
|
210 * \since This datatype is available since SDL 3.2.0.
|
|
|
211 *
|
|
|
212 * \sa SDL_SetPointerPropertyWithCleanup
|
|
|
213 */
|
|
|
214 typedef void (SDLCALL *SDL_CleanupPropertyCallback)(void *userdata, void *value);
|
|
|
215
|
|
|
216 /**
|
|
|
217 * Set a pointer property in a group of properties with a cleanup function
|
|
|
218 * that is called when the property is deleted.
|
|
|
219 *
|
|
|
220 * The cleanup function is also called if setting the property fails for any
|
|
|
221 * reason.
|
|
|
222 *
|
|
|
223 * For simply setting basic data types, like numbers, bools, or strings, use
|
|
|
224 * SDL_SetNumberProperty, SDL_SetBooleanProperty, or SDL_SetStringProperty
|
|
|
225 * instead, as those functions will handle cleanup on your behalf. This
|
|
|
226 * function is only for more complex, custom data.
|
|
|
227 *
|
|
|
228 * \param props the properties to modify.
|
|
|
229 * \param name the name of the property to modify.
|
|
|
230 * \param value the new value of the property, or NULL to delete the property.
|
|
|
231 * \param cleanup the function to call when this property is deleted, or NULL
|
|
|
232 * if no cleanup is necessary.
|
|
|
233 * \param userdata a pointer that is passed to the cleanup function.
|
|
|
234 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
235 * information.
|
|
|
236 *
|
|
|
237 * \threadsafety It is safe to call this function from any thread.
|
|
|
238 *
|
|
|
239 * \since This function is available since SDL 3.2.0.
|
|
|
240 *
|
|
|
241 * \sa SDL_GetPointerProperty
|
|
|
242 * \sa SDL_SetPointerProperty
|
|
|
243 * \sa SDL_CleanupPropertyCallback
|
|
|
244 */
|
|
|
245 extern SDL_DECLSPEC bool SDLCALL SDL_SetPointerPropertyWithCleanup(SDL_PropertiesID props, const char *name, void *value, SDL_CleanupPropertyCallback cleanup, void *userdata);
|
|
|
246
|
|
|
247 /**
|
|
|
248 * Set a pointer property in a group of properties.
|
|
|
249 *
|
|
|
250 * \param props the properties to modify.
|
|
|
251 * \param name the name of the property to modify.
|
|
|
252 * \param value the new value of the property, or NULL to delete the property.
|
|
|
253 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
254 * information.
|
|
|
255 *
|
|
|
256 * \threadsafety It is safe to call this function from any thread.
|
|
|
257 *
|
|
|
258 * \since This function is available since SDL 3.2.0.
|
|
|
259 *
|
|
|
260 * \sa SDL_GetPointerProperty
|
|
|
261 * \sa SDL_HasProperty
|
|
|
262 * \sa SDL_SetBooleanProperty
|
|
|
263 * \sa SDL_SetFloatProperty
|
|
|
264 * \sa SDL_SetNumberProperty
|
|
|
265 * \sa SDL_SetPointerPropertyWithCleanup
|
|
|
266 * \sa SDL_SetStringProperty
|
|
|
267 */
|
|
|
268 extern SDL_DECLSPEC bool SDLCALL SDL_SetPointerProperty(SDL_PropertiesID props, const char *name, void *value);
|
|
|
269
|
|
|
270 /**
|
|
|
271 * Set a string property in a group of properties.
|
|
|
272 *
|
|
|
273 * This function makes a copy of the string; the caller does not have to
|
|
|
274 * preserve the data after this call completes.
|
|
|
275 *
|
|
|
276 * \param props the properties to modify.
|
|
|
277 * \param name the name of the property to modify.
|
|
|
278 * \param value the new value of the property, or NULL to delete the property.
|
|
|
279 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
280 * information.
|
|
|
281 *
|
|
|
282 * \threadsafety It is safe to call this function from any thread.
|
|
|
283 *
|
|
|
284 * \since This function is available since SDL 3.2.0.
|
|
|
285 *
|
|
|
286 * \sa SDL_GetStringProperty
|
|
|
287 */
|
|
|
288 extern SDL_DECLSPEC bool SDLCALL SDL_SetStringProperty(SDL_PropertiesID props, const char *name, const char *value);
|
|
|
289
|
|
|
290 /**
|
|
|
291 * Set an integer property in a group of properties.
|
|
|
292 *
|
|
|
293 * \param props the properties to modify.
|
|
|
294 * \param name the name of the property to modify.
|
|
|
295 * \param value the new value of the property.
|
|
|
296 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
297 * information.
|
|
|
298 *
|
|
|
299 * \threadsafety It is safe to call this function from any thread.
|
|
|
300 *
|
|
|
301 * \since This function is available since SDL 3.2.0.
|
|
|
302 *
|
|
|
303 * \sa SDL_GetNumberProperty
|
|
|
304 */
|
|
|
305 extern SDL_DECLSPEC bool SDLCALL SDL_SetNumberProperty(SDL_PropertiesID props, const char *name, Sint64 value);
|
|
|
306
|
|
|
307 /**
|
|
|
308 * Set a floating point property in a group of properties.
|
|
|
309 *
|
|
|
310 * \param props the properties to modify.
|
|
|
311 * \param name the name of the property to modify.
|
|
|
312 * \param value the new value of the property.
|
|
|
313 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
314 * information.
|
|
|
315 *
|
|
|
316 * \threadsafety It is safe to call this function from any thread.
|
|
|
317 *
|
|
|
318 * \since This function is available since SDL 3.2.0.
|
|
|
319 *
|
|
|
320 * \sa SDL_GetFloatProperty
|
|
|
321 */
|
|
|
322 extern SDL_DECLSPEC bool SDLCALL SDL_SetFloatProperty(SDL_PropertiesID props, const char *name, float value);
|
|
|
323
|
|
|
324 /**
|
|
|
325 * Set a boolean property in a group of properties.
|
|
|
326 *
|
|
|
327 * \param props the properties to modify.
|
|
|
328 * \param name the name of the property to modify.
|
|
|
329 * \param value the new value of the property.
|
|
|
330 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
331 * information.
|
|
|
332 *
|
|
|
333 * \threadsafety It is safe to call this function from any thread.
|
|
|
334 *
|
|
|
335 * \since This function is available since SDL 3.2.0.
|
|
|
336 *
|
|
|
337 * \sa SDL_GetBooleanProperty
|
|
|
338 */
|
|
|
339 extern SDL_DECLSPEC bool SDLCALL SDL_SetBooleanProperty(SDL_PropertiesID props, const char *name, bool value);
|
|
|
340
|
|
|
341 /**
|
|
|
342 * Return whether a property exists in a group of properties.
|
|
|
343 *
|
|
|
344 * \param props the properties to query.
|
|
|
345 * \param name the name of the property to query.
|
|
|
346 * \returns true if the property exists, or false if it doesn't.
|
|
|
347 *
|
|
|
348 * \threadsafety It is safe to call this function from any thread.
|
|
|
349 *
|
|
|
350 * \since This function is available since SDL 3.2.0.
|
|
|
351 *
|
|
|
352 * \sa SDL_GetPropertyType
|
|
|
353 */
|
|
|
354 extern SDL_DECLSPEC bool SDLCALL SDL_HasProperty(SDL_PropertiesID props, const char *name);
|
|
|
355
|
|
|
356 /**
|
|
|
357 * Get the type of a property in a group of properties.
|
|
|
358 *
|
|
|
359 * \param props the properties to query.
|
|
|
360 * \param name the name of the property to query.
|
|
|
361 * \returns the type of the property, or SDL_PROPERTY_TYPE_INVALID if it is
|
|
|
362 * not set.
|
|
|
363 *
|
|
|
364 * \threadsafety It is safe to call this function from any thread.
|
|
|
365 *
|
|
|
366 * \since This function is available since SDL 3.2.0.
|
|
|
367 *
|
|
|
368 * \sa SDL_HasProperty
|
|
|
369 */
|
|
|
370 extern SDL_DECLSPEC SDL_PropertyType SDLCALL SDL_GetPropertyType(SDL_PropertiesID props, const char *name);
|
|
|
371
|
|
|
372 /**
|
|
|
373 * Get a pointer property from a group of properties.
|
|
|
374 *
|
|
|
375 * By convention, the names of properties that SDL exposes on objects will
|
|
|
376 * start with "SDL.", and properties that SDL uses internally will start with
|
|
|
377 * "SDL.internal.". These should be considered read-only and should not be
|
|
|
378 * modified by applications.
|
|
|
379 *
|
|
|
380 * \param props the properties to query.
|
|
|
381 * \param name the name of the property to query.
|
|
|
382 * \param default_value the default value of the property.
|
|
|
383 * \returns the value of the property, or `default_value` if it is not set or
|
|
|
384 * not a pointer property.
|
|
|
385 *
|
|
|
386 * \threadsafety It is safe to call this function from any thread, although
|
|
|
387 * the data returned is not protected and could potentially be
|
|
|
388 * freed if you call SDL_SetPointerProperty() or
|
|
|
389 * SDL_ClearProperty() on these properties from another thread.
|
|
|
390 * If you need to avoid this, use SDL_LockProperties() and
|
|
|
391 * SDL_UnlockProperties().
|
|
|
392 *
|
|
|
393 * \since This function is available since SDL 3.2.0.
|
|
|
394 *
|
|
|
395 * \sa SDL_GetBooleanProperty
|
|
|
396 * \sa SDL_GetFloatProperty
|
|
|
397 * \sa SDL_GetNumberProperty
|
|
|
398 * \sa SDL_GetPropertyType
|
|
|
399 * \sa SDL_GetStringProperty
|
|
|
400 * \sa SDL_HasProperty
|
|
|
401 * \sa SDL_SetPointerProperty
|
|
|
402 */
|
|
|
403 extern SDL_DECLSPEC void * SDLCALL SDL_GetPointerProperty(SDL_PropertiesID props, const char *name, void *default_value);
|
|
|
404
|
|
|
405 /**
|
|
|
406 * Get a string property from a group of properties.
|
|
|
407 *
|
|
|
408 * \param props the properties to query.
|
|
|
409 * \param name the name of the property to query.
|
|
|
410 * \param default_value the default value of the property.
|
|
|
411 * \returns the value of the property, or `default_value` if it is not set or
|
|
|
412 * not a string property.
|
|
|
413 *
|
|
|
414 * \threadsafety It is safe to call this function from any thread, although
|
|
|
415 * the data returned is not protected and could potentially be
|
|
|
416 * freed if you call SDL_SetStringProperty() or
|
|
|
417 * SDL_ClearProperty() on these properties from another thread.
|
|
|
418 * If you need to avoid this, use SDL_LockProperties() and
|
|
|
419 * SDL_UnlockProperties().
|
|
|
420 *
|
|
|
421 * \since This function is available since SDL 3.2.0.
|
|
|
422 *
|
|
|
423 * \sa SDL_GetPropertyType
|
|
|
424 * \sa SDL_HasProperty
|
|
|
425 * \sa SDL_SetStringProperty
|
|
|
426 */
|
|
|
427 extern SDL_DECLSPEC const char * SDLCALL SDL_GetStringProperty(SDL_PropertiesID props, const char *name, const char *default_value);
|
|
|
428
|
|
|
429 /**
|
|
|
430 * Get a number property from a group of properties.
|
|
|
431 *
|
|
|
432 * You can use SDL_GetPropertyType() to query whether the property exists and
|
|
|
433 * is a number property.
|
|
|
434 *
|
|
|
435 * \param props the properties to query.
|
|
|
436 * \param name the name of the property to query.
|
|
|
437 * \param default_value the default value of the property.
|
|
|
438 * \returns the value of the property, or `default_value` if it is not set or
|
|
|
439 * not a number property.
|
|
|
440 *
|
|
|
441 * \threadsafety It is safe to call this function from any thread.
|
|
|
442 *
|
|
|
443 * \since This function is available since SDL 3.2.0.
|
|
|
444 *
|
|
|
445 * \sa SDL_GetPropertyType
|
|
|
446 * \sa SDL_HasProperty
|
|
|
447 * \sa SDL_SetNumberProperty
|
|
|
448 */
|
|
|
449 extern SDL_DECLSPEC Sint64 SDLCALL SDL_GetNumberProperty(SDL_PropertiesID props, const char *name, Sint64 default_value);
|
|
|
450
|
|
|
451 /**
|
|
|
452 * Get a floating point property from a group of properties.
|
|
|
453 *
|
|
|
454 * You can use SDL_GetPropertyType() to query whether the property exists and
|
|
|
455 * is a floating point property.
|
|
|
456 *
|
|
|
457 * \param props the properties to query.
|
|
|
458 * \param name the name of the property to query.
|
|
|
459 * \param default_value the default value of the property.
|
|
|
460 * \returns the value of the property, or `default_value` if it is not set or
|
|
|
461 * not a float property.
|
|
|
462 *
|
|
|
463 * \threadsafety It is safe to call this function from any thread.
|
|
|
464 *
|
|
|
465 * \since This function is available since SDL 3.2.0.
|
|
|
466 *
|
|
|
467 * \sa SDL_GetPropertyType
|
|
|
468 * \sa SDL_HasProperty
|
|
|
469 * \sa SDL_SetFloatProperty
|
|
|
470 */
|
|
|
471 extern SDL_DECLSPEC float SDLCALL SDL_GetFloatProperty(SDL_PropertiesID props, const char *name, float default_value);
|
|
|
472
|
|
|
473 /**
|
|
|
474 * Get a boolean property from a group of properties.
|
|
|
475 *
|
|
|
476 * You can use SDL_GetPropertyType() to query whether the property exists and
|
|
|
477 * is a boolean property.
|
|
|
478 *
|
|
|
479 * \param props the properties to query.
|
|
|
480 * \param name the name of the property to query.
|
|
|
481 * \param default_value the default value of the property.
|
|
|
482 * \returns the value of the property, or `default_value` if it is not set or
|
|
|
483 * not a boolean property.
|
|
|
484 *
|
|
|
485 * \threadsafety It is safe to call this function from any thread.
|
|
|
486 *
|
|
|
487 * \since This function is available since SDL 3.2.0.
|
|
|
488 *
|
|
|
489 * \sa SDL_GetPropertyType
|
|
|
490 * \sa SDL_HasProperty
|
|
|
491 * \sa SDL_SetBooleanProperty
|
|
|
492 */
|
|
|
493 extern SDL_DECLSPEC bool SDLCALL SDL_GetBooleanProperty(SDL_PropertiesID props, const char *name, bool default_value);
|
|
|
494
|
|
|
495 /**
|
|
|
496 * Clear a property from a group of properties.
|
|
|
497 *
|
|
|
498 * \param props the properties to modify.
|
|
|
499 * \param name the name of the property to clear.
|
|
|
500 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
501 * information.
|
|
|
502 *
|
|
|
503 * \threadsafety It is safe to call this function from any thread.
|
|
|
504 *
|
|
|
505 * \since This function is available since SDL 3.2.0.
|
|
|
506 */
|
|
|
507 extern SDL_DECLSPEC bool SDLCALL SDL_ClearProperty(SDL_PropertiesID props, const char *name);
|
|
|
508
|
|
|
509 /**
|
|
|
510 * A callback used to enumerate all the properties in a group of properties.
|
|
|
511 *
|
|
|
512 * This callback is called from SDL_EnumerateProperties(), and is called once
|
|
|
513 * per property in the set.
|
|
|
514 *
|
|
|
515 * \param userdata an app-defined pointer passed to the callback.
|
|
|
516 * \param props the SDL_PropertiesID that is being enumerated.
|
|
|
517 * \param name the next property name in the enumeration.
|
|
|
518 *
|
|
|
519 * \threadsafety SDL_EnumerateProperties holds a lock on `props` during this
|
|
|
520 * callback.
|
|
|
521 *
|
|
|
522 * \since This datatype is available since SDL 3.2.0.
|
|
|
523 *
|
|
|
524 * \sa SDL_EnumerateProperties
|
|
|
525 */
|
|
|
526 typedef void (SDLCALL *SDL_EnumeratePropertiesCallback)(void *userdata, SDL_PropertiesID props, const char *name);
|
|
|
527
|
|
|
528 /**
|
|
|
529 * Enumerate the properties contained in a group of properties.
|
|
|
530 *
|
|
|
531 * The callback function is called for each property in the group of
|
|
|
532 * properties. The properties are locked during enumeration.
|
|
|
533 *
|
|
|
534 * \param props the properties to query.
|
|
|
535 * \param callback the function to call for each property.
|
|
|
536 * \param userdata a pointer that is passed to `callback`.
|
|
|
537 * \returns true on success or false on failure; call SDL_GetError() for more
|
|
|
538 * information.
|
|
|
539 *
|
|
|
540 * \threadsafety It is safe to call this function from any thread.
|
|
|
541 *
|
|
|
542 * \since This function is available since SDL 3.2.0.
|
|
|
543 */
|
|
|
544 extern SDL_DECLSPEC bool SDLCALL SDL_EnumerateProperties(SDL_PropertiesID props, SDL_EnumeratePropertiesCallback callback, void *userdata);
|
|
|
545
|
|
|
546 /**
|
|
|
547 * Destroy a group of properties.
|
|
|
548 *
|
|
|
549 * All properties are deleted and their cleanup functions will be called, if
|
|
|
550 * any.
|
|
|
551 *
|
|
|
552 * \param props the properties to destroy.
|
|
|
553 *
|
|
|
554 * \threadsafety This function should not be called while these properties are
|
|
|
555 * locked or other threads might be setting or getting values
|
|
|
556 * from these properties.
|
|
|
557 *
|
|
|
558 * \since This function is available since SDL 3.2.0.
|
|
|
559 *
|
|
|
560 * \sa SDL_CreateProperties
|
|
|
561 */
|
|
|
562 extern SDL_DECLSPEC void SDLCALL SDL_DestroyProperties(SDL_PropertiesID props);
|
|
|
563
|
|
|
564 /* Ends C function definitions when using C++ */
|
|
|
565 #ifdef __cplusplus
|
|
|
566 }
|
|
|
567 #endif
|
|
|
568 #include <SDL3/SDL_close_code.h>
|
|
|
569
|
|
|
570 #endif /* SDL_properties_h_ */
|