aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2012-01-13 02:29:37 +0000
committerDavid Robillard <d@drobilla.net>2012-01-13 02:29:37 +0000
commit57c15c275d2af380802f6070504c7d6e33cf6e4b (patch)
treea81d353aa9559f2f70263d4dc33a5e3b02ee0613
parent2a51057367d2ac39988cf97635975868062a8475 (diff)
downloadlv2-57c15c275d2af380802f6070504c7d6e33cf6e4b.tar.xz
Add log extension
-rw-r--r--Doxyfile1
l---------lv2/ns/ext/log/ext.pc.in1
-rw-r--r--lv2/ns/ext/log/log.h91
-rw-r--r--lv2/ns/ext/log/log.ttl74
-rw-r--r--lv2/ns/ext/log/manifest.ttl9
l---------lv2/ns/ext/log/waf1
l---------lv2/ns/ext/log/wscript1
7 files changed, 178 insertions, 0 deletions
diff --git a/Doxyfile b/Doxyfile
index 985ad78..91582ec 100644
--- a/Doxyfile
+++ b/Doxyfile
@@ -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