Skip to content

Commit af4bc3b

Browse files
authored
Merge pull request #265 from Libvisual/nodiscard
Core: Add LV_NODISCARD for C API functions with non-discardable results.
2 parents 91cf509 + c0f6a3f commit af4bc3b

21 files changed

+115
-89
lines changed

libvisual/libvisual/lv_actor.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -248,11 +248,11 @@ LV_API const char *visual_actor_get_next_by_name_nogl (const char *name);
248248
LV_API const char *visual_actor_get_prev_by_name (const char *name);
249249
LV_API const char *visual_actor_get_next_by_name (const char *name);
250250

251-
LV_API VisActor *visual_actor_new (const char *name);
252-
LV_API int visual_actor_realize (VisActor *actor);
253-
LV_API void visual_actor_run (VisActor *actor, VisAudio *audio);
254-
LV_API void visual_actor_ref (VisActor *actor);
255-
LV_API void visual_actor_unref (VisActor *actor);
251+
LV_NODISCARD LV_API VisActor *visual_actor_new (const char *name);
252+
LV_API int visual_actor_realize (VisActor *actor);
253+
LV_API void visual_actor_run (VisActor *actor, VisAudio *audio);
254+
LV_API void visual_actor_ref (VisActor *actor);
255+
LV_API void visual_actor_unref (VisActor *actor);
256256

257257
LV_API VisSongInfo *visual_actor_get_songinfo (VisActor *actor);
258258
LV_API VisPalette *visual_actor_get_palette (VisActor *actor);

libvisual/libvisual/lv_audio.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,8 @@ struct _VisAudio;
218218

219219
LV_BEGIN_DECLS
220220

221-
LV_API VisAudio *visual_audio_new (void);
221+
LV_NODISCARD LV_API VisAudio *visual_audio_new (void);
222+
222223
LV_API void visual_audio_free (VisAudio *audio);
223224

224225
LV_API int visual_audio_get_sample (VisAudio *audio, VisBuffer *buffer, const char *channelid);

libvisual/libvisual/lv_bin.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,9 @@ struct _VisBin;
121121

122122
LV_BEGIN_DECLS
123123

124-
LV_API VisBin *visual_bin_new (void);
125-
LV_API void visual_bin_free (VisBin *bin);
124+
LV_NODISCARD LV_API VisBin *visual_bin_new (void);
125+
126+
LV_API void visual_bin_free (VisBin *bin);
126127

127128
LV_API void visual_bin_realize (VisBin *bin);
128129

libvisual/libvisual/lv_buffer.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@ struct _VisBuffer;
250250

251251
LV_BEGIN_DECLS
252252

253-
LV_API VisBuffer *visual_buffer_new_wrap_data (void *data, visual_size_t size, int own);
254-
LV_API VisBuffer *visual_buffer_new_allocate (visual_size_t size);
255-
LV_API VisBuffer *visual_buffer_clone (VisBuffer *source);
253+
LV_NODISCARD LV_API VisBuffer *visual_buffer_new_wrap_data (void *data, visual_size_t size, int own);
254+
LV_NODISCARD LV_API VisBuffer *visual_buffer_new_allocate (visual_size_t size);
255+
LV_NODISCARD LV_API VisBuffer *visual_buffer_clone (VisBuffer *source);
256256

257257
LV_API void *visual_buffer_get_data (VisBuffer *buffer);
258258
LV_API void *visual_buffer_get_data_offset (VisBuffer *buffer, visual_size_t offset);

libvisual/libvisual/lv_color.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,9 +147,10 @@ struct _VisColor
147147
};
148148
#endif
149149

150-
LV_API VisColor *visual_color_new (void);
151-
LV_API VisColor *visual_color_clone (VisColor *color);
152-
LV_API void visual_color_free (VisColor *color);
150+
LV_NODISCARD LV_API VisColor *visual_color_new (void);
151+
LV_NODISCARD LV_API VisColor *visual_color_clone (VisColor *color);
152+
153+
LV_API void visual_color_free (VisColor *color);
153154

154155
LV_API int visual_color_compare (VisColor *src1, VisColor *src2);
155156

libvisual/libvisual/lv_defines.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,8 +115,19 @@
115115
#define LV_PLUGIN_EXPORT LV_DLL_EXPORT
116116

117117
/* Utility macros */
118+
118119
#ifdef _MSC_VER
119120
#define __PRETTY_FUNCTION__ __FUNCTION__
120121
#endif
121122

