diff options
Diffstat (limited to 'lv2/lv2plug.in/ns/lv2core/lv2_util.h')
-rw-r--r-- | lv2/lv2plug.in/ns/lv2core/lv2_util.h | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/lv2/lv2plug.in/ns/lv2core/lv2_util.h b/lv2/lv2plug.in/ns/lv2core/lv2_util.h deleted file mode 100644 index 561e201..0000000 --- a/lv2/lv2plug.in/ns/lv2core/lv2_util.h +++ /dev/null @@ -1,103 +0,0 @@ -/* - Copyright 2016 David Robillard <http://drobilla.net> - - Permission to use, copy, modify, and/or distribute this software for any - purpose with or without fee is hereby granted, provided that the above - copyright notice and this permission notice appear in all copies. - - THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES - WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF - MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR - ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN - ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF - OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -*/ - -/** - @defgroup util Utilities - @ingroup lv2core - @{ -*/ - -#include <string.h> - -#include "lv2/lv2plug.in/ns/lv2core/lv2.h" - -#ifdef __cplusplus -extern "C" { -#else -# include <stdbool.h> -#endif - -/** - Return the data for a feature in a features array. - - If the feature is not found, NULL is returned. Note that this function is - only useful for features with data, and can not detect features that are - present but have NULL data. -*/ -static inline void* -lv2_features_data(const LV2_Feature*const* features, - const char* const uri) -{ - if (features) { - for (const LV2_Feature*const* f = features; *f; ++f) { - if (!strcmp(uri, (*f)->URI)) { - return (*f)->data; - } - } - } - return NULL; -} - -/** - Query a features array. - - This function allows getting several features in one call, and detect - missing required features, with the same caveat of lv2_features_data(). - - The arguments should be a series of const char* uri, void** data, bool - required, terminated by a NULL URI. The data pointers MUST be initialized - to NULL. For example: - - @code - LV2_URID_Log* log = NULL; - LV2_URID_Map* map = NULL; - const char* missing = lv2_features_query( - features, - LV2_LOG__log, &log, false, - LV2_URID__map, &map, true, - NULL); - @endcode - - @return NULL on success, otherwise the URI of this missing feature. -*/ -static inline const char* -lv2_features_query(const LV2_Feature* const* features, ...) -{ - va_list args; - va_start(args, features); - - const char* uri = NULL; - while ((uri = va_arg(args, const char*))) { - void** data = va_arg(args, void**); - bool required = va_arg(args, int); - - *data = lv2_features_data(features, uri); - if (required && !*data) { - return uri; - } - } - - return NULL; -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/** - @} - @} -*/ |