From 57c15c275d2af380802f6070504c7d6e33cf6e4b Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 13 Jan 2012 02:29:37 +0000 Subject: Add log extension --- lv2/ns/ext/log/ext.pc.in | 1 + lv2/ns/ext/log/log.h | 91 +++++++++++++++++++++++++++++++++++++++++++++ lv2/ns/ext/log/log.ttl | 74 ++++++++++++++++++++++++++++++++++++ lv2/ns/ext/log/manifest.ttl | 9 +++++ lv2/ns/ext/log/waf | 1 + lv2/ns/ext/log/wscript | 1 + 6 files changed, 177 insertions(+) create mode 120000 lv2/ns/ext/log/ext.pc.in create mode 100644 lv2/ns/ext/log/log.h create mode 100644 lv2/ns/ext/log/log.ttl create mode 100644 lv2/ns/ext/log/manifest.ttl create mode 120000 lv2/ns/ext/log/waf create mode 120000 lv2/ns/ext/log/wscript (limited to 'lv2') 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 + + 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 + . +*/ + +#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 + +#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 +# +# 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: . +@prefix foaf: . +@prefix log: . +@prefix lv2: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . + + + 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 ; + rdfs:seeAlso + ] ; + lv2:documentation """ + +

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.

+ +

Different log levels (e.g. error or information) 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.

+""" . + +log:Level + a rdfs:Class ; + lv2:documentation """ +

A log level. Subclasses of this class can be passed to LV2_Log_Log methods +to describe the nature of the log message.

""" . + +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 """ +

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.

+""" . 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: . +@prefix rdfs: . + + + a lv2:Specification ; + lv2:minorVersion 0 ; + lv2:microVersion 1 ; + rdfs:seeAlso . + 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 -- cgit v1.2.1