Tue, 05 Aug 2025 20:00:24 +0200
upgrade to SDL 3
/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * Copyright 2025 Mike Becker. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ #ifndef ASC_UTIL_H #define ASC_UTIL_H #include <cx/string.h> cxmutstr asc_util_gen_name(void *obj); #define asc_util_check_and_set_impl if (*var == new_value) return false; *var = new_value; return true static inline bool asc_util_check_and_set_float(float *var, float new_value) { asc_util_check_and_set_impl; } static inline bool asc_util_check_and_set_int(int *var, int new_value) { asc_util_check_and_set_impl; } static inline bool asc_util_check_and_set_unsigned(unsigned *var, unsigned new_value) { asc_util_check_and_set_impl; } #define asc_util_check_and_set(v, x) _Generic(x, \ float: asc_util_check_and_set_float, \ int: asc_util_check_and_set_int, \ unsigned: asc_util_check_and_set_unsigned)(&(v), x) #endif //ASC_UTIL_H