SDL_properties.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. /*
  2. Simple DiretMedia Layer
  3. Copyright (C) 1997-2023 Sam Lantinga <[email protected]>
  4. This software is provided 'as-is', without any express or implied
  5. warranty. In no event will the authors be held liable for any damages
  6. arising from the use of this software.
  7. Permission is granted to anyone to use this software for any purpose,
  8. including commercial applications, and to alter it and redistribute it
  9. freely, subject to the following restrictions:
  10. 1. The origin of this software must not be misrepresented; you must not
  11. claim that you wrote the original software. If you use this software
  12. in a product, an acknowledgment in the product documentation would be
  13. appreciated but is not required.
  14. 2. Altered source versions must be plainly marked as such, and must not be
  15. misrepresented as being the original software.
  16. 3. This notice may not be removed or altered from any source distribution.
  17. */
  18. /**
  19. * \file SDL_properties.h
  20. *
  21. * \brief Header file for SDL properties.
  22. */
  23. #ifndef SDL_properties_h_
  24. #define SDL_properties_h_
  25. #include <SDL3/SDL_begin_code.h>
  26. /* Set up for C function definitions, even when using C++ */
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30. /**
  31. * SDL properties ID
  32. */
  33. typedef Uint32 SDL_PropertiesID;
  34. /**
  35. * Create a set of properties
  36. *
  37. * \returns an ID for a new set of properties, or 0 on failure; call SDL_GetError() for more information.
  38. *
  39. * \since This function is available since SDL 3.0.0.
  40. *
  41. * \sa SDL_DestroyProperties
  42. */
  43. extern DECLSPEC SDL_PropertiesID SDLCALL SDL_CreateProperties(void);
  44. /**
  45. * Lock a set of properties
  46. *
  47. * Obtain a multi-threaded lock for these properties. Other threads will wait while trying to lock these properties until they are unlocked. Properties must be unlocked before they are destroyed.
  48. *
  49. * The lock is automatically taken when setting individual properties, this function is only needed when you want to set several properties atomically or want to guarantee that properties being queried aren't freed in another thread.
  50. *
  51. * \param props the properties to lock
  52. *
  53. * \returns 0 on success or a negative error code on failure; call
  54. * SDL_GetError() for more information.
  55. *
  56. * \since This function is available since SDL 3.0.0.
  57. *
  58. * \sa SDL_UnlockProperties
  59. */
  60. extern DECLSPEC int SDLCALL SDL_LockProperties(SDL_PropertiesID props);
  61. /**
  62. * Unlock a set of properties
  63. *
  64. * \param props the properties to unlock
  65. *
  66. * \since This function is available since SDL 3.0.0.
  67. *
  68. * \sa SDL_LockProperties
  69. */
  70. extern DECLSPEC void SDLCALL SDL_UnlockProperties(SDL_PropertiesID props);
  71. /**
  72. * Set a property on a set of properties
  73. *
  74. * \param props the properties to modify
  75. * \param name the name of the property to modify
  76. * \param value the new value of the property, or NULL to delete the property
  77. * \param cleanup the function to call when this property is deleted, or NULL if no cleanup is necessary
  78. * \param userdata a pointer that is passed to the cleanup function
  79. *
  80. * \returns 0 on success or a negative error code on failure; call
  81. * SDL_GetError() for more information.
  82. *
  83. * \since This function is available since SDL 3.0.0.
  84. *
  85. * \sa SDL_GetProperty
  86. */
  87. extern DECLSPEC int SDLCALL SDL_SetProperty(SDL_PropertiesID props, const char *name, void *value, void (SDLCALL *cleanup)(void *userdata, void *value), void *userdata);
  88. /**
  89. * Get a property on a set of properties
  90. *
  91. * \param props the properties to query
  92. * \param name the name of the property to query
  93. *
  94. * \returns the value of the property, or NULL if it is not set.
  95. *
  96. * \since This function is available since SDL 3.0.0.
  97. *
  98. * \sa SDL_SetProperty
  99. */
  100. extern DECLSPEC void *SDLCALL SDL_GetProperty(SDL_PropertiesID props, const char *name);
  101. /**
  102. * Clear a property on a set of properties
  103. *
  104. * \param props the properties to modify
  105. * \param name the name of the property to clear
  106. *
  107. * \returns 0 on success or a negative error code on failure; call
  108. * SDL_GetError() for more information.
  109. *
  110. * \since This function is available since SDL 3.0.0.
  111. *
  112. * \sa SDL_GetProperty
  113. */
  114. extern DECLSPEC int SDLCALL SDL_ClearProperty(SDL_PropertiesID props, const char *name);
  115. /**
  116. * Destroy a set of properties
  117. *
  118. * All properties are deleted and their cleanup functions will be called, if any. The set of properties must be unlocked when it is destroyed.
  119. *
  120. * \param props the properties to destroy
  121. *
  122. * \since This function is available since SDL 3.0.0.
  123. *
  124. * \sa SDL_CreateProperties
  125. */
  126. extern DECLSPEC void SDLCALL SDL_DestroyProperties(SDL_PropertiesID props);
  127. /* Ends C function definitions when using C++ */
  128. #ifdef __cplusplus
  129. }
  130. #endif
  131. #include <SDL3/SDL_close_code.h>
  132. #endif /* SDL_properties_h_ */