123+
#if __cplusplus >= 201703L
124+
#define LV_NODISCARD [[nodiscard]]
125+
#elif defined(_MSC_VER) && _MSC_VER >= 1700
126+
#define LV_NODISCARD _Check_return_
127+
#elif defined(__GNUC__) && __GNUC__ >= 4
128+
#define LV_NODISCARD __attribute__ ((warn_unused_result))
129+
#else
130+
#define LV_NODISCARD
131+
#endif
132+
122133
#endif /* _LV_DEFINES_H */

libvisual/libvisual/lv_event.h

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ LV_BEGIN_DECLS
237237
* @param keymod Key modifier used
238238
* @param state State of key i.e. pressed or released
239239
*/
240-
LV_API VisEvent *visual_event_new_keyboard (VisKey keysym, VisKeyMod keymod, VisKeyState state);
240+
LV_NODISCARD LV_API VisEvent *visual_event_new_keyboard (VisKey keysym, VisKeyMod keymod, VisKeyState state);
241241

242242
/**
243243
* Creates a new mouse movement event.
@@ -247,7 +247,7 @@ LV_API VisEvent *visual_event_new_keyboard (VisKey keysym, VisKeyMod keymod, Vis
247247
*
248248
* @return New event object
249249
*/
250-
LV_API VisEvent *visual_event_new_mousemotion (int dx, int dy);
250+
LV_NODISCARD LV_API VisEvent *visual_event_new_mousemotion (int dx, int dy);
251251

252252
/**
253253
* Creates a new mouse button event
@@ -259,7 +259,7 @@ LV_API VisEvent *visual_event_new_mousemotion (int dx, int dy);
259259
*
260260
* @return New event object
261261
*/
262-
LV_API VisEvent *visual_event_new_mousebutton (int button, VisMouseState state, int x, int y);
262+
LV_NODISCARD LV_API VisEvent *visual_event_new_mousebutton (int button, VisMouseState state, int x, int y);
263263

264264
/**
265265
* Creates a resize event.
@@ -269,7 +269,7 @@ LV_API VisEvent *visual_event_new_mousebutton (int button, VisMouseState state,
269269
*
270270
* @return New event object
271271
*/
272-
LV_API VisEvent *visual_event_new_resize (int width, int height);
272+
LV_NODISCARD LV_API VisEvent *visual_event_new_resize (int width, int height);
273273

274274
/**
275275
* Creates a new song change event.
@@ -278,7 +278,7 @@ LV_API VisEvent *visual_event_new_resize (int width, int height);
278278
*
279279
* @return New event object
280280
*/
281-
LV_API VisEvent *visual_event_new_newsong (VisSongInfo *songinfo);
281+
LV_NODISCARD LV_API VisEvent *visual_event_new_newsong (VisSongInfo *songinfo);
282282

283283
/**
284284
* Creates a new parameter change event.
@@ -287,14 +287,14 @@ LV_API VisEvent *visual_event_new_newsong (VisSongInfo *songinfo);
287287
*
288288
* @return New event object
289289
*/
290-
LV_API VisEvent *visual_event_new_param (void *param);
290+
LV_NODISCARD LV_API VisEvent *visual_event_new_param (void *param);
291291

292292
/**
293293
* Creates a quit event
294294
*
295295
* @return New event object
296296
*/
297-
LV_API VisEvent *visual_event_new_quit (void);
297+
LV_NODISCARD LV_API VisEvent *visual_event_new_quit (void);
298298

299299
/**
300300
* Creates a new visibility event.
@@ -303,7 +303,7 @@ LV_API VisEvent *visual_event_new_quit (void);
303303
*
304304
* @return New event object
305305
*/
306-
LV_API VisEvent *visual_event_new_visibility (int is_visible);
306+
LV_NODISCARD LV_API VisEvent *visual_event_new_visibility (int is_visible);
307307

308308
/**
309309
* Copies a VisEvent.
@@ -329,10 +329,11 @@ LV_API void visual_event_free (VisEvent* event);
329329
*
330330
* @return New event object
331331
*/
332-
LV_API VisEvent *visual_event_new_custom (int eid, int param_int, void *param_ptr);
332+
LV_NODISCARD LV_API VisEvent *visual_event_new_custom (int eid, int param_int, void *param_ptr);
333333

