diff options
Diffstat (limited to 'lv2/log')
-rw-r--r-- | lv2/log/log.h | 113 | ||||
-rw-r--r-- | lv2/log/log.meta.ttl | 126 | ||||
-rw-r--r-- | lv2/log/log.ttl | 49 | ||||
-rw-r--r-- | lv2/log/logger.h | 157 | ||||
-rw-r--r-- | lv2/log/manifest.ttl | 9 | ||||
-rw-r--r-- | lv2/log/meson.build | 41 |
6 files changed, 0 insertions, 495 deletions
diff --git a/lv2/log/log.h b/lv2/log/log.h deleted file mode 100644 index cc62bef..0000000 --- a/lv2/log/log.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - Copyright 2012-2016 David Robillard <d@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. -*/ - -#ifndef LV2_LOG_H -#define LV2_LOG_H - -/** - @defgroup log Log - @ingroup lv2 - - Interface for plugins to log via the host. - - See <http://lv2plug.in/ns/ext/log> for details. - - @{ -*/ - -// clang-format off - -#define LV2_LOG_URI "http://lv2plug.in/ns/ext/log" ///< http://lv2plug.in/ns/ext/log -#define LV2_LOG_PREFIX LV2_LOG_URI "#" ///< http://lv2plug.in/ns/ext/log# - -#define LV2_LOG__Entry LV2_LOG_PREFIX "Entry" ///< http://lv2plug.in/ns/ext/log#Entry -#define LV2_LOG__Error LV2_LOG_PREFIX "Error" ///< http://lv2plug.in/ns/ext/log#Error -#define LV2_LOG__Note LV2_LOG_PREFIX "Note" ///< http://lv2plug.in/ns/ext/log#Note -#define LV2_LOG__Trace LV2_LOG_PREFIX "Trace" ///< http://lv2plug.in/ns/ext/log#Trace -#define LV2_LOG__Warning LV2_LOG_PREFIX "Warning" ///< http://lv2plug.in/ns/ext/log#Warning -#define LV2_LOG__log LV2_LOG_PREFIX "log" ///< http://lv2plug.in/ns/ext/log#log - -// clang-format on - -#include "lv2/urid/urid.h" - -#include <stdarg.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** @cond */ -#ifdef __GNUC__ -/** Allow type checking of printf-like functions. */ -# define LV2_LOG_FUNC(fmt, arg1) __attribute__((format(printf, fmt, arg1))) -#else -# define LV2_LOG_FUNC(fmt, arg1) -#endif -/** @endcond */ - -/** - Opaque data to host data for LV2_Log_Log. -*/ -typedef void* LV2_Log_Handle; - -/** - Log feature (LV2_LOG__log) -*/ -typedef struct { - /** - Opaque pointer to host data. - - This MUST be passed to methods in this struct whenever they are called. - Otherwise, it must not be interpreted in any way. - */ - LV2_Log_Handle handle; - - /** - Log a message, passing format parameters directly. - - The API of this function matches that of the standard C printf function, - except for the addition of the first two parameters. This function may - be called from any non-realtime context, or from any context if `type` - is @ref LV2_LOG__Trace. - */ - LV2_LOG_FUNC(3, 4) - int (*printf)(LV2_Log_Handle handle, LV2_URID type, const char* fmt, ...); - - /** - Log a message, passing format parameters in a va_list. - - The API of this function matches that of the standard C vprintf - function, except for the addition of the first two parameters. This - function may be called from any non-realtime context, or from any - context if `type` is @ref LV2_LOG__Trace. - */ - LV2_LOG_FUNC(3, 0) - int (*vprintf)(LV2_Log_Handle handle, - LV2_URID type, - const char* fmt, - va_list ap); -} LV2_Log_Log; - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/** - @} -*/ - -#endif /* LV2_LOG_H */ diff --git a/lv2/log/log.meta.ttl b/lv2/log/log.meta.ttl deleted file mode 100644 index 87cff43..0000000 --- a/lv2/log/log.meta.ttl +++ /dev/null @@ -1,126 +0,0 @@ -@prefix dcs: <http://ontologi.es/doap-changeset#> . -@prefix doap: <http://usefulinc.com/ns/doap#> . -@prefix foaf: <http://xmlns.com/foaf/0.1/> . -@prefix log: <http://lv2plug.in/ns/ext/log#> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/ns/ext/log> - a doap:Project ; - doap:name "LV2 Log" ; - doap:shortdesc "A feature for writing log messages." ; - doap:created "2012-01-12" ; - doap:developer <http://drobilla.net/drobilla#me> ; - doap:release [ - doap:revision "2.4" ; - doap:created "2016-07-30" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.14.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add lv2_log_logger_set_map() for changing the URI map of an existing logger." - ] - ] - ] , [ - doap:revision "2.2" ; - doap:created "2014-01-04" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.8.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add missing include string.h to logger.h for memset." - ] - ] - ] , [ - doap:revision "2.0" ; - doap:created "2013-01-08" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.4.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Add logger convenience API." - ] - ] - ] , [ - doap:revision "1.0" ; - doap:created "2012-04-17" ; - doap:file-release <http://lv2plug.in/spec/lv2-1.0.0.tar.bz2> ; - dcs:blame <http://drobilla.net/drobilla#me> ; - dcs:changeset [ - dcs:item [ - rdfs:label "Initial release." - ] - ] - ] ; - lv2:documentation """ - -This extension defines a feature, log:log, which allows plugins to print log -messages with an API similar to the standard C `printf` function. This allows, -for example, plugin logs to be nicely presented to the user in a graphical user -interface. - -Different log levels are defined by URI and passed as an LV2_URID. This -extensions defines standard levels which are expected to be understood by all -implementations and should be sufficient in most cases, but advanced -implementations may define and use additional levels to suit their needs. - -"""^^lv2:Markdown . - -log:Entry - a rdfs:Class ; - rdfs:label "Log Entry" ; - lv2:documentation """ - -Subclasses of this are passed as the `type` parameter to LV2_Log_Log methods to -describe the nature of the log entry. - -"""^^lv2:Markdown . - -log:Error - lv2:documentation """ - -An error should only be posted when a serious unexpected error occurs, and -should be actively shown to the user by the host. - -"""^^lv2:Markdown . - -log:Note - lv2:documentation """ - -A note records some useful piece of information, but may be ignored. The host -should provide passive access to note entries to the user. - -"""^^lv2:Markdown . - -log:Warning - lv2:documentation """ - -A warning should be posted when an unexpected, but non-critical, error occurs. -The host should provide passive access to warnings entries to the user, but may -also choose to actively show them. - -"""^^lv2:Markdown . - -log:Trace - lv2:documentation """ - -A trace should not be displayed during normal operation, but the host may -implement an option to display them for debugging purposes. - -This entry type is special in that one may be posted in a real-time thread. It -is assumed that if debug tracing is enabled, real-time performance is not a -concern. However, the host MUST guarantee that posting a trace _is_ real-time -safe if debug tracing is not enabled (for example, by simply ignoring the call -as early as possible). - -"""^^lv2:Markdown . - -log:log - lv2:documentation """ - -A feature which plugins may use to log messages. To support this feature, -the host must pass an LV2_Feature to LV2_Descriptor::instantiate() with URI -LV2_LOG__log and data pointed to an instance of LV2_Log_Log. - -"""^^lv2:Markdown . - diff --git a/lv2/log/log.ttl b/lv2/log/log.ttl deleted file mode 100644 index a8c4236..0000000 --- a/lv2/log/log.ttl +++ /dev/null @@ -1,49 +0,0 @@ -@prefix log: <http://lv2plug.in/ns/ext/log#> . -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix owl: <http://www.w3.org/2002/07/owl#> . -@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . -@prefix xsd: <http://www.w3.org/2001/XMLSchema#> . - -<http://lv2plug.in/ns/ext/log> - a owl:Ontology ; - rdfs:label "LV2 Log" ; - rdfs:comment "A feature for writing log messages." ; - rdfs:seeAlso <log.h> , - <log.meta.ttl> ; - owl:imports <http://lv2plug.in/ns/lv2core> . - -log:Entry - a rdfs:Class ; - rdfs:label "Entry" ; - rdfs:comment "A log entry." . - -log:Error - a rdfs:Class ; - rdfs:label "Error" ; - rdfs:subClassOf log:Entry ; - rdfs:comment "An error message." . - -log:Note - a rdfs:Class ; - rdfs:label "Note" ; - rdfs:subClassOf log:Entry ; - rdfs:comment "An informative message." . - -log:Warning - a rdfs:Class ; - rdfs:label "Warning" ; - rdfs:subClassOf log:Entry ; - rdfs:comment "A warning message." . - -log:Trace - a rdfs:Class ; - rdfs:label "Trace" ; - rdfs:subClassOf log:Entry ; - rdfs:comment "A debugging trace message." . - -log:log - a lv2:Feature ; - rdfs:label "log" ; - rdfs:comment "Logging feature." . - diff --git a/lv2/log/logger.h b/lv2/log/logger.h deleted file mode 100644 index d6919a2..0000000 --- a/lv2/log/logger.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - Copyright 2012-2016 David Robillard <d@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. -*/ - -#ifndef LV2_ATOM_LOGGER_H -#define LV2_ATOM_LOGGER_H - -/** - @defgroup logger Logger - @ingroup log - - Convenience API for easy logging in plugin code. This API provides simple - wrappers for logging from a plugin, which automatically fall back to - printing to stderr if host support is unavailable. - - @{ -*/ - -#include "lv2/log/log.h" -#include "lv2/urid/urid.h" - -#include <stdarg.h> -#include <stdio.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/** - Logger convenience API state. -*/ -typedef struct { - LV2_Log_Log* log; - - LV2_URID Error; - LV2_URID Note; - LV2_URID Trace; - LV2_URID Warning; -} LV2_Log_Logger; - -/** - Set `map` as the URI map for `logger`. - - This affects the message type URIDs (Error, Warning, etc) which are passed - to the log's print functions. -*/ -static inline void -lv2_log_logger_set_map(LV2_Log_Logger* logger, LV2_URID_Map* map) -{ - if (map) { - logger->Error = map->map(map->handle, LV2_LOG__Error); - logger->Note = map->map(map->handle, LV2_LOG__Note); - logger->Trace = map->map(map->handle, LV2_LOG__Trace); - logger->Warning = map->map(map->handle, LV2_LOG__Warning); - } else { - logger->Error = logger->Note = logger->Trace = logger->Warning = 0; - } -} - -/** - Initialise `logger`. - - URIs will be mapped using `map` and stored, a reference to `map` itself is - not held. Both `map` and `log` may be NULL when unsupported by the host, - in which case the implementation will fall back to printing to stderr. -*/ -static inline void -lv2_log_logger_init(LV2_Log_Logger* logger, LV2_URID_Map* map, LV2_Log_Log* log) -{ - logger->log = log; - lv2_log_logger_set_map(logger, map); -} - -/** - Log a message to the host, or stderr if support is unavailable. -*/ -LV2_LOG_FUNC(3, 0) -static inline int -lv2_log_vprintf(LV2_Log_Logger* logger, - LV2_URID type, - const char* fmt, - va_list args) -{ - return ((logger && logger->log) - ? logger->log->vprintf(logger->log->handle, type, fmt, args) - : vfprintf(stderr, fmt, args)); -} - -/** Log an error via lv2_log_vprintf(). */ -LV2_LOG_FUNC(2, 3) -static inline int -lv2_log_error(LV2_Log_Logger* logger, const char* fmt, ...) -{ - va_list args; - va_start(args, fmt); - const int ret = lv2_log_vprintf(logger, logger->Error, fmt, args); - va_end(args); - return ret; -} - -/** Log a note via lv2_log_vprintf(). */ -LV2_LOG_FUNC(2, 3) -static inline int -lv2_log_note(LV2_Log_Logger* logger, const char* fmt, ...) -{ - va_list args; - va_start(args, fmt); - const int ret = lv2_log_vprintf(logger, logger->Note, fmt, args); - va_end(args); - return ret; -} - -/** Log a trace via lv2_log_vprintf(). */ -LV2_LOG_FUNC(2, 3) -static inline int -lv2_log_trace(LV2_Log_Logger* logger, const char* fmt, ...) -{ - va_list args; - va_start(args, fmt); - const int ret = lv2_log_vprintf(logger, logger->Trace, fmt, args); - va_end(args); - return ret; -} - -/** Log a warning via lv2_log_vprintf(). */ -LV2_LOG_FUNC(2, 3) -static inline int -lv2_log_warning(LV2_Log_Logger* logger, const char* fmt, ...) -{ - va_list args; - va_start(args, fmt); - const int ret = lv2_log_vprintf(logger, logger->Warning, fmt, args); - va_end(args); - return ret; -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -/** - @} -*/ - -#endif /* LV2_LOG_LOGGER_H */ diff --git a/lv2/log/manifest.ttl b/lv2/log/manifest.ttl deleted file mode 100644 index bcaeff3..0000000 --- a/lv2/log/manifest.ttl +++ /dev/null @@ -1,9 +0,0 @@ -@prefix lv2: <http://lv2plug.in/ns/lv2core#> . -@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . - -<http://lv2plug.in/ns/ext/log> - a lv2:Specification ; - lv2:minorVersion 2 ; - lv2:microVersion 4 ; - rdfs:seeAlso <log.ttl> . - diff --git a/lv2/log/meson.build b/lv2/log/meson.build deleted file mode 100644 index 9b13db0..0000000 --- a/lv2/log/meson.build +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright 2022 David Robillard <d@drobilla.net> -# SPDX-License-Identifier: CC0-1.0 OR ISC - -name = 'log' -path = 'ns' / 'ext' / 'log' - -log_data = files( - 'log.meta.ttl', - 'log.ttl', - 'manifest.ttl', -) - -headers = files( - 'log.h', - 'logger.h', -) - -# Install specification bundle -install_data(log_data, install_dir: lv2dir / name + '.lv2') -install_headers(headers, subdir: 'lv2' / name) -if get_option('old_headers') - install_headers(headers, subdir: 'lv2' / 'lv2plug.in' / path) -endif - -# Build documentation -if build_docs - lv2_log_docs = custom_target( - name + '.html', - command: lv2specgen_command_prefix + [ - '--docdir=../../html', - '--style-uri=../../aux/style.css', - '@INPUT@', - '@OUTPUT@', - ], - depends: doc_deps, - input: files('log.ttl'), - install: true, - install_dir: lv2_docdir / 'ns' / 'ext', - output: name + '.html', - ) -endif |