diff options
author | David Robillard <d@drobilla.net> | 2012-01-13 02:29:37 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2012-01-13 02:29:37 +0000 |
commit | 57c15c275d2af380802f6070504c7d6e33cf6e4b (patch) | |
tree | a81d353aa9559f2f70263d4dc33a5e3b02ee0613 | |
parent | 2a51057367d2ac39988cf97635975868062a8475 (diff) | |
download | lv2-57c15c275d2af380802f6070504c7d6e33cf6e4b.tar.xz |
Add log extension
-rw-r--r-- | Doxyfile | 1 | ||||
l--------- | lv2/ns/ext/log/ext.pc.in | 1 | ||||
-rw-r--r-- | lv2/ns/ext/log/log.h | 91 | ||||
-rw-r--r-- | lv2/ns/ext/log/log.ttl | 74 | ||||
-rw-r--r-- | lv2/ns/ext/log/manifest.ttl | 9 | ||||
l--------- | lv2/ns/ext/log/waf | 1 | ||||
l--------- | lv2/ns/ext/log/wscript | 1 |
7 files changed, 178 insertions, 0 deletions
@@ -576,6 +576,7 @@ INPUT = \ ns/ext/event/event-helpers.h \ ns/ext/event/event.h \ ns/ext/instance-access/instance-access.h \ + ns/ext/log/log.h \ ns/ext/osc/osc-print.h \ ns/ext/osc/osc.h \ ns/ext/pui/pui.h \ diff --git a/lv2/ns/ext/log/ext.pc.in b/lv2/ns/ext/log/ext.pc.in new file mode 120000 index 0000000..82b50df --- /dev/null +++ b/lv2/ns/ext/log/ext.pc.in @@ -0,0 +1 @@ +../../../../ext.pc.in
\ No newline at end of file diff --git a/lv2/ns/ext/log/log.h b/lv2/ns/ext/log/log.h new file mode 100644 index 0000000..c139a27 --- /dev/null +++ b/lv2/ns/ext/log/log.h @@ -0,0 +1,91 @@ +/* + Copyright 2012 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. +*/ + +/** + @file log.h C header for the LV2 Log extension + <http://lv2plug.in/ns/ext/log>. +*/ + +#ifndef LV2_LOG_H +#define LV2_LOG_H + +#define LV2_LOG_URI "http://lv2plug.in/ns/ext/log" +#define LV2_LOG_LOG_URI LV2_LOG_URI "#log" +#define LV2_LOG_ERROR_URI LV2_LOG_URI "#Error" +#define LV2_LOG_INFO_URI LV2_LOG_URI "#Info" +#define LV2_LOG_WARN_URI LV2_LOG_URI "#Warn" + +#include <stdarg.h> + +#include "lv2/lv2plug.in/ns/ext/urid/urid.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#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 +#endif + +/** + Opaque data to host data for LV2_Log_Log. +*/ +typedef void* LV2_Log_Handle; + +/** + Log (http://lv2plug.in/ns/ext/log#log). +*/ +typedef struct _LV2_Log { + /** + Opaque pointer to host data. + + This MUST be passed to methods in this struct henever 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. + */ + LV2_LOG_FUNC(3, 4) + int (*printf)(LV2_Log_Handle handle, + LV2_URID level, + 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. + */ + LV2_LOG_FUNC(3, 0) + int (*vprintf)(LV2_Log_Handle handle, + LV2_URID level, + const char* fmt, + va_list ap); +} LV2_Log_Log; + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* LV2_LOG_H */ diff --git a/lv2/ns/ext/log/log.ttl b/lv2/ns/ext/log/log.ttl new file mode 100644 index 0000000..567333f --- /dev/null +++ b/lv2/ns/ext/log/log.ttl @@ -0,0 +1,74 @@ +# LV2 Log Extension +# Copyright 2012 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. + +@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 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 lv2:Specification ; + doap:name "LV2 Log" ; + doap:shortdesc "A feature for writing log messages." ; + doap:maintainer [ + a foaf:Person ; + foaf:name "David Robillard" ; + foaf:homepage <http://drobilla.net/> ; + rdfs:seeAlso <http://drobilla.net/drobilla.rdf> + ] ; + lv2:documentation """ + +<p>This extension defines a feature, LV2_Log_Log, which allows plugins to print +messages to logs implemented by the host with an API much like the standard C +printf functions. This allows, for example, plugin logs to be nicely presented +to the user in a graphical user interface.</p> + +<p>Different log <q>levels</q> (e.g. <q>error</q> or <q>information</q>) are +defined by URI and passed as an LV2_URID. Thus, the possible number of log +levels is unlimited, but implementations SHOULD use the levels defined in this +extension unless they have a special reason to do otherwise.</p> +""" . + +log:Level + a rdfs:Class ; + lv2:documentation """ +<p>A log level. Subclasses of this class can be passed to LV2_Log_Log methods +to describe the nature of the log message.</p>""" . + +log:Error + a rdfs:Class ; + rdfs:subClassOf log:Level ; + rdfs:comment "An error" . + +log:Info + a rdfs:Class ; + rdfs:subClassOf log:Level ; + rdfs:comment "An informative message" . + +log:Warn + a rdfs:Class ; + rdfs:subClassOf log:Level ; + rdfs:comment "A warning" . + +log:log + a lv2:Feature ; + lv2:documentation """ +<p>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_URI and data pointed to an instance of LV2_Log_Log.</p> +""" . diff --git a/lv2/ns/ext/log/manifest.ttl b/lv2/ns/ext/log/manifest.ttl new file mode 100644 index 0000000..7d00e2e --- /dev/null +++ b/lv2/ns/ext/log/manifest.ttl @@ -0,0 +1,9 @@ +@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 0 ; + lv2:microVersion 1 ; + rdfs:seeAlso <log.ttl> . + diff --git a/lv2/ns/ext/log/waf b/lv2/ns/ext/log/waf new file mode 120000 index 0000000..b955110 --- /dev/null +++ b/lv2/ns/ext/log/waf @@ -0,0 +1 @@ +../../../../waf
\ No newline at end of file diff --git a/lv2/ns/ext/log/wscript b/lv2/ns/ext/log/wscript new file mode 120000 index 0000000..ec20a77 --- /dev/null +++ b/lv2/ns/ext/log/wscript @@ -0,0 +1 @@ +../../../../ext.wscript
\ No newline at end of file |