334-
LV_API VisEventQueue *visual_event_queue_new (void);
335-
LV_API void visual_event_queue_free (VisEventQueue *eventqueue);
334+
LV_NODISCARD LV_API VisEventQueue *visual_event_queue_new (void);
335+
336+
LV_API void visual_event_queue_free (VisEventQueue *eventqueue);
336337

337338
LV_API void visual_event_queue_add (VisEventQueue *eventqueue, VisEvent *event);
338339
LV_API int visual_event_queue_poll (VisEventQueue *eventqueue, VisEvent *event);

libvisual/libvisual/lv_fourier.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,8 +133,9 @@ struct _VisDFT;
133133

134134
LV_BEGIN_DECLS
135135

136-
LV_API VisDFT *visual_dft_new (unsigned int samples_out, unsigned int samples_in);
137-
LV_API void visual_dft_free (VisDFT *dft);
136+
LV_NODISCARD LV_API VisDFT *visual_dft_new (unsigned int samples_out, unsigned int samples_in);
137+
138+
LV_API void visual_dft_free (VisDFT *dft);
138139

139140
LV_API void visual_dft_perform (VisDFT *dft, float *output, float const *input);
140141

libvisual/libvisual/lv_input.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -179,11 +179,12 @@ struct _VisInputPlugin {
179179

180180
LV_BEGIN_DECLS
181181

182-
LV_API VisInput *visual_input_new (const char *name);
183-
LV_API void visual_input_ref (VisInput *input);
184-
LV_API void visual_input_unref (VisInput *input);
185-
LV_API int visual_input_realize (VisInput *input);
186-
LV_API int visual_input_run (VisInput *input);
182+
LV_NODISCARD LV_API VisInput *visual_input_new (const char *name);
183+
184+
LV_API void visual_input_ref (VisInput *input);
185+
LV_API void visual_input_unref (VisInput *input);
186+
LV_API int visual_input_realize (VisInput *input);
187+
LV_API int visual_input_run (VisInput *input);
187188

188189
LV_API VisPluginData *visual_input_get_plugin (VisInput *input);
189190
LV_API VisAudio *visual_input_get_audio (VisInput *audio);

libvisual/libvisual/lv_mem.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ LV_BEGIN_DECLS
9898
*
9999
* @return Pointer to newly allocated memory block, or NULL on failure
100100
*/
101-
LV_API void *visual_mem_malloc (visual_size_t size) LV_ATTR_MALLOC;
101+
LV_NODISCARD LV_API void *visual_mem_malloc (visual_size_t size) LV_ATTR_MALLOC;
102102

103103
/**
104104
* Allocates a block of memory with its content zeroed.
@@ -108,7 +108,7 @@ LV_API void *visual_mem_malloc (visual_size_t size) LV_ATTR_MALLOC;
108108
* @return Pointer to newly allocated memory block with its contents
109109
* zeroed, or NULL on failure
110110
*/
111-
LV_API void *visual_mem_malloc0 (visual_size_t size) LV_ATTR_MALLOC;
111+
LV_NODISCARD LV_API void *visual_mem_malloc0 (visual_size_t size) LV_ATTR_MALLOC;
112112

113113
/**
114114
* Reallocates memory, can be used to grow a buffer.
@@ -118,7 +118,7 @@ LV_API void *visual_mem_malloc0 (visual_size_t size) LV_ATTR_MALLOC;
118118
*
119119
* @return pointer to the reallocated memory block, or NULL on failure
120120
*/
121-
LV_API void *visual_mem_realloc (void *ptr, visual_size_t size) LV_ATTR_MALLOC;
121+
LV_NODISCARD LV_API void *visual_mem_realloc (void *ptr, visual_size_t size) LV_ATTR_MALLOC;
122122

123123
/**
124124
* Frees a memory block allocated by visual_mem_malloc() and visual_mem_realloc().
@@ -139,7 +139,7 @@ LV_API void visual_mem_free (void *ptr);
139139
*
140140
* @note Memory allocated by this function must be fred by visual_mem_free_aligned().
141141
*/
142-
LV_API void *visual_mem_malloc_aligned (visual_size_t size, visual_size_t alignment);
142+
LV_NODISCARD LV_API void *visual_mem_malloc_aligned (visual_size_t size, visual_size_t alignment);
143143

144144
/**
145145
* Frees a memory block allocated by visual_mem_alloc_aligned().

0 commit comments

Comments
 (0)