@@ -0,0 +1,43 @@ | |||
#!/bin/bash | |||
if [ ! -f Makefile ]; then | |||
echo "Needs to be ran from the source root folder" | |||
exit 1 | |||
fi | |||
set -e | |||
cd source/modules | |||
mv lilv/config lilv_config | |||
rm -f */*.in | |||
rm -f */configure | |||
rm -f */configure.ac | |||
rm -f */juce_module_info | |||
rm -f */install | |||
rm -f */readme | |||
rm -rf */config | |||
rm -rf */contrib | |||
rm -rf */doc | |||
rm -rf */lib | |||
rm -rf */msw | |||
rm -rf */tests | |||
rm -f */*/INSTALL | |||
rm -f */*/NEWS | |||
rm -f */*/PACKAGING | |||
rm -f */*/README | |||
rm -f */*/*.in | |||
rm -f */*/*.ttl | |||
rm -f */*/waf | |||
rm -f */*/wscript | |||
rm -rf */*/bindings | |||
rm -rf */*/doc | |||
rm -rf */*/test | |||
rm -rf */*/tests | |||
rm -rf */*/utils | |||
mv lilv_config lilv/config | |||
cd ../.. |
@@ -1,24 +0,0 @@ | |||
{ | |||
"id": "juce_audio_basics", | |||
"name": "JUCE audio and midi data classes", | |||
"version": "2.1.6", | |||
"description": "Classes for audio buffer manipulation, midi message handling, synthesis, etc", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_core", "version": "matching" } ], | |||
"include": "juce_audio_basics.h", | |||
"compile": [ { "file": "juce_audio_basics.cpp", "target": "! xcode" }, | |||
{ "file": "juce_audio_basics.mm", "target": "xcode" } ], | |||
"browse": [ "buffers/*", | |||
"midi/*", | |||
"effects/*", | |||
"sources/*", | |||
"synthesisers/*" ], | |||
"OSXFrameworks": "Accelerate", | |||
"iOSFrameworks": "Accelerate" | |||
} |
@@ -1,28 +0,0 @@ | |||
{ | |||
"id": "juce_audio_devices", | |||
"name": "JUCE audio and midi I/O device classes", | |||
"version": "2.1.6", | |||
"description": "Classes to play and record from audio and midi i/o devices.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_audio_basics", "version": "matching" }, | |||
{ "id": "juce_audio_formats", "version": "matching" }, | |||
{ "id": "juce_events", "version": "matching" } ], | |||
"include": "juce_audio_devices.h", | |||
"compile": [ { "file": "juce_audio_devices.cpp", "target": "! xcode" }, | |||
{ "file": "juce_audio_devices.mm", "target": "xcode" } ], | |||
"browse": [ "audio_io/*", | |||
"midi_io/*", | |||
"sources/*", | |||
"audio_cd/*", | |||
"native/*" ], | |||
"OSXFrameworks": "CoreAudio CoreMIDI DiscRecording", | |||
"iOSFrameworks": "AudioToolbox CoreMIDI", | |||
"LinuxLibs": "asound", | |||
"mingwLibs": "winmm" | |||
} |
@@ -1,22 +0,0 @@ | |||
{ | |||
"id": "juce_audio_formats", | |||
"name": "JUCE audio file format codecs", | |||
"version": "2.1.6", | |||
"description": "Classes for reading and writing various audio file formats.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_audio_basics", "version": "matching" } ], | |||
"include": "juce_audio_formats.h", | |||
"compile": [ { "file": "juce_audio_formats.cpp", "target": "! xcode" }, | |||
{ "file": "juce_audio_formats.mm", "target": "xcode" } ], | |||
"browse": [ "format/*", | |||
"codecs/*", | |||
"sampler/*" ], | |||
"OSXFrameworks": "CoreAudio CoreMIDI QuartzCore AudioToolbox", | |||
"iOSFrameworks": "AudioToolbox QuartzCore" | |||
} |
@@ -1,25 +0,0 @@ | |||
{ | |||
"id": "juce_audio_processors", | |||
"name": "JUCE audio plugin hosting classes", | |||
"version": "2.1.6", | |||
"description": "Classes for loading and playing VST, AU, or internally-generated audio processors.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_gui_extra", "version": "matching" }, | |||
{ "id": "juce_audio_basics", "version": "matching" } ], | |||
"include": "juce_audio_processors.h", | |||
"compile": [ { "file": "juce_audio_processors.cpp", "target": "! xcode" }, | |||
{ "file": "juce_audio_processors.mm", "target": "xcode" } ], | |||
"browse": [ "processors/*", | |||
"format/*", | |||
"format_types/*", | |||
"scanning/*" | |||
], | |||
"OSXFrameworks": "CoreAudio CoreMIDI AudioToolbox", | |||
"iOSFrameworks": "AudioToolbox" | |||
} |
@@ -1,38 +0,0 @@ | |||
{ | |||
"id": "juce_core", | |||
"name": "JUCE core classes", | |||
"version": "2.1.6", | |||
"description": "The essential set of basic JUCE classes, as required by all the other JUCE modules. Includes text, container, memory, threading and i/o functionality.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "ISC Permissive", | |||
"dependencies": [], | |||
"include": "juce_core.h", | |||
"compile": [ { "file": "juce_core.cpp", "target": "! xcode" }, | |||
{ "file": "juce_core.mm", "target": "xcode" } ], | |||
"browse": [ "text/*", | |||
"maths/*", | |||
"memory/*", | |||
"containers/*", | |||
"threads/*", | |||
"time/*", | |||
"files/*", | |||
"network/*", | |||
"streams/*", | |||
"logging/*", | |||
"system/*", | |||
"xml/*", | |||
"javascript/*", | |||
"zip/*", | |||
"unit_tests/*", | |||
"misc/*", | |||
"native/*" ], | |||
"OSXFrameworks": "Cocoa IOKit", | |||
"iOSFrameworks": "Foundation", | |||
"LinuxLibs": "rt dl pthread", | |||
"mingwLibs": "uuid wsock32 wininet version ole32 ws2_32 oleaut32 imm32 comdlg32 shlwapi rpcrt4 winmm" | |||
} |
@@ -1,20 +0,0 @@ | |||
{ | |||
"id": "juce_data_structures", | |||
"name": "JUCE data model helper classes", | |||
"version": "2.1.6", | |||
"description": "Classes for undo/redo management, and smart data structures.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_core", "version": "matching" }, | |||
{ "id": "juce_events", "version": "matching" } ], | |||
"include": "juce_data_structures.h", | |||
"compile": [ { "file": "juce_data_structures.cpp", "target": "! xcode" }, | |||
{ "file": "juce_data_structures.mm", "target": "xcode" } ], | |||
"browse": [ "values/*", | |||
"undomanager/*", | |||
"app_properties/*" ] | |||
} |
@@ -1,23 +0,0 @@ | |||
{ | |||
"id": "juce_events", | |||
"name": "JUCE message and event handling classes", | |||
"version": "2.1.6", | |||
"description": "Classes for running an application's main event loop and sending/receiving messages, timers, etc.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_core", "version": "matching" } ], | |||
"include": "juce_events.h", | |||
"compile": [ { "file": "juce_events.cpp", "target": "! xcode" }, | |||
{ "file": "juce_events.mm", "target": "xcode" } ], | |||
"browse": [ "messages/*", | |||
"timers/*", | |||
"broadcasters/*", | |||
"interprocess/*", | |||
"native/*" ], | |||
"LinuxLibs": "X11" | |||
} |
@@ -1,30 +0,0 @@ | |||
{ | |||
"id": "juce_graphics", | |||
"name": "JUCE graphics classes", | |||
"version": "2.1.6", | |||
"description": "Classes for 2D vector graphics, image loading/saving, font handling, etc.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_core", "version": "matching" }, | |||
{ "id": "juce_events", "version": "matching" } ], | |||
"include": "juce_graphics.h", | |||
"compile": [ { "file": "juce_graphics.cpp", "target": "! xcode" }, | |||
{ "file": "juce_graphics.mm", "target": "xcode" } ], | |||
"browse": [ "colour/*", | |||
"contexts/*", | |||
"images/*", | |||
"image_formats/*", | |||
"geometry/*", | |||
"placement/*", | |||
"fonts/*", | |||
"effects/*", | |||
"native/*" ], | |||
"OSXFrameworks": "Cocoa QuartzCore", | |||
"iOSFrameworks": "CoreGraphics CoreText QuartzCore", | |||
"LinuxLibs": "X11 Xinerama Xext freetype" | |||
} |
@@ -1,40 +0,0 @@ | |||
{ | |||
"id": "juce_gui_basics", | |||
"name": "JUCE GUI core classes", | |||
"version": "2.1.6", | |||
"description": "Basic user-interface components and related classes.", | |||
"website": "http://www.juce.com/juce", | |||
"license": "GPL/Commercial", | |||
"dependencies": [ { "id": "juce_core", "version": "matching" }, | |||
{ "id": "juce_events", "version": "matching" }, | |||
{ "id": "juce_graphics", "version": "matching" }, | |||
{ "id": "juce_data_structures", "version": "matching" } ], | |||
"include": "juce_gui_basics.h", | |||
"compile": [ { "file": "juce_gui_basics.cpp", "target": "! xcode" }, | |||
{ "file": "juce_gui_basics.mm", "target": "xcode" } ], | |||
"browse": [ "components/*", | |||
"mouse/*", | |||
"keyboard/*", | |||
"widgets/*", | |||
"windows/*", | |||
"menus/*", | |||
"layout/*", | |||
"buttons/*", | |||
"positioning/*", | |||
"drawables/*", | |||
"properties/*", | |||
"lookandfeel/*", | |||
"filebrowser/*", | |||
"commands/*", | |||
"misc/*", | |||
"application/*", | |||
"native/*" ], | |||
"OSXFrameworks": "Cocoa Carbon QuartzCore", | |||
"iOSFrameworks": "UIKit", | |||
"LinuxLibs": "X11 Xinerama Xext" | |||
} |
@@ -1,59 +0,0 @@ | |||
Installation Instructions | |||
========================= | |||
Basic Installation | |||
------------------ | |||
Building this software requires only Python. To install with default options: | |||
./waf configure | |||
./waf | |||
./waf install | |||
You may need to become root for the install stage, for example: | |||
sudo ./waf install | |||
Configuration Options | |||
--------------------- | |||
All supported options can be viewed using the command: | |||
./waf --help | |||
Most options only need to be passed during the configure stage, for example: | |||
./waf configure --prefix=/usr | |||
./waf | |||
./waf install | |||
Compiler Configuration | |||
---------------------- | |||
Several standard environment variables can be used to control how compilers are | |||
invoked: | |||
* CC: Path to C compiler | |||
* CFLAGS: C compiler options | |||
* CXX: Path to C++ compiler | |||
* CXXFLAGS: C++ compiler options | |||
* CPPFLAGS: C preprocessor options | |||
* LINKFLAGS: Linker options | |||
Installation Directories | |||
------------------------ | |||
The --prefix option (or the PREFIX environment variable) can be used to change | |||
the prefix which all files are installed under. There are also several options | |||
allowing for more fine-tuned control, see the --help output for details. | |||
Packaging | |||
--------- | |||
Everything can be installed to a specific root directory by passing a --destdir | |||
option to the install stage (or setting the DESTDIR environment variable), | |||
which adds a prefix to all install paths. For example: | |||
./waf configure --prefix=/usr | |||
./waf | |||
./waf install --destdir=/tmp/package |
@@ -1,112 +0,0 @@ | |||
lilv (0.16.0) stable; | |||
* Add lilv_world_ask() for easily checking if a statement exists | |||
* Add lilv_world_get() and lilv_port_get() for easily getting one value | |||
* Add lilv_nodes_merge() | |||
* Make lilv_plugin_get_port_by_designation() return a const pointer | |||
* Require a URI for lilv_state_to_string() and fail gracefully otherwise | |||
* Fail gracefully when lilv_state_new_from_string() is called on NULL | |||
* Make state loading functions fall back to lv2:default for port values, | |||
so a plugin description can be loaded as default state | |||
* Ignore state ports with no value instead of printing an error | |||
* Support atom:supports in lilv_port_supports_event() | |||
* Add va_list variant of lilv_plugin_get_num_ports_of_class() | |||
* Fix several plugin functions that failed to load data if called first | |||
* Correctly depend on serd at build time (fix compilation in odd cases) | |||
* Disable timestamps in HTML documentation for reproducible build | |||
* lilvmm.hpp: Support varargs for Plugin::get_num_ports_of_class() | |||
* lilvmm.hpp: Add several missing methods | |||
* Update to waf 1.7.8 and autowaf r90 (install docs to versioned directory) | |||
-- David Robillard <d@drobilla.net> Mon, 18 Feb 2013 16:43:10 -0500 | |||
lilv (0.14.4) stable; | |||
* Deprecate old flawed Lilv::Instance constructors | |||
* Fix documentation for ui_type parameter of lilv_ui_is_supported() | |||
* Fix crash when lv2info is run with an invalid URI argument | |||
* Gracefully handle failure to save plugin state and print error message | |||
* Reduce memory usage (per node) | |||
* Simpler node implementation always backed by a SordNode | |||
* Make all 'zix' symbols private to avoid symbol clashes in static builds | |||
* Add lv2bench utility | |||
* Fix various hyper-strict warnings | |||
* Do not require a C++ compiler to build | |||
* Add option to build utilities as static binaries | |||
* Upgrade to waf 1.7.2 | |||
* lilvmm.hpp: Make Lilv::Instance handle features and failed instantiations | |||
* lilvmm.hpp: Add Lilv::Instance::get_handle() | |||
* lilvmm.hpp: Add Lilv::Instance::get_extension_data() | |||
-- David Robillard <d@drobilla.net> Thu, 23 Aug 2012 01:38:29 -0400 | |||
lilv (0.14.2) stable; | |||
* Fix dynmanifest support | |||
-- David Robillard <d@drobilla.net> Thu, 19 Apr 2012 16:11:31 -0400 | |||
lilv (0.14.0) stable; | |||
* Add lilv_plugin_get_extension_data | |||
* Use path variables in pkgconfig files | |||
* Install man page to DATADIR (e.g. PREFIX/share/man, not PREFIX/man) | |||
* Make Lilv::uri_to_path static inline (fix linking errors) | |||
* Use correct URI for dcterms:replaces (for hiding old plugins): | |||
"http://purl.org/dc/terms/replaces" | |||
* Fix compilation on BSD | |||
* Only load dynmanifest libraries once per bundle, not once per plugin | |||
* Fix lilv_world_find_nodes to work with wildcard subjects | |||
* Add lilv_plugin_get_related to get resources related to plugins that | |||
are not directly rdfs:seeAlso linked (e.g. presets) | |||
* Add lilv_world_load_resource for related resources (e.g. presets) | |||
* Print presets in lv2info | |||
* Remove locale smashing kludges and use new serd functions for converting | |||
nodes to/from numbers. | |||
* Add LilvState API for handling plugin state. This makes it simple to | |||
save and restore plugin state both in memory and on disk, as well as | |||
save presets in a host-sharable way since the disk format is identical | |||
to the LV2 presets format. | |||
* Update old references to lv2_list (now lv2ls) | |||
* Support compilation as C++ under MSVC++. | |||
* Remove use of wordexp. | |||
* Add lilv_plugin_get_port_by_designation() and lilv_port_get_index() as an | |||
improved generic alternative to lilv_plugin_get_latency_port_index(). | |||
* Add lilv_plugin_get_project() and get author information from project if | |||
it is not given directly on the plugin. | |||
-- David Robillard <d@drobilla.net> Wed, 18 Apr 2012 20:06:28 -0400 | |||
lilv (0.5.0) stable; | |||
* Remove glib dependency | |||
* Add lv2core as a pkg-config dependency (for lv2.h header include) | |||
* Obey prefix when installing bash completion script | |||
* Support integer minimum, maximum, and default port values in | |||
lilv_plugin_get_port_ranges_float | |||
* Add ability to build static library | |||
-- David Robillard <d@drobilla.net> Thu, 29 Sep 2011 00:00:00 -0400 | |||
lilv (0.4.4) stable; | |||
* Fix building python bindings | |||
* Make free methods tolerate being called on NULL | |||
* Remove lv2jack (replaced by jalv) | |||
* Fix parsing extra plugin data files in other bundles | |||
* Fix lilv_ui_is_supported when Lilv is built independently | |||
-- David Robillard <d@drobilla.net> Sat, 11 Jun 2011 11:20:11 -0400 | |||
lilv (0.4.2) stable; | |||
* Fix compilation issues on some systems | |||
* Fix build system Python 3 compatibility | |||
-- David Robillard <d@drobilla.net> Wed, 25 May 2011 19:00:00 -0400 | |||
lilv (0.4.0) stable; | |||
* Initial version (forked from SLV2) | |||
-- David Robillard <d@drobilla.net> Tue, 24 May 2011 23:00:00 -0400 |
@@ -1,29 +0,0 @@ | |||
This library is designed to allow parallel installation of different major | |||
versions. To facilitate this, the shared library name, include directory, and | |||
pkg-config file are suffixed with the major version number of the library. | |||
For example, if this library was named "foo" and at version 1.x.y: | |||
/usr/include/foo-1/foo/foo.h | |||
/usr/lib/foo-1.so.1.x.y | |||
/usr/lib/pkgconfig/foo-1.pc | |||
Dependencies check for pkg-config name "foo-1" and will build | |||
against a compatible version 1, regardless any other installed versions. | |||
*** IMPORTANT GUIDELINES FOR PACKAGERS *** | |||
Packages should follow the same conventions as above, i.e. include the major | |||
version (and only the major version) in the name of the package. Continuing the | |||
example above, the package(s) would be named foo-1 and foo-1-dev. This way, | |||
if/when version 2 comes out, it may be installed at the same time as version 1 | |||
without breaking anything. | |||
Please do not create packages of this library that do not follow these | |||
guidelines, you will break things and cause unnecessary headaches. Please do | |||
not use any number as a suffix other than the actual major version number of the | |||
upstream source package. | |||
Because program and documentation names are not versioned, these should be | |||
included in separate packages which may replace previous versions, since | |||
there is little use in having parallel installations of them. |
@@ -1,11 +0,0 @@ | |||
Lilv | |||
---- | |||
Lilv is a library for LV2 hosts intended to make using LV2 Plugins as simple | |||
as possible (without sacrificing capabilities). | |||
More information about LV2 plugins can be found at <http://lv2plug.in>. | |||
More information about Lilv can be found at <http://drobilla.net/software/lilv>. | |||
-- David Robillard <d@drobilla.net> |
@@ -1,38 +0,0 @@ | |||
%module lilv | |||
%{ | |||
#include "lilv/lilv.h" | |||
#include "lilv/lilvmm.hpp" | |||
%} | |||
%include "lilv/lilv.h" | |||
%include "lilv/lilvmm.hpp" | |||
namespace Lilv { | |||
%extend Plugins { | |||
%pythoncode %{ | |||
def __iter__(self): | |||
class Iterator(object): | |||
def __init__(self, plugins): | |||
self.plugins = plugins | |||
self.iter = plugins.begin() | |||
def next(self): | |||
self.iter = self.plugins.next(self.iter) | |||
if not self.plugins.is_end(self.iter): | |||
return self.plugins.get(self.iter) | |||
else: | |||
raise StopIteration | |||
return Iterator(self) | |||
%} | |||
}; | |||
%extend Node { | |||
%pythoncode %{ | |||
def __str__(self): | |||
return self.get_turtle_token() | |||
%} | |||
}; | |||
} /* namespace Lilv */ |
@@ -1,96 +0,0 @@ | |||
#!/usr/bin/env python | |||
# -*- coding: utf-8 -*- | |||
import math | |||
import lilv | |||
import sys | |||
import wave | |||
import numpy | |||
# Read command line arguments | |||
if len(sys.argv) != 4: | |||
print 'USAGE: lv2_apply.py PLUGIN_URI INPUT_WAV OUTPUT_WAV' | |||
sys.exit(1) | |||
# Initialise Lilv | |||
world = lilv.World() | |||
world.load_all() | |||
plugin_uri = world.new_uri(sys.argv[1]) | |||
wav_in_path = sys.argv[2] | |||
wav_out_path = sys.argv[3] | |||
# Find plugin | |||
plugin = world.get_all_plugins().get_by_uri(plugin_uri) | |||
if not plugin: | |||
print "Unknown plugin `%s'\n" % plugin_uri | |||
sys.exit(1) | |||
lv2_InputPort = world.new_uri(lilv.LILV_URI_INPUT_PORT) | |||
lv2_OutputPort = world.new_uri(lilv.LILV_URI_OUTPUT_PORT) | |||
lv2_AudioPort = world.new_uri(lilv.LILV_URI_AUDIO_PORT) | |||
n_audio_in = plugin.get_num_ports_of_class(lv2_InputPort, lv2_AudioPort) | |||
n_audio_out = plugin.get_num_ports_of_class(lv2_OutputPort, lv2_AudioPort) | |||
if n_audio_out == 0: | |||
print "Plugin has no audio outputs\n" | |||
sys.exit(1) | |||
# Open input file | |||
wav_in = wave.open(wav_in_path, 'r') | |||
if not wav_in: | |||
print "Failed to open input `%s'\n" % wav_in_path | |||
sys.exit(1) | |||
if wav_in.getnchannels() != n_audio_in: | |||
print "Input has %d channels, but plugin has %d audio inputs\n" % ( | |||
wav_in.getnchannels(), n_audio_in) | |||
sys.exit(1) | |||
# Open output file | |||
wav_out = wave.open(wav_out_path, 'w') | |||
if not wav_out: | |||
print "Failed to open output `%s'\n" % wav_out_path | |||
sys.exit(1) | |||
# Set output file to same format as input (except possibly nchannels) | |||
wav_out.setparams(wav_in.getparams()) | |||
wav_out.setnchannels(n_audio_out) | |||
rate = wav_in.getframerate() | |||
nframes = wav_in.getnframes() | |||
# Instantiate plugin | |||
instance = lilv.Instance(plugin, rate) | |||
def read_float(wf, nframes): | |||
wav = wf.readframes(nframes) | |||
if wf.getsampwidth() == 4: | |||
wav = wave.struct.unpack("<%ul" % (len(wav) / 4), wav) | |||
wav = [ i / float(math.pow(2, 32)) for i in wav ] | |||
elif wf.getsampwidth() == 2: | |||
wav = wave.struct.unpack("<%uh" % (len(wav) / 2), wav) | |||
wav = [ i / float(math.pow(2, 16)) for i in wav ] | |||
else: | |||
wav = wave.struct.unpack("%uB" % (len(wav)), wav) | |||
wav = [ s - 128 for s in wav ] | |||
wav = [ i / float(math.pow(2, 8)) for i in wav ] | |||
n_channels = wf.getnchannels() | |||
wavs = [] | |||
if n_channels > 1: | |||
for i in xrange(n_channels): | |||
wavs.append([ wav[j] for j in xrange(0, len(wav), n_channels) ]) | |||
else: | |||
wavs = [ wav ] | |||
return wavs | |||
in_buf = read_float(wav_in, nframes) | |||
# TODO: buffer marshaling | |||
#instance.connect_port(3, in_buf) | |||
print '%s => %s => %s @ %d Hz' % (wav_in_path, plugin.get_name(), wav_out_path, rate) | |||
instance.connect_port(3, in_buf) |
@@ -1,9 +0,0 @@ | |||
#!/usr/bin/env python | |||
import lilv | |||
world = lilv.World() | |||
world.load_all() | |||
for i in world.get_all_plugins(): | |||
print(i.get_uri()) |
@@ -1,187 +0,0 @@ | |||
<doxygenlayout version="1.0"> | |||
<!-- Navigation index tabs for HTML output --> | |||
<navindex> | |||
<tab type="mainpage" visible="yes" title=""/> | |||
<tab type="pages" visible="yes" title="" intro=""/> | |||
<tab type="modules" visible="yes" title="" intro=""/> | |||
<tab type="namespaces" visible="yes" title=""> | |||
<tab type="namespacelist" visible="yes" title="" intro=""/> | |||
<tab type="namespacemembers" visible="yes" title="" intro=""/> | |||
</tab> | |||
<tab type="classes" visible="yes" title=""> | |||
<tab type="classlist" visible="yes" title="" intro=""/> | |||
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> | |||
<tab type="hierarchy" visible="yes" title="" intro=""/> | |||
<tab type="classmembers" visible="yes" title="" intro=""/> | |||
</tab> | |||
<tab type="files" visible="yes" title=""> | |||
<tab type="filelist" visible="yes" title="" intro=""/> | |||
<tab type="globals" visible="yes" title="" intro=""/> | |||
</tab> | |||
<tab type="examples" visible="yes" title="" intro=""/> | |||
</navindex> | |||
<!-- Layout definition for a class page --> | |||
<class> | |||
<briefdescription visible="yes"/> | |||
<includes visible="$SHOW_INCLUDE_FILES"/> | |||
<inheritancegraph visible="$CLASS_GRAPH"/> | |||
<collaborationgraph visible="$COLLABORATION_GRAPH"/> | |||
<allmemberslink visible="yes"/> | |||
<memberdecl> | |||
<nestedclasses visible="yes" title=""/> | |||
<publictypes title=""/> | |||
<publicslots title=""/> | |||
<signals title=""/> | |||
<publicmethods title=""/> | |||
<publicstaticmethods title=""/> | |||
<publicattributes title=""/> | |||
<publicstaticattributes title=""/> | |||
<protectedtypes title=""/> | |||
<protectedslots title=""/> | |||
<protectedmethods title=""/> | |||
<protectedstaticmethods title=""/> | |||
<protectedattributes title=""/> | |||
<protectedstaticattributes title=""/> | |||
<packagetypes title=""/> | |||
<packagemethods title=""/> | |||
<packagestaticmethods title=""/> | |||
<packageattributes title=""/> | |||
<packagestaticattributes title=""/> | |||
<properties title=""/> | |||
<events title=""/> | |||
<privatetypes title=""/> | |||
<privateslots title=""/> | |||
<privatemethods title=""/> | |||
<privatestaticmethods title=""/> | |||
<privateattributes title=""/> | |||
<privatestaticattributes title=""/> | |||
<friends title=""/> | |||
<related title="" subtitle=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
<memberdef> | |||
<inlineclasses title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<constructors title=""/> | |||
<functions title=""/> | |||
<related title=""/> | |||
<variables title=""/> | |||
<properties title=""/> | |||
<events title=""/> | |||
</memberdef> | |||
<usedfiles visible="$SHOW_USED_FILES"/> | |||
<authorsection visible="yes"/> | |||
</class> | |||
<!-- Layout definition for a namespace page --> | |||
<namespace> | |||
<briefdescription visible="yes"/> | |||
<memberdecl> | |||
<nestednamespaces visible="yes" title=""/> | |||
<classes visible="yes" title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
<memberdef> | |||
<inlineclasses title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
</memberdef> | |||
<authorsection visible="yes"/> | |||
</namespace> | |||
<!-- Layout definition for a file page --> | |||
<file> | |||
<briefdescription visible="yes"/> | |||
<includes visible="$SHOW_INCLUDE_FILES"/> | |||
<includegraph visible="$INCLUDE_GRAPH"/> | |||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/> | |||
<sourcelink visible="yes"/> | |||
<memberdecl> | |||
<classes visible="yes" title=""/> | |||
<namespaces visible="yes" title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
<memberdef> | |||
<inlineclasses title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
</memberdef> | |||
<authorsection/> | |||
</file> | |||
<!-- Layout definition for a group page --> | |||
<group> | |||
<briefdescription visible="no"/> | |||
<groupgraph visible="$GROUP_GRAPHS"/> | |||
<detaileddescription title=""/> | |||
<memberdecl> | |||
<nestedgroups visible="yes" title=""/> | |||
<dirs visible="yes" title=""/> | |||
<files visible="yes" title=""/> | |||
<namespaces visible="yes" title=""/> | |||
<classes visible="yes" title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<enumvalues title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<signals title=""/> | |||
<publicslots title=""/> | |||
<protectedslots title=""/> | |||
<privateslots title=""/> | |||
<events title=""/> | |||
<properties title=""/> | |||
<friends title=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<memberdef> | |||
<pagedocs/> | |||
<inlineclasses title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<enumvalues title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<signals title=""/> | |||
<publicslots title=""/> | |||
<protectedslots title=""/> | |||
<privateslots title=""/> | |||
<events title=""/> | |||
<properties title=""/> | |||
<friends title=""/> | |||
</memberdef> | |||
<authorsection visible="yes"/> | |||
</group> | |||
<!-- Layout definition for a directory page --> | |||
<directory> | |||
<briefdescription visible="yes"/> | |||
<directorygraph visible="yes"/> | |||
<memberdecl> | |||
<dirs visible="yes"/> | |||
<files visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
</directory> | |||
</doxygenlayout> |
@@ -1,33 +0,0 @@ | |||
.TH LV2INFO 1 "8 Jan 2012" | |||
.SH NAME | |||
.B lv2info \- print information about an installed LV2 plugin. | |||
.SH SYNOPSIS | |||
.B lv2info PLUGIN_URI | |||
.SH OPTIONS | |||
.TP | |||
\fB\-p FILE | |||
Write Turtle description of plugin to FILE | |||
.TP | |||
\fB\-m FILE | |||
Add record of plugin to manifest FILE | |||
.TP | |||
\fB\-\-help\fR | |||
Display help and exit | |||
.TP | |||
\fB\-\-version\fR | |||
Display version information and exit | |||
.SH SEE ALSO | |||
.BR lilv(3), | |||
.BR lv2ls(1) | |||
.SH AUTHOR | |||
lv2info was written by David Robillard <d@drobilla.net> | |||
.PP | |||
This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz> | |||
and David Robillard <d@drobilla.net> |
@@ -1,30 +0,0 @@ | |||
.TH LV2LS 1 "17 Jan 2012" | |||
.SH NAME | |||
.B lv2ls \- List all installed LV2 plugins. | |||
.SH SYNOPSIS | |||
.B lv2ls [OPTION]... | |||
.SH OPTIONS | |||
.TP | |||
\fB\-n\fR, \fB\-\-names\fR | |||
Show names instead of URIs | |||
.TP | |||
\fB\-\-help\fR | |||
Display help and exit | |||
.TP | |||
\fB\-\-version\fR | |||
Display version information and exit | |||
.SH SEE ALSO | |||
.BR lilv(3), | |||
.BR lv2info(1) | |||
.SH AUTHOR | |||
lv2ls was written by David Robillard <d@drobilla.net> | |||
.PP | |||
This manual page was written by Jaromír Mikes <mira.mikes@seznam.cz> | |||
and David Robillard <d@drobilla.net> |
@@ -1,563 +0,0 @@ | |||
body { | |||
font-size: medium; | |||
font-family: sans-serif; | |||
} | |||
#top { | |||
background-color: #F3F3F3; | |||
margin: 0; | |||
padding: 0; | |||
border-bottom: 1px solid #DDD; | |||
margin-bottom: 1ex; | |||
font-size: xx-large; | |||
font-weight: bold; | |||
} | |||
div.header { | |||
display: none; | |||
} | |||
.tabs { | |||
display: none; | |||
} | |||
h1 h2 h3 h4 h5 h6 { | |||
font-weight: bold; | |||
} | |||
h1 { | |||
font-size: 164%; | |||
} | |||
h2 { | |||
font-size: 132%; | |||
} | |||
h3 { | |||
font-size: 124%; | |||
} | |||
h4 { | |||
font-size: 116%; | |||
} | |||
h5 { | |||
font-size: 108%; | |||
} | |||
h6 { | |||
font-size: 100%; | |||
} | |||
p { | |||
margin: 0 0 1ex 0; | |||
} | |||
br { | |||
display: none; | |||
} | |||
dt { | |||
font-weight: 700; | |||
} | |||
div.multicol { | |||
} | |||
p.startli,p.startdd,p.starttd { | |||
margin-top: 2px; | |||
} | |||
p.endli { | |||
margin-bottom: 0; | |||
} | |||
p.enddd { | |||
margin-bottom: 4px; | |||
} | |||
p.endtd { | |||
margin-bottom: 2px; | |||
} | |||
caption { | |||
font-weight: 700; | |||
} | |||
span.legend { | |||
font-size: 70%; | |||
text-align: center; | |||
} | |||
h3.version { | |||
font-size: 90%; | |||
text-align: center; | |||
} | |||
div.qindex,div.navtab { | |||
background-color: #EBEFF6; | |||
border: 1px solid #A3B4D7; | |||
text-align: center; | |||
margin: 2px; | |||
padding: 2px; | |||
} | |||
div.qindex,div.navpath { | |||
width: 100%; | |||
line-height: 140%; | |||
} | |||
div.navtab { | |||
margin-right: 15px; | |||
} | |||
/* @group Link Styling */ | |||
a { | |||
color: #3D8C57; | |||
text-decoration: none; | |||
} | |||
.contents a:visited { | |||
color: #50755E; | |||
} | |||
a:hover { | |||
text-decoration: underline; | |||
} | |||
a.qindexHL { | |||
background-color: #9CAFD4; | |||
color: #FFF; | |||
border: 1px double #869DCA; | |||
} | |||
a.code { | |||
color: #4665A2; | |||
} | |||
a.codeRef { | |||
color: #4665A2; | |||
} | |||
/* @end */ | |||
dl.el { | |||
margin-left: -1cm; | |||
} | |||
.fragment { | |||
font-family: monospace, fixed; | |||
font-size: 105%; | |||
} | |||
pre.fragment { | |||
border: 1px solid #C4C4C4; | |||
background-color: #F9F9F9; | |||
padding: 4px 6px; | |||
margin: 4px 8px 4px 2px; | |||
overflow: auto; | |||
font-size: 9pt; | |||
line-height: 125%; | |||
} | |||
div.ah { | |||
background-color: #000; | |||
font-weight: 700; | |||
color: #FFF; | |||
margin-bottom: 3px; | |||
margin-top: 3px; | |||
padding: .2em; | |||
border: thin solid #333; | |||
} | |||
div.groupHeader { | |||
margin-left: 16px; | |||
margin-top: 12px; | |||
margin-bottom: 6px; | |||
font-weight: 700; | |||
} | |||
div.groupText { | |||
margin-left: 16px; | |||
font-style: italic; | |||
} | |||
body { | |||
background: #FFF; | |||
color: #000; | |||
margin: 0; | |||
} | |||
div.contents { | |||
margin-top: 10px; | |||
margin-left: 10px; | |||
margin-right: 10px; | |||
} | |||
td.indexkey { | |||
background-color: #EBEFF6; | |||
font-weight: 700; | |||
border: 1px solid #C4CFE5; | |||
margin: 2px 0; | |||
padding: 2px 10px; | |||
} | |||
td.indexvalue { | |||
background-color: #EBEFF6; | |||
border: 1px solid #C4CFE5; | |||
padding: 2px 10px; | |||
margin: 2px 0; | |||
} | |||
tr.memlist { | |||
background-color: #EEF1F7; | |||
} | |||
p.formulaDsp { | |||
text-align: center; | |||
} | |||
img.formulaDsp { | |||
} | |||
img.formulaInl { | |||
vertical-align: middle; | |||
} | |||
div.center { | |||
text-align: center; | |||
margin-top: 0; | |||
margin-bottom: 0; | |||
padding: 0; | |||
} | |||
div.center img { | |||
border: 0; | |||
} | |||
address.footer { | |||
text-align: right; | |||
padding: 0 0.25em 0.25em 0; | |||
} | |||
img.footer { | |||
border: 0; | |||
vertical-align: middle; | |||
} | |||
/* @group Code Colorization */ | |||
span.keyword { | |||
color: green; | |||
} | |||
span.keywordtype { | |||
color: #604020; | |||
} | |||
span.keywordflow { | |||
color: #e08000; | |||
} | |||
span.comment { | |||
color: maroon; | |||
} | |||
span.preprocessor { | |||
color: #806020; | |||
} | |||
span.stringliteral { | |||
color: #002080; | |||
} | |||
span.charliteral { | |||
color: teal; | |||
} | |||
span.vhdldigit { | |||
color: #F0F; | |||
} | |||
span.vhdlkeyword { | |||
color: #700070; | |||
} | |||
span.vhdllogic { | |||
color: red; | |||
} | |||
/* @end */ | |||
td.tiny { | |||
font-size: 75%; | |||
} | |||
.dirtab { | |||
padding: 4px; | |||
border-collapse: collapse; | |||
border: 1px solid #A3B4D7; | |||
} | |||
th.dirtab { | |||
background: #EBEFF6; | |||
font-weight: 700; | |||
} | |||
hr { | |||
height: 0; | |||
border: none; | |||
border-top: 1px solid #DDD; | |||
margin: 2em 0 1em; | |||
} | |||
hr.footer { | |||
height: 1px; | |||
} | |||
/* @group Member Descriptions */ | |||
table.memberdecls { | |||
border-spacing: 0; | |||
font-size: small; | |||
} | |||
.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,.memTemplItemLeft,.memTemplItemRight,.memTemplParams { | |||
background-color: #FBFBFB; | |||
margin: 0; | |||
padding: 0.25ex; | |||
} | |||
.mdescLeft,.mdescRight { | |||
color: #555; | |||
} | |||
.memItemLeft,.memItemRight,.memTemplParams { | |||
border-top: 1px solid #DDD; | |||
} | |||
.memItemLeft,.memTemplItemLeft { | |||
white-space: nowrap; | |||
padding-left: 2em; | |||
} | |||
.memTemplParams { | |||
color: #464646; | |||
white-space: nowrap; | |||
} | |||
/* @end */ | |||
/* @group Member Details */ | |||
/* Styles for detailed member documentation */ | |||
.memtemplate { | |||
font-size: 80%; | |||
color: #4665A2; | |||
font-weight: bold; | |||
} | |||
.memnav { | |||
background-color: #EBEFF6; | |||
border: 1px solid #A3B4D7; | |||
text-align: center; | |||
margin: 2px; | |||
margin-right: 15px; | |||
padding: 2px; | |||
} | |||
.memitem { | |||
padding: 0; | |||
margin: 1ex 0 2ex 0; | |||
border: 1px solid #CCC; | |||
} | |||
.memname { | |||
white-space: nowrap; | |||
font-weight: bold; | |||
} | |||
.memproto { | |||
border-bottom: 1px solid #DDD; | |||
padding: 0.5ex; | |||
font-weight: bold; | |||
background-color: #F3F3F3; | |||
} | |||
.memdoc { | |||
padding: 1ex; | |||
background-color: #FBFBFB; | |||
border-top-width: 0; | |||
} | |||
.paramkey { | |||
text-align: right; | |||
} | |||
.paramtype { | |||
white-space: nowrap; | |||
} | |||
.paramname { | |||
color: #602020; | |||
white-space: nowrap; | |||
} | |||
.paramname em { | |||
font-style: normal; | |||
} | |||
/* @end */ | |||
/* @group Directory (tree) */ | |||
/* for the tree view */ | |||
.ftvtree { | |||
font-family: sans-serif; | |||
margin: 0; | |||
} | |||
/* these are for tree view when used as main index */ | |||
.directory { | |||
font-size: 9pt; | |||
font-weight: bold; | |||
margin: 5px; | |||
} | |||
.directory h3 { | |||
margin: 0; | |||
margin-top: 1em; | |||
font-size: 11pt; | |||
} | |||
.directory > h3 { | |||
margin-top: 0; | |||
} | |||
.directory p { | |||
margin: 0; | |||
white-space: nowrap; | |||
} | |||
.directory div { | |||
display: none; | |||
margin: 0; | |||
} | |||
.directory img { | |||
vertical-align: -30%; | |||
} | |||
/* these are for tree view when not used as main index */ | |||
.directory-alt { | |||
font-size: 100%; | |||
font-weight: bold; | |||
} | |||
.directory-alt h3 { | |||
margin: 0; | |||
margin-top: 1em; | |||
font-size: 11pt; | |||
} | |||
.directory-alt > h3 { | |||
margin-top: 0; | |||
} | |||
.directory-alt p { | |||
margin: 0; | |||
white-space: nowrap; | |||
} | |||
.directory-alt div { | |||
display: none; | |||
margin: 0; | |||
} | |||
.directory-alt img { | |||
vertical-align: -30%; | |||
} | |||
/* @end */ | |||
div.dynheader { | |||
margin-top: 8px; | |||
} | |||
address { | |||
font-style: normal; | |||
color: #2A3D61; | |||
} | |||
table.doxtable { | |||
border-collapse: collapse; | |||
margin: 0.5ex; | |||
} | |||
table.doxtable td,table.doxtable th { | |||
border: 1px solid #DDD; | |||
padding: 3px 7px 2px; | |||
} | |||
table.doxtable th { | |||
background-color: #F3F3F3; | |||
color: #000; | |||
padding-bottom: 4px; | |||
padding-top: 5px; | |||
text-align: left; | |||
font-weight: bold; | |||
} | |||
.tabsearch { | |||
top: 0; | |||
left: 10px; | |||
height: 36px; | |||
z-index: 101; | |||
overflow: hidden; | |||
font-size: 13px; | |||
} | |||
.navpath ul { | |||
font-size: 11px; | |||
height: 30px; | |||
line-height: 30px; | |||
color: #8AA0CC; | |||
border: 1px solid #C2CDE4; | |||
overflow: hidden; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
.navpath li { | |||
list-style-type: none; | |||
float: left; | |||
padding-left: 10px; | |||
padding-right: 15px; | |||
color: #364D7C; | |||
} | |||
.navpath a { | |||
height: 32px; | |||
display: block; | |||
text-decoration: none; | |||
outline: none; | |||
} | |||
.navpath a:hover { | |||
color: #6884BD; | |||
} | |||
div.summary { | |||
float: right; | |||
font-size: 8pt; | |||
padding-right: 5px; | |||
width: 50%; | |||
text-align: right; | |||
} | |||
div.summary a { | |||
white-space: nowrap; | |||
} | |||
div.header { | |||
background-color: #F3F3F3; | |||
margin: 0; | |||
border-bottom: 1px solid #DDD; | |||
} | |||
div.headertitle { | |||
padding: 5px 5px 5px 10px; | |||
font-size: 180%; | |||
font-weight: bold; | |||
} |
@@ -1,11 +0,0 @@ | |||
prefix=@PREFIX@ | |||
exec_prefix=@EXEC_PREFIX@ | |||
libdir=@LIBDIR@ | |||
includedir=@INCLUDEDIR@ | |||
Name: Lilv | |||
Version: @LILV_VERSION@ | |||
Description: Simple C library for hosting LV2 plugins | |||
Requires: lv2 @PKG_serd_0@ @PKG_sord_0@ @PKG_sratom_0@ | |||
Libs: -L${libdir} -l@LIB_LILV@ -ldl | |||
Cflags: -I${includedir}/lilv-@LILV_MAJOR_VERSION@ |
@@ -1,29 +0,0 @@ | |||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |||
@prefix : <http://usefulinc.com/ns/doap#> . | |||
@prefix foaf: <http://xmlns.com/foaf/0.1/> . | |||
<http://drobilla.net/software/lilv> | |||
a :Project ; | |||
:bug-database <http://dev.drobilla.net/query?status=new&status=assigned&status=reopened&component=LILV&order=priority> ; | |||
:developer [ | |||
a foaf:Person ; | |||
rdfs:seeAlso <http://drobilla.net/drobilla.rdf> ; | |||
foaf:homepage <http://drobilla.net> ; | |||
foaf:mbox_sha1sum "253b3c58086250260bac1232d744d150274ad308" ; | |||
foaf:name "David Robillard" | |||
] ; | |||
:download-page <http://download.drobilla.net> ; | |||
:homepage <http://drobilla.net/software/lilv> ; | |||
:license <http://usefulinc.com/doap/licenses/gpl> ; | |||
:name "LILV" ; | |||
:programming-language "C", "Turtle" ; | |||
:repository [ | |||
:browse <http://dev.drobilla.net/browser/trunk/lilv> ; | |||
:location <http://svn.drobilla.net/lad/trunk/lilv> ; | |||
a :SVNRepository | |||
] ; | |||
:shortdesc "Library for simple use of LV2 plugins" ; | |||
:shortname "LILV" . | |||
@@ -1,7 +0,0 @@ | |||
@prefix lv2: <http://lv2plug.in/ns/lv2core#> . | |||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |||
<http://example.org/lilv-test-plugin> | |||
a lv2:Plugin ; | |||
lv2:binary <test_plugin@SHLIB_EXT@> ; | |||
rdfs:seeAlso <test_plugin.ttl> . |
@@ -1,384 +0,0 @@ | |||
/* | |||
Lilv Test Plugin | |||
Copyright 2011 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. | |||
*/ | |||
#include <assert.h> | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include "lv2/lv2plug.in/ns/ext/atom/atom.h" | |||
#include "lv2/lv2plug.in/ns/ext/state/state.h" | |||
#include "lv2/lv2plug.in/ns/ext/urid/urid.h" | |||
#include "lv2/lv2plug.in/ns/lv2core/lv2.h" | |||
#define TEST_URI "http://example.org/lilv-test-plugin" | |||
enum { | |||
TEST_INPUT = 0, | |||
TEST_OUTPUT = 1 | |||
}; | |||
typedef struct { | |||
LV2_URID_Map* map; | |||
struct { | |||
LV2_URID atom_Float; | |||
} uris; | |||
char* tmp_file_path; | |||
char* rec_file_path; | |||
FILE* rec_file; | |||
float* input; | |||
float* output; | |||
unsigned num_runs; | |||
} Test; | |||
static void | |||
cleanup(LV2_Handle instance) | |||
{ | |||
Test* test = (Test*)instance; | |||
if (test->rec_file) { | |||
fclose(test->rec_file); | |||
} | |||
free(test->tmp_file_path); | |||
free(test->rec_file_path); | |||
free(instance); | |||
} | |||
static void | |||
connect_port(LV2_Handle instance, | |||
uint32_t port, | |||
void* data) | |||
{ | |||
Test* test = (Test*)instance; | |||
switch (port) { | |||
case TEST_INPUT: | |||
test->input = (float*)data; | |||
break; | |||
case TEST_OUTPUT: | |||
test->output = (float*)data; | |||
break; | |||
default: | |||
break; | |||
} | |||
} | |||
static LV2_Handle | |||
instantiate(const LV2_Descriptor* descriptor, | |||
double rate, | |||
const char* path, | |||
const LV2_Feature* const* features) | |||
{ | |||
Test* test = (Test*)malloc(sizeof(Test)); | |||
if (!test) { | |||
return NULL; | |||
} | |||
test->map = NULL; | |||
test->input = NULL; | |||
test->output = NULL; | |||
test->num_runs = 0; | |||
test->tmp_file_path = (char*)malloc(L_tmpnam); | |||
test->rec_file_path = NULL; | |||
test->rec_file = NULL; | |||
tmpnam(test->tmp_file_path); | |||
LV2_State_Make_Path* make_path = NULL; | |||
for (int i = 0; features[i]; ++i) { | |||
if (!strcmp(features[i]->URI, LV2_URID_URI "#map")) { | |||
test->map = (LV2_URID_Map*)features[i]->data; | |||
test->uris.atom_Float = test->map->map( | |||
test->map->handle, LV2_ATOM__Float); | |||
} else if (!strcmp(features[i]->URI, LV2_STATE__makePath)) { | |||
make_path = (LV2_State_Make_Path*)features[i]->data; | |||
} | |||
} | |||
if (!test->map) { | |||
fprintf(stderr, "Host does not support urid:map\n"); | |||
free(test); | |||
return NULL; | |||
} | |||
if (make_path) { | |||
test->rec_file_path = make_path->path(make_path->handle, "recfile"); | |||
if (!(test->rec_file = fopen(test->rec_file_path, "w"))) { | |||
fprintf(stderr, "ERROR: Failed to open rec file\n"); | |||
} | |||
fprintf(test->rec_file, "instantiate\n"); | |||
} | |||
return (LV2_Handle)test; | |||
} | |||
static void | |||
run(LV2_Handle instance, | |||
uint32_t sample_count) | |||
{ | |||
Test* test = (Test*)instance; | |||
*test->output = *test->input; | |||
if (sample_count == 1) { | |||
++test->num_runs; | |||
} else if (sample_count == 2 && test->rec_file) { | |||
// Append to rec file (changes size) | |||
fprintf(test->rec_file, "run\n"); | |||
} else if (sample_count == 3 && test->rec_file) { | |||
// Change the first byte of rec file (doesn't change size) | |||
fseek(test->rec_file, 0, SEEK_SET); | |||
fprintf(test->rec_file, "X"); | |||
fseek(test->rec_file, 0, SEEK_END); | |||
} | |||
} | |||
static uint32_t | |||
map_uri(Test* plugin, const char* uri) | |||
{ | |||
return plugin->map->map(plugin->map->handle, uri); | |||
} | |||
static LV2_State_Status | |||
save(LV2_Handle instance, | |||
LV2_State_Store_Function store, | |||
void* callback_data, | |||
uint32_t flags, | |||
const LV2_Feature* const* features) | |||
{ | |||
Test* plugin = (Test*)instance; | |||
LV2_State_Map_Path* map_path = NULL; | |||
LV2_State_Make_Path* make_path = NULL; | |||
for (int i = 0; features && features[i]; ++i) { | |||
if (!strcmp(features[i]->URI, LV2_STATE__mapPath)) { | |||
map_path = (LV2_State_Map_Path*)features[i]->data; | |||
} else if (!strcmp(features[i]->URI, LV2_STATE__makePath)) { | |||
make_path = (LV2_State_Make_Path*)features[i]->data; | |||
} | |||
} | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/greeting"), | |||
"hello", | |||
strlen("hello") + 1, | |||
map_uri(plugin, LV2_ATOM__String), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
const uint32_t urid = map_uri(plugin, "http://example.org/urivalue"); | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/uri"), | |||
&urid, | |||
sizeof(uint32_t), | |||
map_uri(plugin, LV2_ATOM__URID), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/num-runs"), | |||
&plugin->num_runs, | |||
sizeof(plugin->num_runs), | |||
map_uri(plugin, LV2_ATOM__Int), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
const float two = 2.0f; | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/two"), | |||
&two, | |||
sizeof(two), | |||
map_uri(plugin, LV2_ATOM__Float), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
const uint32_t affirmative = 1; | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/true"), | |||
&affirmative, | |||
sizeof(affirmative), | |||
map_uri(plugin, LV2_ATOM__Bool), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
const uint32_t negative = 0; | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/false"), | |||
&negative, | |||
sizeof(negative), | |||
map_uri(plugin, LV2_ATOM__Bool), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
const uint8_t blob[] = "I am a blob of arbitrary data."; | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/blob"), | |||
blob, | |||
sizeof(blob), | |||
map_uri(plugin, "http://example.org/SomeUnknownType"), | |||
LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE); | |||
if (map_path) { | |||
FILE* file = fopen(plugin->tmp_file_path, "w"); | |||
fprintf(file, "Hello\n"); | |||
fclose(file); | |||
char* apath = map_path->abstract_path(map_path->handle, | |||
plugin->tmp_file_path); | |||
char* apath2 = map_path->abstract_path(map_path->handle, | |||
plugin->tmp_file_path); | |||
if (strcmp(apath, apath2)) { | |||
fprintf(stderr, "ERROR: Path %s != %s\n", apath, apath2); | |||
} | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/extfile"), | |||
apath, | |||
strlen(apath) + 1, | |||
map_uri(plugin, LV2_ATOM__Path), | |||
LV2_STATE_IS_PORTABLE); | |||
free(apath); | |||
free(apath2); | |||
if (plugin->rec_file) { | |||
fflush(plugin->rec_file); | |||
apath = map_path->abstract_path(map_path->handle, | |||
plugin->rec_file_path); | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/recfile"), | |||
apath, | |||
strlen(apath) + 1, | |||
map_uri(plugin, LV2_ATOM__Path), | |||
LV2_STATE_IS_PORTABLE); | |||
free(apath); | |||
} | |||
if (make_path) { | |||
char* spath = make_path->path(make_path->handle, "save"); | |||
FILE* sfile = fopen(spath, "w"); | |||
fprintf(sfile, "save"); | |||
fclose(sfile); | |||
apath = map_path->abstract_path(map_path->handle, spath); | |||
store(callback_data, | |||
map_uri(plugin, "http://example.org/save-file"), | |||
apath, | |||
strlen(apath) + 1, | |||
map_uri(plugin, LV2_ATOM__Path), | |||
LV2_STATE_IS_PORTABLE); | |||
free(apath); | |||
free(spath); | |||
} | |||
} | |||
return LV2_STATE_SUCCESS; | |||
} | |||
static LV2_State_Status | |||
restore(LV2_Handle instance, | |||
LV2_State_Retrieve_Function retrieve, | |||
void* callback_data, | |||
uint32_t flags, | |||
const LV2_Feature* const* features) | |||
{ | |||
Test* plugin = (Test*)instance; | |||
LV2_State_Map_Path* map_path = NULL; | |||
for (int i = 0; features && features[i]; ++i) { | |||
if (!strcmp(features[i]->URI, LV2_STATE__mapPath)) { | |||
map_path = (LV2_State_Map_Path*)features[i]->data; | |||
} | |||
} | |||
size_t size; | |||
uint32_t type; | |||
uint32_t valflags; | |||
plugin->num_runs = *(int32_t*)retrieve( | |||
callback_data, | |||
map_uri(plugin, "http://example.org/num-runs"), | |||
&size, &type, &valflags); | |||
if (!map_path) { | |||
return LV2_STATE_ERR_NO_FEATURE; | |||
} | |||
char* apath = (char*)retrieve( | |||
callback_data, | |||
map_uri(plugin, "http://example.org/extfile"), | |||
&size, &type, &valflags); | |||
if (apath) { | |||
char* path = map_path->absolute_path(map_path->handle, apath); | |||
FILE* f = fopen(path, "r"); | |||
char str[8]; | |||
size_t n_read = fread(str, 1, sizeof(str), f); | |||
fclose(f); | |||
if (strncmp(str, "Hello\n", n_read)) { | |||
fprintf(stderr, "error: Restored bad file contents `%s' != `Hello'\n", | |||
str); | |||
} | |||
free(path); | |||
} | |||
apath = (char*)retrieve( | |||
callback_data, | |||
map_uri(plugin, "http://example.org/save-file"), | |||
&size, &type, &valflags); | |||
if (apath) { | |||
char* spath = map_path->absolute_path(map_path->handle, apath); | |||
FILE* sfile = fopen(spath, "r"); | |||
if (!sfile) { | |||
fprintf(stderr, "error: Failed to open save file %s\n", spath); | |||
} else { | |||
fclose(sfile); | |||
} | |||
free(spath); | |||
} else { | |||
fprintf(stderr, "error: Failed to restore save file.\n"); | |||
} | |||
return LV2_STATE_SUCCESS; | |||
} | |||
static const void* | |||
extension_data(const char* uri) | |||
{ | |||
static const LV2_State_Interface state = { save, restore }; | |||
if (!strcmp(uri, LV2_STATE__interface)) { | |||
return &state; | |||
} | |||
return NULL; | |||
} | |||
static const LV2_Descriptor descriptor = { | |||
TEST_URI, | |||
instantiate, | |||
connect_port, | |||
NULL, // activate, | |||
run, | |||
NULL, // deactivate, | |||
cleanup, | |||
extension_data | |||
}; | |||
LV2_SYMBOL_EXPORT | |||
const LV2_Descriptor* lv2_descriptor(uint32_t index) | |||
{ | |||
switch (index) { | |||
case 0: | |||
return &descriptor; | |||
default: | |||
return NULL; | |||
} | |||
} |
@@ -1,40 +0,0 @@ | |||
# Lilv Test Plugin | |||
# Copyright 2011 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 lv2: <http://lv2plug.in/ns/lv2core#> . | |||
@prefix ui: <http://lv2plug.in/ns/extensions/ui#> . | |||
<http://example.org/lilv-test-plugin> | |||
a lv2:Plugin ; | |||
doap:name "Lilv Test" ; | |||
doap:license <http://opensource.org/licenses/isc> ; | |||
lv2:requiredFeature <http://lv2plug.in/ns/ext/urid#Mapper> ; | |||
lv2:optionalFeature lv2:hardRTCapable ; | |||
lv2:extensionData <http://lv2plug.in/ns/ext/state#Interface> ; | |||
lv2:port [ | |||
a lv2:InputPort , | |||
lv2:ControlPort ; | |||
lv2:index 0 ; | |||
lv2:symbol "input" ; | |||
lv2:name "Input" | |||
] , [ | |||
a lv2:OutputPort , | |||
lv2:ControlPort ; | |||
lv2:index 1 ; | |||
lv2:symbol "output" ; | |||
lv2:name "Output" | |||
] . |
@@ -1,52 +0,0 @@ | |||
/* | |||
Copyright 2011-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 bench.h A simple real-time benchmarking API. | |||
*/ | |||
#ifndef BENCH_H | |||
#define BENCH_H | |||
#define _POSIX_C_SOURCE 199309L | |||
#include <time.h> | |||
#include <sys/time.h> | |||
static inline double | |||
bench_elapsed_s(const struct timespec* start, const struct timespec* end) | |||
{ | |||
return ((end->tv_sec - start->tv_sec) | |||
+ ((end->tv_nsec - start->tv_nsec) * 0.000000001)); | |||
} | |||
static inline struct timespec | |||
bench_start() | |||
{ | |||
struct timespec start_t; | |||
clock_gettime(CLOCK_REALTIME, &start_t); | |||
return start_t; | |||
} | |||
static inline double | |||
bench_end(const struct timespec* start_t) | |||
{ | |||
struct timespec end_t; | |||
clock_gettime(CLOCK_REALTIME, &end_t); | |||
return bench_elapsed_s(start_t, &end_t); | |||
} | |||
#endif /* BENCH_H */ |
@@ -1,38 +0,0 @@ | |||
/* | |||
Copyright 2007-2011 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. | |||
*/ | |||
#include <stdio.h> | |||
#include "lilv/lilv.h" | |||
#include "lilv_config.h" | |||
int | |||
main(int argc, char** argv) | |||
{ | |||
LilvWorld* world = lilv_world_new(); | |||
lilv_world_load_all(world); | |||
const LilvPlugins* plugins = lilv_world_get_all_plugins(world); | |||
LILV_FOREACH(plugins, p, plugins) { | |||
const LilvPlugin* plugin = lilv_plugins_get(plugins, p); | |||
lilv_plugin_get_class(plugin); | |||
} | |||
lilv_world_free(world); | |||
return 0; | |||
} |
@@ -1,59 +0,0 @@ | |||
# Bash auto-completion script written for lv2info and lv2jack. | |||
# Could be adapted to any other program that takes an | |||
# LV2 plugin URI as parameter. | |||
# Updated for Lilv by David Robillard <d@drobilla.net> on 2012-01-08. | |||
# Written by Lars Luthman <lars.luthman@gmail.com> on 2009-10-12. | |||
# No copyright claimed for this script. Do what you want with it. | |||
# For some reason Bash splits the command line not only at whitespace | |||
# but also at ':' signs before putting the parts into COMP_WORDS. | |||
# Since ':' is used in all URIs, which are what we want to complete, | |||
# we have to put the URI back together before we can complete it | |||
# and then cut off the parts we prepended from the completions. | |||
# It probably breaks in some special cases but for most common uses | |||
# it should work fine. | |||
function _lv2info() { | |||
local uri cur opts w wn raw_reply len type | |||
opts=`lv2ls | xargs -n1 echo -n " "` | |||
# This is the last "word", as split by Bash. | |||
cur="${COMP_WORDS[COMP_CWORD]}" | |||
w="$cur" | |||
# Add the previous word while it or this one is a word break character | |||
for i in `seq $(( $COMP_CWORD - 1 )) -1 1`; do | |||
wn="${COMP_WORDS[i]}" | |||
if expr "$COMP_WORDBREAKS" : ".*$wn" > /dev/null; then | |||
if expr "$COMP_WORDBREAKS" : ".*$w" > /dev/null; then | |||
break | |||
fi | |||
fi | |||
w="$wn" | |||
uri="$w$uri" | |||
done | |||
# Check the length of the words we prepend | |||
len=${#uri} | |||
uri="$uri$cur" | |||
raw_reply="$(compgen -W "${opts}" -- ${uri})" | |||
# If we are listing alternatives, just print the full URIs. | |||
type=`echo $COMP_TYPE | awk '{ printf "%c", $1 }'` | |||
if expr "?!@%" : ".*$type" > /dev/null; then | |||
COMPREPLY=( $raw_reply ) | |||
return 0 | |||
fi | |||
# Otherwise, strip the prepended words from all completion suggestions. | |||
COMPREPLY=() | |||
for i in $raw_reply; do | |||
COMPREPLY=( ${COMPREPLY[@]} ${i:len} ) | |||
done | |||
} | |||
complete -F _lv2info lv2info | |||
# And the same for lv2jack. | |||
complete -F _lv2info lv2jack |
@@ -1,226 +0,0 @@ | |||
/* | |||
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. | |||
*/ | |||
#define _POSIX_C_SOURCE 199309L | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include "lilv/lilv.h" | |||
#include "lv2/lv2plug.in/ns/ext/atom/atom.h" | |||
#include "lilv_config.h" | |||
#include "bench.h" | |||
#include "uri_table.h" | |||
static LilvNode* atom_AtomPort = NULL; | |||
static LilvNode* atom_Sequence = NULL; | |||
static LilvNode* lv2_AudioPort = NULL; | |||
static LilvNode* lv2_CVPort = NULL; | |||
static LilvNode* lv2_ControlPort = NULL; | |||
static LilvNode* lv2_InputPort = NULL; | |||
static LilvNode* lv2_OutputPort = NULL; | |||
static LilvNode* urid_map = NULL; | |||
static bool full_output = false; | |||
static void | |||
print_version(void) | |||
{ | |||
printf( | |||
"lv2bench (lilv) " LILV_VERSION "\n" | |||
"Copyright 2012 David Robillard <http://drobilla.net>\n" | |||
"License: <http://www.opensource.org/licenses/isc-license>\n" | |||
"This is free software: you are free to change and redistribute it.\n" | |||
"There is NO WARRANTY, to the extent permitted by law.\n"); | |||
} | |||
static void | |||
print_usage(void) | |||
{ | |||
printf("lv2bench - Benchmark all installed and supported LV2 plugins.\n"); | |||
printf("Usage: lv2bench [OPTIONS]\n"); | |||
printf("\n"); | |||
printf(" -b BLOCK_SIZE Specify block size, in audio frames.\n"); | |||
printf(" -f, --full Full plottable output.\n"); | |||
printf(" -h, --help Display this help and exit.\n"); | |||
printf(" -n FRAMES Total number of audio frames to process\n"); | |||
printf(" --version Display version information and exit\n"); | |||
} | |||
static double | |||
bench(const LilvPlugin* p, uint32_t sample_count, uint32_t block_size) | |||
{ | |||
URITable uri_table; | |||
uri_table_init(&uri_table); | |||
LV2_URID_Map map = { &uri_table, uri_table_map }; | |||
LV2_Feature map_feature = { LV2_URID_MAP_URI, &map }; | |||
LV2_URID_Unmap unmap = { &uri_table, uri_table_unmap }; | |||
LV2_Feature unmap_feature = { LV2_URID_UNMAP_URI, &unmap }; | |||
const LV2_Feature* features[] = { &map_feature, &unmap_feature, NULL }; | |||
float* const buf = (float*)calloc(block_size * 2, sizeof(float)); | |||
float* const in = buf; | |||
float* const out = buf + block_size; | |||
if (!buf) { | |||
fprintf(stderr, "Out of memory\n"); | |||
return 0.0; | |||
} | |||
LV2_Atom_Sequence seq = { | |||
{ sizeof(LV2_Atom_Sequence_Body), | |||
uri_table_map(&uri_table, LV2_ATOM__Sequence) }, | |||
{ 0, 0 } }; | |||
const char* uri = lilv_node_as_string(lilv_plugin_get_uri(p)); | |||
LilvNodes* required = lilv_plugin_get_required_features(p); | |||
LILV_FOREACH(nodes, i, required) { | |||
const LilvNode* feature = lilv_nodes_get(required, i); | |||
if (!lilv_node_equals(feature, urid_map)) { | |||
fprintf(stderr, "<%s> requires feature <%s>, skipping\n", | |||
uri, lilv_node_as_uri(feature)); | |||
free(buf); | |||
return 0.0; | |||
} | |||
} | |||
LilvInstance* instance = lilv_plugin_instantiate(p, 48000.0, features); | |||
if (!instance) { | |||
fprintf(stderr, "Failed to instantiate <%s>\n", | |||
lilv_node_as_uri(lilv_plugin_get_uri(p))); | |||
free(buf); | |||
return 0.0; | |||
} | |||
float* controls = (float*)calloc( | |||
lilv_plugin_get_num_ports(p), sizeof(float)); | |||
lilv_plugin_get_port_ranges_float(p, NULL, NULL, controls); | |||
const uint32_t n_ports = lilv_plugin_get_num_ports(p); | |||
for (uint32_t index = 0; index < n_ports; ++index) { | |||
const LilvPort* port = lilv_plugin_get_port_by_index(p, index); | |||
if (lilv_port_is_a(p, port, lv2_ControlPort)) { | |||
lilv_instance_connect_port(instance, index, &controls[index]); | |||
} else if (lilv_port_is_a(p, port, lv2_AudioPort) || | |||
lilv_port_is_a(p, port, lv2_CVPort)) { | |||
if (lilv_port_is_a(p, port, lv2_InputPort)) { | |||
lilv_instance_connect_port(instance, index, in); | |||
} else if (lilv_port_is_a(p, port, lv2_OutputPort)) { | |||
lilv_instance_connect_port(instance, index, out); | |||
} else { | |||
fprintf(stderr, "<%s> port %d neither input nor output, skipping\n", | |||
uri, index); | |||
lilv_instance_free(instance); | |||
free(buf); | |||
free(controls); | |||
return 0.0; | |||
} | |||
} else if (lilv_port_is_a(p, port, atom_AtomPort)) { | |||
lilv_instance_connect_port(instance, index, &seq); | |||
} else { | |||
fprintf(stderr, "<%s> port %d has unknown type, skipping\n", | |||
uri, index); | |||
lilv_instance_free(instance); | |||
free(buf); | |||
free(controls); | |||
return 0.0; | |||
} | |||
} | |||
lilv_instance_activate(instance); | |||
struct timespec ts = bench_start(); | |||
for (uint32_t i = 0; i < (sample_count / block_size); ++i) { | |||
lilv_instance_run(instance, block_size); | |||
} | |||
const double elapsed = bench_end(&ts); | |||
lilv_instance_deactivate(instance); | |||
lilv_instance_free(instance); | |||
uri_table_destroy(&uri_table); | |||
if (full_output) { | |||
printf("%d %d ", block_size, sample_count); | |||
} | |||
printf("%lf %s\n", elapsed, uri); | |||
free(buf); | |||
free(controls); | |||
return elapsed; | |||
} | |||
int | |||
main(int argc, char** argv) | |||
{ | |||
uint32_t block_size = 512; | |||
uint32_t sample_count = (1 << 19); | |||
for (int i = 1; i < argc; ++i) { | |||
if (!strcmp(argv[i], "--version")) { | |||
print_version(); | |||
return 0; | |||
} else if (!strcmp(argv[i], "--help")) { | |||
print_usage(); | |||
return 0; | |||
} else if (!strcmp(argv[i], "-f")) { | |||
full_output = true; | |||
} else if (!strcmp(argv[i], "-n") && (i + 1 < argc)) { | |||
sample_count = atoi(argv[++i]); | |||
} else if (!strcmp(argv[i], "-b") && (i + 1 < argc)) { | |||
block_size = atoi(argv[++i]); | |||
} else { | |||
print_usage(); | |||
return 1; | |||
} | |||
} | |||
LilvWorld* world = lilv_world_new(); | |||
lilv_world_load_all(world); | |||
atom_AtomPort = lilv_new_uri(world, LV2_ATOM__AtomPort); | |||
atom_Sequence = lilv_new_uri(world, LV2_ATOM__Sequence); | |||
lv2_AudioPort = lilv_new_uri(world, LV2_CORE__AudioPort); | |||
lv2_CVPort = lilv_new_uri(world, LV2_CORE__CVPort); | |||
lv2_ControlPort = lilv_new_uri(world, LV2_CORE__ControlPort); | |||
lv2_InputPort = lilv_new_uri(world, LV2_CORE__InputPort); | |||
lv2_OutputPort = lilv_new_uri(world, LV2_CORE__OutputPort); | |||
urid_map = lilv_new_uri(world, LV2_URID__map); | |||
if (full_output) { | |||
printf("# Block Samples Time Plugin\n"); | |||
} | |||
const LilvPlugins* plugins = lilv_world_get_all_plugins(world); | |||
LILV_FOREACH(plugins, i, plugins) { | |||
bench(lilv_plugins_get(plugins, i), sample_count, block_size); | |||
} | |||
lilv_node_free(urid_map); | |||
lilv_node_free(lv2_OutputPort); | |||
lilv_node_free(lv2_InputPort); | |||
lilv_node_free(lv2_ControlPort); | |||
lilv_node_free(lv2_CVPort); | |||
lilv_node_free(lv2_AudioPort); | |||
lilv_node_free(atom_Sequence); | |||
lilv_node_free(atom_AtomPort); | |||
lilv_world_free(world); | |||
return 0; | |||
} |
@@ -1,437 +0,0 @@ | |||
/* | |||
Copyright 2007-2011 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. | |||
*/ | |||
#include <float.h> | |||
#include <math.h> | |||
#include <stdio.h> | |||
#include <stdlib.h> | |||
#include <string.h> | |||
#include "lv2/lv2plug.in/ns/ext/port-groups/port-groups.h" | |||
#include "lv2/lv2plug.in/ns/ext/presets/presets.h" | |||
#include "lv2/lv2plug.in/ns/ext/event/event.h" | |||
#include "lilv/lilv.h" | |||
#include "lilv_config.h" | |||
#ifdef _MSC_VER | |||
# define isnan _isnan | |||
#endif | |||
LilvNode* applies_to_pred = NULL; | |||
LilvNode* control_class = NULL; | |||
LilvNode* event_class = NULL; | |||
LilvNode* group_pred = NULL; | |||
LilvNode* label_pred = NULL; | |||
LilvNode* preset_class = NULL; | |||
LilvNode* designation_pred = NULL; | |||
LilvNode* supports_event_pred = NULL; | |||
static void | |||
print_port(const LilvPlugin* p, | |||
uint32_t index, | |||
float* mins, | |||
float* maxes, | |||
float* defaults) | |||
{ | |||
const LilvPort* port = lilv_plugin_get_port_by_index(p, index); | |||
printf("\n\tPort %d:\n", index); | |||
if (!port) { | |||
printf("\t\tERROR: Illegal/nonexistent port\n"); | |||
return; | |||
} | |||
bool first = true; | |||
const LilvNodes* classes = lilv_port_get_classes(p, port); | |||
printf("\t\tType: "); | |||
LILV_FOREACH(nodes, i, classes) { | |||
const LilvNode* value = lilv_nodes_get(classes, i); | |||
if (!first) { | |||
printf("\n\t\t "); | |||
} | |||
printf("%s", lilv_node_as_uri(value)); | |||
first = false; | |||
} | |||
if (lilv_port_is_a(p, port, event_class)) { | |||
LilvNodes* supported = lilv_port_get_value( | |||
p, port, supports_event_pred); | |||
if (lilv_nodes_size(supported) > 0) { | |||
printf("\n\t\tSupported events:\n"); | |||
LILV_FOREACH(nodes, i, supported) { | |||
const LilvNode* value = lilv_nodes_get(supported, i); | |||
printf("\t\t\t%s\n", lilv_node_as_uri(value)); | |||
} | |||
} | |||
lilv_nodes_free(supported); | |||
} | |||
LilvScalePoints* points = lilv_port_get_scale_points(p, port); | |||
if (points) | |||
printf("\n\t\tScale Points:\n"); | |||
LILV_FOREACH(scale_points, i, points) { | |||
const LilvScalePoint* point = lilv_scale_points_get(points, i); | |||
printf("\t\t\t%s = \"%s\"\n", | |||
lilv_node_as_string(lilv_scale_point_get_value(point)), | |||
lilv_node_as_string(lilv_scale_point_get_label(point))); | |||
} | |||
lilv_scale_points_free(points); | |||
const LilvNode* sym = lilv_port_get_symbol(p, port); | |||
printf("\n\t\tSymbol: %s\n", lilv_node_as_string(sym)); | |||
LilvNode* name = lilv_port_get_name(p, port); | |||
printf("\t\tName: %s\n", lilv_node_as_string(name)); | |||
lilv_node_free(name); | |||
LilvNodes* groups = lilv_port_get_value(p, port, group_pred); | |||
if (lilv_nodes_size(groups) > 0) { | |||
printf("\t\tGroup: %s\n", | |||
lilv_node_as_string(lilv_nodes_get_first(groups))); | |||
} | |||
lilv_nodes_free(groups); | |||
LilvNodes* designations = lilv_port_get_value(p, port, designation_pred); | |||
if (lilv_nodes_size(designations) > 0) { | |||
printf("\t\tDesignation: %s\n", | |||
lilv_node_as_string(lilv_nodes_get_first(designations))); | |||
} | |||
lilv_nodes_free(designations); | |||
if (lilv_port_is_a(p, port, control_class)) { | |||
if (!isnan(mins[index])) | |||
printf("\t\tMinimum: %f\n", mins[index]); | |||
if (!isnan(mins[index])) | |||
printf("\t\tMaximum: %f\n", maxes[index]); | |||
if (!isnan(mins[index])) | |||
printf("\t\tDefault: %f\n", defaults[index]); | |||
} | |||
LilvNodes* properties = lilv_port_get_properties(p, port); | |||
if (lilv_nodes_size(properties) > 0) | |||
printf("\t\tProperties: "); | |||
first = true; | |||
LILV_FOREACH(nodes, i, properties) { | |||
if (!first) { | |||
printf("\t\t "); | |||
} | |||
printf("%s\n", lilv_node_as_uri(lilv_nodes_get(properties, i))); | |||
first = false; | |||
} | |||
if (lilv_nodes_size(properties) > 0) | |||
printf("\n"); | |||
lilv_nodes_free(properties); | |||
} | |||
static void | |||
print_plugin(LilvWorld* world, | |||
const LilvPlugin* p) | |||
{ | |||
LilvNode* val = NULL; | |||
printf("%s\n\n", lilv_node_as_uri(lilv_plugin_get_uri(p))); | |||
val = lilv_plugin_get_name(p); | |||
if (val) { | |||
printf("\tName: %s\n", lilv_node_as_string(val)); | |||
lilv_node_free(val); | |||
} | |||
const LilvPluginClass* pclass = lilv_plugin_get_class(p); | |||
const LilvNode* class_label = lilv_plugin_class_get_label(pclass); | |||
if (class_label) { | |||
printf("\tClass: %s\n", lilv_node_as_string(class_label)); | |||
} | |||
val = lilv_plugin_get_author_name(p); | |||
if (val) { | |||
printf("\tAuthor: %s\n", lilv_node_as_string(val)); | |||
lilv_node_free(val); | |||
} | |||
val = lilv_plugin_get_author_email(p); | |||
if (val) { | |||
printf("\tAuthor Email: %s\n", lilv_node_as_uri(val)); | |||
lilv_node_free(val); | |||
} | |||
val = lilv_plugin_get_author_homepage(p); | |||
if (val) { | |||
printf("\tAuthor Homepage: %s\n", lilv_node_as_uri(val)); | |||
lilv_node_free(val); | |||
} | |||
if (lilv_plugin_has_latency(p)) { | |||
uint32_t latency_port = lilv_plugin_get_latency_port_index(p); | |||
printf("\tHas latency: yes, reported by port %d\n", latency_port); | |||
} else { | |||
printf("\tHas latency: no\n"); | |||
} | |||
printf("\tBundle: %s\n", | |||
lilv_node_as_uri(lilv_plugin_get_bundle_uri(p))); | |||
const LilvNode* binary_uri = lilv_plugin_get_library_uri(p); | |||
if (binary_uri) { | |||
printf("\tBinary: %s\n", | |||
lilv_node_as_uri(lilv_plugin_get_library_uri(p))); | |||
} | |||
LilvUIs* uis = lilv_plugin_get_uis(p); | |||
if (lilv_nodes_size(uis) > 0) { | |||
printf("\tUIs:\n"); | |||
LILV_FOREACH(uis, i, uis) { | |||
const LilvUI* ui = lilv_uis_get(uis, i); | |||
printf("\t\t%s\n", lilv_node_as_uri(lilv_ui_get_uri(ui))); | |||
const char* binary = lilv_node_as_uri(lilv_ui_get_binary_uri(ui)); | |||
const LilvNodes* types = lilv_ui_get_classes(ui); | |||
LILV_FOREACH(nodes, t, types) { | |||
printf("\t\t\tClass: %s\n", | |||
lilv_node_as_uri(lilv_nodes_get(types, t))); | |||
} | |||
if (binary) | |||
printf("\t\t\tBinary: %s\n", binary); | |||
printf("\t\t\tBundle: %s\n", | |||
lilv_node_as_uri(lilv_ui_get_bundle_uri(ui))); | |||
} | |||
} | |||
lilv_uis_free(uis); | |||
printf("\tData URIs: "); | |||
const LilvNodes* data_uris = lilv_plugin_get_data_uris(p); | |||
bool first = true; | |||
LILV_FOREACH(nodes, i, data_uris) { | |||
if (!first) { | |||
printf("\n\t "); | |||
} | |||
printf("%s", lilv_node_as_uri(lilv_nodes_get(data_uris, i))); | |||
first = false; | |||
} | |||
printf("\n"); | |||
/* Required Features */ | |||
LilvNodes* features = lilv_plugin_get_required_features(p); | |||
if (features) | |||
printf("\tRequired Features: "); | |||
first = true; | |||
LILV_FOREACH(nodes, i, features) { | |||
if (!first) { | |||
printf("\n\t "); | |||
} | |||
printf("%s", lilv_node_as_uri(lilv_nodes_get(features, i))); | |||
first = false; | |||
} | |||
if (features) | |||
printf("\n"); | |||
lilv_nodes_free(features); | |||
/* Optional Features */ | |||
features = lilv_plugin_get_optional_features(p); | |||
if (features) | |||
printf("\tOptional Features: "); | |||
first = true; | |||
LILV_FOREACH(nodes, i, features) { | |||
if (!first) { | |||
printf("\n\t "); | |||
} | |||
printf("%s", lilv_node_as_uri(lilv_nodes_get(features, i))); | |||
first = false; | |||
} | |||
if (features) | |||
printf("\n"); | |||
lilv_nodes_free(features); | |||
/* Extension Data */ | |||
LilvNodes* data = lilv_plugin_get_extension_data(p); | |||
if (data) | |||
printf("\tExtension Data: "); | |||
first = true; | |||
LILV_FOREACH(nodes, i, data) { | |||
if (!first) { | |||
printf("\n\t "); | |||
} | |||
printf("%s", lilv_node_as_uri(lilv_nodes_get(data, i))); | |||
first = false; | |||
} | |||
if (data) | |||
printf("\n"); | |||
lilv_nodes_free(data); | |||
/* Presets */ | |||
LilvNodes* presets = lilv_plugin_get_related(p, preset_class); | |||
if (presets) | |||
printf("\tPresets: \n"); | |||
LILV_FOREACH(nodes, i, presets) { | |||
const LilvNode* preset = lilv_nodes_get(presets, i); | |||
lilv_world_load_resource(world, preset); | |||
LilvNodes* titles = lilv_world_find_nodes( | |||
world, preset, label_pred, NULL); | |||
if (titles) { | |||
const LilvNode* title = lilv_nodes_get_first(titles); | |||
printf("\t %s\n", lilv_node_as_string(title)); | |||
lilv_nodes_free(titles); | |||
} else { | |||
fprintf(stderr, "Preset <%s> has no rdfs:label\n", | |||
lilv_node_as_string(lilv_nodes_get(presets, i))); | |||
} | |||
} | |||
lilv_nodes_free(presets); | |||
/* Ports */ | |||
const uint32_t num_ports = lilv_plugin_get_num_ports(p); | |||
float* mins = (float*)calloc(num_ports, sizeof(float)); | |||
float* maxes = (float*)calloc(num_ports, sizeof(float)); | |||
float* defaults = (float*)calloc(num_ports, sizeof(float)); | |||
lilv_plugin_get_port_ranges_float(p, mins, maxes, defaults); | |||
for (uint32_t i = 0; i < num_ports; ++i) | |||
print_port(p, i, mins, maxes, defaults); | |||
free(mins); | |||
free(maxes); | |||
free(defaults); | |||
} | |||
static void | |||
print_version(void) | |||
{ | |||
printf( | |||
"lv2info (lilv) " LILV_VERSION "\n" | |||
"Copyright 2007-2011 David Robillard <http://drobilla.net>\n" | |||
"License: <http://www.opensource.org/licenses/isc-license>\n" | |||
"This is free software: you are free to change and redistribute it.\n" | |||
"There is NO WARRANTY, to the extent permitted by law.\n"); | |||
} | |||
static void | |||
print_usage(void) | |||
{ | |||
printf( | |||
"Usage: lv2info [OPTION]... PLUGIN_URI\n" | |||
"Print information about an installed LV2 plugin.\n\n" | |||
" -p FILE Write Turtle description of plugin to FILE\n" | |||
" -m FILE Add record of plugin to manifest FILE\n" | |||
" --help Display this help and exit\n" | |||
" --version Display version information and exit\n\n" | |||
"For -p and -m, Turtle files are appended to (not overwritten),\n" | |||
"and @prefix directives are only written if the file was empty.\n" | |||
"This allows several plugins to be added to a single file.\n"); | |||
} | |||
int | |||
main(int argc, char** argv) | |||
{ | |||
if (argc == 1) { | |||
print_usage(); | |||
return 1; | |||
} | |||
const char* plugin_file = NULL; | |||
const char* manifest_file = NULL; | |||
const char* plugin_uri = NULL; | |||
for (int i = 1; i < argc; ++i) { | |||
if (!strcmp(argv[i], "--version")) { | |||
print_version(); | |||
return 0; | |||
} else if (!strcmp(argv[i], "--help")) { | |||
print_usage(); | |||
return 0; | |||
} else if (!strcmp(argv[i], "-p")) { | |||
plugin_file = argv[++i]; | |||
} else if (!strcmp(argv[i], "-m")) { | |||
manifest_file = argv[++i]; | |||
} else if (argv[i][0] == '-') { | |||
print_usage(); | |||
return 1; | |||
} else if (i == argc - 1) { | |||
plugin_uri = argv[i]; | |||
} | |||
} | |||
int ret = 0; | |||
LilvWorld* world = lilv_world_new(); | |||
lilv_world_load_all(world); | |||
LilvNode* uri = lilv_new_uri(world, plugin_uri); | |||
if (!uri) { | |||
fprintf(stderr, "Invalid plugin URI\n"); | |||
lilv_world_free(world); | |||
return 1; | |||
} | |||
applies_to_pred = lilv_new_uri(world, LV2_CORE__appliesTo); | |||
control_class = lilv_new_uri(world, LILV_URI_CONTROL_PORT); | |||
event_class = lilv_new_uri(world, LILV_URI_EVENT_PORT); | |||
group_pred = lilv_new_uri(world, LV2_PORT_GROUPS__group); | |||
label_pred = lilv_new_uri(world, LILV_NS_RDFS "label"); | |||
preset_class = lilv_new_uri(world, LV2_PRESETS__Preset); | |||
designation_pred = lilv_new_uri(world, LV2_CORE__designation); | |||
supports_event_pred = lilv_new_uri(world, LV2_EVENT__supportsEvent); | |||
const LilvPlugins* plugins = lilv_world_get_all_plugins(world); | |||
const LilvPlugin* p = lilv_plugins_get_by_uri(plugins, uri); | |||
if (p && plugin_file) { | |||
LilvNode* base = lilv_new_uri(world, plugin_file); | |||
FILE* plugin_fd = fopen(plugin_file, "a"); | |||
lilv_plugin_write_description(world, p, base, plugin_fd); | |||
fclose(plugin_fd); | |||
if (manifest_file) { | |||
FILE* manifest_fd = fopen(manifest_file, "a"); | |||
lilv_plugin_write_manifest_entry( | |||
world, p, base, manifest_fd, plugin_file); | |||
fclose(manifest_fd); | |||
} | |||
lilv_node_free(base); | |||
} else if (p) { | |||
print_plugin(world, p); | |||
} else { | |||
fprintf(stderr, "Plugin not found.\n"); | |||
} | |||
ret = (p != NULL ? 0 : -1); | |||
lilv_node_free(uri); | |||
lilv_node_free(supports_event_pred); | |||
lilv_node_free(designation_pred); | |||
lilv_node_free(preset_class); | |||
lilv_node_free(label_pred); | |||
lilv_node_free(group_pred); | |||
lilv_node_free(event_class); | |||
lilv_node_free(control_class); | |||
lilv_node_free(applies_to_pred); | |||
lilv_world_free(world); | |||
return ret; | |||
} | |||
@@ -1,93 +0,0 @@ | |||
/* | |||
Copyright 2007-2011 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. | |||
*/ | |||
#include <stdio.h> | |||
#include <string.h> | |||
#include "lilv/lilv.h" | |||
#include "lilv_config.h" | |||
static void | |||
list_plugins(const LilvPlugins* list, bool show_names) | |||
{ | |||
LILV_FOREACH(plugins, i, list) { | |||
const LilvPlugin* p = lilv_plugins_get(list, i); | |||
if (show_names) { | |||
LilvNode* n = lilv_plugin_get_name(p); | |||
printf("%s\n", lilv_node_as_string(n)); | |||
lilv_node_free(n); | |||
} else { | |||
printf("%s\n", lilv_node_as_uri(lilv_plugin_get_uri(p))); | |||
} | |||
} | |||
} | |||
static void | |||
print_version(void) | |||
{ | |||
printf( | |||
"lv2ls (lilv) " LILV_VERSION "\n" | |||
"Copyright 2007-2011 David Robillard <http://drobilla.net>\n" | |||
"License: <http://www.opensource.org/licenses/isc-license>\n" | |||
"This is free software: you are free to change and redistribute it.\n" | |||
"There is NO WARRANTY, to the extent permitted by law.\n"); | |||
} | |||
static void | |||
print_usage(void) | |||
{ | |||
printf("Usage: lv2ls [OPTION]...\n"); | |||
printf("List all installed LV2 plugins.\n"); | |||
printf("\n"); | |||
printf(" -n, --names Show names instead of URIs\n"); | |||
printf(" --help Display this help and exit\n"); | |||
printf(" --version Display version information and exit\n"); | |||
printf("\n"); | |||
printf("The environment variable LV2_PATH can be used to control where\n"); | |||
printf("this (and all other lilv based LV2 hosts) will search for plugins.\n"); | |||
} | |||
int | |||
main(int argc, char** argv) | |||
{ | |||
bool show_names = false; | |||
for (int i = 1; i < argc; ++i) { | |||
if (!strcmp(argv[i], "--names") || !strcmp(argv[i], "-n")) { | |||
show_names = true; | |||
} else if (!strcmp(argv[i], "--version")) { | |||
print_version(); | |||
return 0; | |||
} else if (!strcmp(argv[i], "--help")) { | |||
print_usage(); | |||
return 0; | |||
} else { | |||
print_usage(); | |||
return 1; | |||
} | |||
} | |||
LilvWorld* world = lilv_world_new(); | |||
lilv_world_load_all(world); | |||
const LilvPlugins* plugins = lilv_world_get_all_plugins(world); | |||
list_plugins(plugins, show_names); | |||
lilv_world_free(world); | |||
return 0; | |||
} |
@@ -1,73 +0,0 @@ | |||
/* | |||
Copyright 2011-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 uri_table.h A toy URI map/unmap implementation. | |||
This file contains function definitions and must only be included once. | |||
*/ | |||
#ifndef URI_TABLE_H | |||
#define URI_TABLE_H | |||
typedef struct { | |||
char** uris; | |||
size_t n_uris; | |||
} URITable; | |||
static void | |||
uri_table_init(URITable* table) | |||
{ | |||
table->uris = NULL; | |||
table->n_uris = 0; | |||
} | |||
static void | |||
uri_table_destroy(URITable* table) | |||
{ | |||
free(table->uris); | |||
} | |||
static LV2_URID | |||
uri_table_map(LV2_URID_Map_Handle handle, | |||
const char* uri) | |||
{ | |||
URITable* table = (URITable*)handle; | |||
for (size_t i = 0; i < table->n_uris; ++i) { | |||
if (!strcmp(table->uris[i], uri)) { | |||
return i + 1; | |||
} | |||
} | |||
const size_t len = strlen(uri); | |||
table->uris = (char**)realloc(table->uris, ++table->n_uris * sizeof(char*)); | |||
table->uris[table->n_uris - 1] = malloc(len + 1); | |||
memcpy(table->uris[table->n_uris - 1], uri, len + 1); | |||
return table->n_uris; | |||
} | |||
static const char* | |||
uri_table_unmap(LV2_URID_Map_Handle handle, | |||
LV2_URID urid) | |||
{ | |||
URITable* table = (URITable*)handle; | |||
if (urid > 0 && urid <= table->n_uris) { | |||
return table->uris[urid - 1]; | |||
} | |||
return NULL; | |||
} | |||
#endif /* URI_TABLE_H */ |
@@ -1,369 +0,0 @@ | |||
#!/usr/bin/env python | |||
import os | |||
import subprocess | |||
import sys | |||
import waflib.Options as Options | |||
import waflib.extras.autowaf as autowaf | |||
# Library and package version (UNIX style major, minor, micro) | |||
# major increment <=> incompatible changes | |||
# minor increment <=> compatible changes (additions) | |||
# micro increment <=> no interface changes | |||
LILV_VERSION = '0.16.0' | |||
LILV_MAJOR_VERSION = '0' | |||
# Mandatory waf variables | |||
APPNAME = 'lilv' # Package name for waf dist | |||
VERSION = LILV_VERSION # Package version for waf dist | |||
top = '.' # Source directory | |||
out = 'build' # Build directory | |||
def options(opt): | |||
opt.load('compiler_c') | |||
opt.load('compiler_cxx') | |||
opt.load('python') | |||
autowaf.set_options(opt) | |||
opt.add_option('--no-utils', action='store_true', dest='no_utils', | |||
help='Do not build command line utilities') | |||
opt.add_option('--bindings', action='store_true', dest='bindings', | |||
help='Build python bindings') | |||
opt.add_option('--dyn-manifest', action='store_true', dest='dyn_manifest', | |||
help='Build support for dynamic manifests') | |||
opt.add_option('--test', action='store_true', dest='build_tests', | |||
help='Build unit tests') | |||
opt.add_option('--no-bash-completion', action='store_true', | |||
dest='no_bash_completion', | |||
help='Do not install bash completion script in CONFIGDIR') | |||
opt.add_option('--static', action='store_true', dest='static', | |||
help='Build static library') | |||
opt.add_option('--no-shared', action='store_true', dest='no_shared', | |||
help='Do not build shared library') | |||
opt.add_option('--static-progs', action='store_true', dest='static_progs', | |||
help='Build programs as static binaries') | |||
opt.add_option('--default-lv2-path', type='string', default='', | |||
dest='default_lv2_path', | |||
help='Default LV2 path to use if LV2_PATH is unset') | |||
def configure(conf): | |||
conf.load('compiler_c') | |||
if Options.options.bindings: | |||
try: | |||
conf.load('swig') | |||
conf.load('python') | |||
conf.load('compiler_cxx') | |||
conf.check_python_headers() | |||
autowaf.define(conf, 'LILV_PYTHON', 1); | |||
except: | |||
pass | |||
autowaf.configure(conf) | |||
autowaf.set_c99_mode(conf) | |||
autowaf.display_header('Lilv Configuration') | |||
conf.env.BASH_COMPLETION = not Options.options.no_bash_completion | |||
conf.env.BUILD_TESTS = Options.options.build_tests | |||
conf.env.BUILD_UTILS = not Options.options.no_utils | |||
conf.env.BUILD_SHARED = not Options.options.no_shared | |||
conf.env.STATIC_PROGS = Options.options.static_progs | |||
conf.env.BUILD_STATIC = (Options.options.static or | |||
Options.options.static_progs) | |||
if not conf.env.BUILD_SHARED and not conf.env.BUILD_STATIC: | |||
conf.fatal('Neither a shared nor a static build requested') | |||
autowaf.check_pkg(conf, 'lv2', uselib_store='LV2', | |||
atleast_version='1.0.0', mandatory=True) | |||
autowaf.check_pkg(conf, 'serd-0', uselib_store='SERD', | |||
atleast_version='0.14.0', mandatory=True) | |||
autowaf.check_pkg(conf, 'sord-0', uselib_store='SORD', | |||
atleast_version='0.12.0', mandatory=True) | |||
autowaf.check_pkg(conf, 'sratom-0', uselib_store='SRATOM', | |||
atleast_version='0.4.0', mandatory=True) | |||
autowaf.define(conf, 'LILV_NEW_LV2', 1) # New LV2 discovery API | |||
defines = ['_POSIX_C_SOURCE', '_BSD_SOURCE'] | |||
if Options.platform == 'darwin': | |||
defines += ['_DARWIN_C_SOURCE'] | |||
# Check for gcov library (for test coverage) | |||
if conf.env.BUILD_TESTS: | |||
conf.check_cc(lib='gcov', | |||
define_name='HAVE_GCOV', | |||
mandatory=False) | |||
conf.check_cc(function_name='flock', | |||
header_name='sys/file.h', | |||
defines=defines, | |||
define_name='HAVE_FLOCK', | |||
mandatory=False) | |||
conf.check_cc(function_name='fileno', | |||
header_name='stdio.h', | |||
defines=defines, | |||
define_name='HAVE_FILENO', | |||
mandatory=False) | |||
conf.check_cc(function_name='clock_gettime', | |||
header_name=['sys/time.h','time.h'], | |||
defines=['_POSIX_C_SOURCE=199309L'], | |||
define_name='HAVE_CLOCK_GETTIME', | |||
uselib_store='CLOCK_GETTIME', | |||
lib=['rt'], | |||
mandatory=False) | |||
autowaf.define(conf, 'LILV_VERSION', LILV_VERSION) | |||
if Options.options.dyn_manifest: | |||
autowaf.define(conf, 'LILV_DYN_MANIFEST', 1) | |||
lilv_path_sep = ':' | |||
lilv_dir_sep = '/' | |||
if sys.platform == 'win32': | |||
lilv_path_sep = ';' | |||
lilv_dir_sep = '\\\\' | |||
autowaf.define(conf, 'LILV_PATH_SEP', lilv_path_sep) | |||
autowaf.define(conf, 'LILV_DIR_SEP', lilv_dir_sep) | |||
# Set default LV2 path | |||
lv2_path = Options.options.default_lv2_path | |||
if lv2_path == '': | |||
if Options.platform == 'darwin': | |||
lv2_path = lilv_path_sep.join(['~/Library/Audio/Plug-Ins/LV2', | |||
'~/.lv2', | |||
'/usr/local/lib/lv2', | |||
'/usr/lib/lv2', | |||
'/Library/Audio/Plug-Ins/LV2']) | |||
elif Options.platform == 'haiku': | |||
lv2_path = lilv_path_sep.join(['~/.lv2', | |||
'/boot/common/add-ons/lv2']) | |||
elif Options.platform == 'win32': | |||
lv2_path = lilv_path_sep.join(['%APPDATA%\\\\LV2', | |||
'%COMMONPROGRAMFILES%\\\\LV2']) | |||
else: | |||
libdirname = os.path.basename(conf.env.LIBDIR) | |||
lv2_path = lilv_path_sep.join(['~/.lv2', | |||
'/usr/%s/lv2' % libdirname, | |||
'/usr/local/%s/lv2' % libdirname]) | |||
autowaf.define(conf, 'LILV_DEFAULT_LV2_PATH', lv2_path) | |||
autowaf.set_lib_env(conf, 'lilv', LILV_VERSION) | |||
conf.write_config_header('lilv_config.h', remove=False) | |||
autowaf.display_msg(conf, 'Default LV2_PATH', | |||
conf.env.LILV_DEFAULT_LV2_PATH) | |||
autowaf.display_msg(conf, 'Utilities', | |||
bool(conf.env.BUILD_UTILS)) | |||
autowaf.display_msg(conf, 'Unit tests', | |||
bool(conf.env.BUILD_TESTS)) | |||
autowaf.display_msg(conf, 'Dynamic manifest support', | |||
bool(conf.env.LILV_DYN_MANIFEST)) | |||
autowaf.display_msg(conf, 'Python bindings', | |||
conf.is_defined('LILV_PYTHON')) | |||
conf.undefine('LILV_DEFAULT_LV2_PATH') # Cmd line errors with VC++ | |||
print('') | |||
def build_util(bld, name, defines): | |||
obj = bld(features = 'c cprogram', | |||
source = name + '.c', | |||
includes = ['.', './src', './utils'], | |||
use = 'liblilv', | |||
target = name, | |||
defines = defines, | |||
install_path = '${BINDIR}') | |||
if not bld.env.BUILD_SHARED or bld.env.STATIC_PROGS: | |||
obj.use = 'liblilv_static' | |||
if bld.env.STATIC_PROGS: | |||
if not bld.env.MSVC_COMPILER: | |||
obj.lib = ['m'] | |||
obj.env.SHLIB_MARKER = obj.env.STLIB_MARKER | |||
obj.linkflags = ['-static', '-Wl,--start-group'] | |||
return obj | |||
def build(bld): | |||
# C/C++ Headers | |||
includedir = '${INCLUDEDIR}/lilv-%s/lilv' % LILV_MAJOR_VERSION | |||
bld.install_files(includedir, bld.path.ant_glob('lilv/*.h')) | |||
bld.install_files(includedir, bld.path.ant_glob('lilv/*.hpp')) | |||
# Pkgconfig file | |||
autowaf.build_pc(bld, 'LILV', LILV_VERSION, LILV_MAJOR_VERSION, [], | |||
{'LILV_MAJOR_VERSION' : LILV_MAJOR_VERSION, | |||
'LILV_PKG_DEPS' : 'lv2 serd-0 sord-0 sratom-0'}) | |||
lib_source = ''' | |||
src/collections.c | |||
src/instance.c | |||
src/lib.c | |||
src/node.c | |||
src/plugin.c | |||
src/pluginclass.c | |||
src/port.c | |||
src/query.c | |||
src/scalepoint.c | |||
src/state.c | |||
src/ui.c | |||
src/util.c | |||
src/world.c | |||
src/zix/tree.c | |||
'''.split() | |||
lib = ['dl'] | |||
libflags = ['-fvisibility=hidden'] | |||
defines = [] | |||
if sys.platform == 'win32': | |||
lib = [] | |||
if bld.env.MSVC_COMPILER: | |||
libflags = [] | |||
defines = ['snprintf=_snprintf'] | |||
elif sys.platform.find('bsd') > 0: | |||
lib = [] | |||
# Shared Library | |||
if bld.env.BUILD_SHARED: | |||
obj = bld(features = 'c cshlib', | |||
export_includes = ['.'], | |||
source = lib_source, | |||
includes = ['.', './src'], | |||
name = 'liblilv', | |||
target = 'lilv-%s' % LILV_MAJOR_VERSION, | |||
vnum = LILV_VERSION, | |||
install_path = '${LIBDIR}', | |||
defines = ['LILV_SHARED', 'LILV_INTERNAL'], | |||
cflags = libflags, | |||
lib = lib) | |||
autowaf.use_lib(bld, obj, 'SERD SORD SRATOM LV2') | |||
# Static library | |||
if bld.env.BUILD_STATIC: | |||
obj = bld(features = 'c cstlib', | |||
export_includes = ['.'], | |||
source = lib_source, | |||
includes = ['.', './src'], | |||
name = 'liblilv_static', | |||
target = 'lilv-%s' % LILV_MAJOR_VERSION, | |||
vnum = LILV_VERSION, | |||
install_path = '${LIBDIR}', | |||
defines = defines + ['LILV_INTERNAL']) | |||
autowaf.use_lib(bld, obj, 'SERD SORD SRATOM LV2') | |||
if bld.env.BUILD_TESTS: | |||
test_libs = lib | |||
test_cflags = [''] | |||
if bld.is_defined('HAVE_GCOV'): | |||
test_libs += ['gcov'] | |||
test_cflags += ['-fprofile-arcs', '-ftest-coverage'] | |||
# Test plugin library | |||
penv = bld.env.derive() | |||
shlib_pattern = penv.cshlib_PATTERN | |||
if shlib_pattern.startswith('lib'): | |||
shlib_pattern = shlib_pattern[3:] | |||
penv.cshlib_PATTERN = shlib_pattern | |||
shlib_ext = shlib_pattern[shlib_pattern.rfind('.'):] | |||
obj = bld(features = 'c cshlib', | |||
env = penv, | |||
source = 'test/test_plugin.c', | |||
name = 'test_plugin', | |||
target = 'test/test_plugin.lv2/test_plugin', | |||
install_path = None, | |||
defines = defines, | |||
cflags = test_cflags, | |||
lib = test_libs, | |||
uselib = 'LV2') | |||
# Test plugin data files | |||
for i in [ 'manifest.ttl.in', 'test_plugin.ttl.in' ]: | |||
bld(features = 'subst', | |||
source = 'test/' + i, | |||
target = 'test/test_plugin.lv2/' + i.replace('.in', ''), | |||
install_path = None, | |||
SHLIB_EXT = shlib_ext) | |||
# Static profiled library (for unit test code coverage) | |||
obj = bld(features = 'c cstlib', | |||
source = lib_source, | |||
includes = ['.', './src'], | |||
name = 'liblilv_profiled', | |||
target = 'lilv_profiled', | |||
install_path = None, | |||
defines = defines + ['LILV_INTERNAL'], | |||
cflags = test_cflags, | |||
lib = test_libs) | |||
autowaf.use_lib(bld, obj, 'SERD SORD SRATOM LV2') | |||
# Unit test program | |||
bpath = os.path.abspath(os.path.join(out, 'test', 'test_plugin.lv2')) | |||
bpath = bpath.replace('\\', '/') | |||
obj = bld(features = 'c cprogram', | |||
source = 'test/lilv_test.c', | |||
includes = ['.', './src'], | |||
use = 'liblilv_profiled', | |||
lib = test_libs, | |||
target = 'test/lilv_test', | |||
install_path = None, | |||
defines = defines + ['LILV_TEST_BUNDLE=\"%s/\"' % bpath], | |||
cflags = test_cflags) | |||
autowaf.use_lib(bld, obj, 'SERD SORD SRATOM LV2') | |||
# Utilities | |||
if bld.env.BUILD_UTILS: | |||
utils = ''' | |||
utils/lilv-bench | |||
utils/lv2info | |||
utils/lv2ls | |||
''' | |||
for i in utils.split(): | |||
build_util(bld, i, defines) | |||
# lv2bench (less portable than other utilities) | |||
if bld.is_defined('HAVE_CLOCK_GETTIME'): | |||
obj = build_util(bld, 'utils/lv2bench', defines) | |||
if not bld.env.MSVC_COMPILER: | |||
obj.lib = ['rt'] | |||
# Documentation | |||
autowaf.build_dox(bld, 'LILV', LILV_VERSION, top, out) | |||
# Man pages | |||
bld.install_files('${MANDIR}/man1', bld.path.ant_glob('doc/*.1')) | |||
# Bash completion | |||
if bld.env.BASH_COMPLETION: | |||
bld.install_as( | |||
'${SYSCONFDIR}/bash_completion.d/lilv', 'utils/lilv.bash_completion') | |||
if bld.is_defined('LILV_PYTHON'): | |||
# Python Wrapper | |||
obj = bld(features = 'cxx cxxshlib pyext', | |||
source = 'bindings/lilv.i', | |||
target = 'bindings/_lilv', | |||
includes = ['..'], | |||
swig_flags = '-c++ -python -Wall -I.. -llilv -features autodoc=1', | |||
use = 'liblilv') | |||
autowaf.use_lib(bld, obj, 'LILV') | |||
bld.install_files('${PYTHONDIR}', 'bindings/lilv.py') | |||
bld.add_post_fun(autowaf.run_ldconfig) | |||
if bld.env.DOCS: | |||
bld.add_post_fun(fix_docs) | |||
def fix_docs(ctx): | |||
if ctx.cmd == 'build': | |||
autowaf.make_simple_dox(APPNAME) | |||
def upload_docs(ctx): | |||
os.system('rsync -ravz --delete -e ssh build/doc/html/ drobilla@drobilla.net:~/drobilla.net/docs/lilv/') | |||
def test(ctx): | |||
autowaf.pre_test(ctx, APPNAME) | |||
os.environ['PATH'] = 'test' + os.pathsep + os.getenv('PATH') | |||
autowaf.run_tests(ctx, APPNAME, ['lilv_test'], dirs=['./src','./test']) | |||
autowaf.post_test(ctx, APPNAME) | |||
def lint(ctx): | |||
subprocess.call('cpplint.py --filter=+whitespace/comments,-whitespace/tab,-whitespace/braces,-whitespace/labels,-build/header_guard,-readability/casting,-readability/todo,-build/include,-runtime/sizeof src/* lilv/*', shell=True) |
@@ -1,59 +0,0 @@ | |||
Installation Instructions | |||
========================= | |||
Basic Installation | |||
------------------ | |||
Building this software requires only Python. To install with default options: | |||
./waf configure | |||
./waf | |||
./waf install | |||
You may need to become root for the install stage, for example: | |||
sudo ./waf install | |||
Configuration Options | |||
--------------------- | |||
All supported options can be viewed using the command: | |||
./waf --help | |||
Most options only need to be passed during the configure stage, for example: | |||
./waf configure --prefix=/usr | |||
./waf | |||
./waf install | |||
Compiler Configuration | |||
---------------------- | |||
Several standard environment variables can be used to control how compilers are | |||
invoked: | |||
* CC: Path to C compiler | |||
* CFLAGS: C compiler options | |||
* CXX: Path to C++ compiler | |||
* CXXFLAGS: C++ compiler options | |||
* CPPFLAGS: C preprocessor options | |||
* LINKFLAGS: Linker options | |||
Installation Directories | |||
------------------------ | |||
The --prefix option (or the PREFIX environment variable) can be used to change | |||
the prefix which all files are installed under. There are also several options | |||
allowing for more fine-tuned control, see the --help output for details. | |||
Packaging | |||
--------- | |||
Everything can be installed to a specific root directory by passing a --destdir | |||
option to the install stage (or setting the DESTDIR environment variable), | |||
which adds a prefix to all install paths. For example: | |||
./waf configure --prefix=/usr | |||
./waf | |||
./waf install --destdir=/tmp/package |
@@ -1,98 +0,0 @@ | |||
serd (0.18.2) stable; | |||
* Fix crash when serd_node_new_decimal is called with infinity or NaN | |||
* Fix crash when resolving against non-standard base URIs | |||
* Fix bug that caused "a" abbreviation in non-predicate position | |||
* Disable timestamps in HTML documentation for reproducible build | |||
* Fix clashing symbol "error" in amalgamation build | |||
* Update to waf 1.7.8 and autowaf r90 (install docs to versioned directory) | |||
-- David Robillard <d@drobilla.net> Sat, 22 Dec 2012 21:32:15 -0500 | |||
serd (0.18.0) stable; | |||
* Support digits at start of local names as per new Turtle grammar | |||
* Add incremental read interface suitable for reading from infinite streams | |||
* Add -e option to serdi to use incremental reading | |||
* Add error callback to reader and writer for custom error reporting | |||
* Add -q option to serdi to suppress all non-data output, e.g. errors | |||
* Reset indent when finishing a write | |||
* Report write size correctly when invalid UTF-8 is encountered and a | |||
replacement character is written | |||
* Strip down API documentation to a single clean page | |||
* Fix various hyper-strict warnings | |||
* Do not require a C++ compiler to build | |||
* Add option to build utilities as static binaries | |||
* Upgrade to waf 1.7.2 | |||
-- David Robillard <d@drobilla.net> Thu, 23 Aug 2012 00:18:34 -0400 | |||
serd (0.14.0) stable; | |||
* Use path variables in pkgconfig files | |||
* Install man page to DATADIR (e.g. PREFIX/share/man, not PREFIX/man) | |||
* Tolerate invalid characters in string literals by replacing with the | |||
Unicode replacement character | |||
* Report reason for failure to open file in serdi | |||
* Improve write performance by doing bulk writes for unescaped substrings | |||
* Add SerdBulkSink for writing bulk output and corresponding serdi -B option | |||
* Add serdi -f option to prevent URI qualification | |||
* Remove use of multi-byte peek (readahead) and use exactly 1 page for | |||
read buffer (instead of 2) | |||
* Handle a quote as the last character of a long string literal in the | |||
writer (by escaping it) rather than the reader, to avoid writing Turtle | |||
other tools fail to parse. | |||
* Add serd_strtod(), serd_node_new_decimal(), and serd_node_new_integer() | |||
for locale-independent numeric node parsing/serialising. | |||
* Add serd_file_sink for easy writing to a FILE* stream. | |||
* Add serd_chunk_sink for easy writing to a string. | |||
* Escape ASCII control characters in output (e.g. fix problems with string | |||
literals that start with a backspace) | |||
* Improve URI resolution to cover most of the abnormal cases from RFC3986 | |||
* Support file://localhost/foo URIs in serd_uri_to_path() | |||
* Support Windows file://c:/foo URIs in serd_uri_to_path() on all platforms | |||
* Add serd_node_new_blob and serd_base64_decode for handling arbitrary | |||
binary data via base64 encoding. | |||
* Support compilation as C++ under MSVC++. | |||
* Implement pretty-printing for collections. | |||
* Parse collections iteratively in O(1) space. | |||
* Report read error if both "genid" and "docid" IDs are found in the same | |||
document, to prevent silent merging of distinct blank nodes. | |||
* Handle files and strings that start with a UTF-8 Byte Order Mark. | |||
* Add serd_writer_get_env(). | |||
* Add serd_node_new_file_uri() and serd_file_uri_parse() and implement | |||
proper URI to/from path hex escaping, etc. | |||
* Add serd_uri_serialise_relative() for making URIs relative to a base | |||
where possible (by chopping a common prefix and adding dot segments). | |||
* Make URIs serialised by the writer properly escape characters. | |||
* Add serd_writer_set_root_uri() and corresponding -r option to serdi to | |||
enable writing URIs with up references (../). | |||
* Resolve dot segments in serd_uri_resolve() instead of at write time. | |||
* Add serd_reader_set_default_graph() for reading a file as a named graph. | |||
-- David Robillard <d@drobilla.net> Tue, 17 Apr 2012 18:23:53 -0400 | |||
serd (0.5.0) stable; | |||
* Fix pretty printing of successive blank descriptions, i.e. "] , [" | |||
* Avoid writing illegal Turtle names as a result of URI qualifying | |||
* Gracefully handle NULL reader sinks | |||
* Add serd_strerror | |||
* Add serd_env_set_prefix_from_strings for convenience | |||
* Fix erroneously equal SERD_ERR_BAD_SYNTAX and SERD_ERR_BAD_ARG | |||
* Add ability to build static library | |||
-- David Robillard <d@drobilla.net> Thu, 29 Sep 2011 00:00:00 -0400 | |||
serd (0.4.2) stable; | |||
* Fix compilation issues on some systems | |||
* Fix build system Python 3 compatibility | |||
-- David Robillard <d@drobilla.net> Wed, 25 May 2011 19:00:00 -0400 | |||
serd (0.4.0) stable; | |||
* Initial release | |||
-- David Robillard <d@drobilla.net> Tue, 24 May 2011 23:00:00 -0400 |
@@ -1,29 +0,0 @@ | |||
This library is designed to allow parallel installation of different major | |||
versions. To facilitate this, the shared library name, include directory, and | |||
pkg-config file are suffixed with the major version number of the library. | |||
For example, if this library was named "foo" and at version 1.x.y: | |||
/usr/include/foo-1/foo/foo.h | |||
/usr/lib/foo-1.so.1.x.y | |||
/usr/lib/pkgconfig/foo-1.pc | |||
Dependencies check for pkg-config name "foo-1" and will build | |||
against a compatible version 1, regardless any other installed versions. | |||
*** IMPORTANT GUIDELINES FOR PACKAGERS *** | |||
Packages should follow the same conventions as above, i.e. include the major | |||
version (and only the major version) in the name of the package. Continuing the | |||
example above, the package(s) would be named foo-1 and foo-1-dev. This way, | |||
if/when version 2 comes out, it may be installed at the same time as version 1 | |||
without breaking anything. | |||
Please do not create packages of this library that do not follow these | |||
guidelines, you will break things and cause unnecessary headaches. Please do | |||
not use any number as a suffix other than the actual major version number of the | |||
upstream source package. | |||
Because program and documentation names are not versioned, these should be | |||
included in separate packages which may replace previous versions, since | |||
there is little use in having parallel installations of them. |
@@ -1,10 +0,0 @@ | |||
Serd | |||
---- | |||
Serd is a lightweight C library for RDF syntax which supports reading and | |||
writing Turtle and NTriples. | |||
For more information, see <http://drobilla.net/software/serd>. | |||
-- David Robillard <d@drobilla.net> | |||
@@ -1,187 +0,0 @@ | |||
<doxygenlayout version="1.0"> | |||
<!-- Navigation index tabs for HTML output --> | |||
<navindex> | |||
<tab type="mainpage" visible="yes" title=""/> | |||
<tab type="pages" visible="yes" title="" intro=""/> | |||
<tab type="modules" visible="yes" title="" intro=""/> | |||
<tab type="namespaces" visible="yes" title=""> | |||
<tab type="namespacelist" visible="yes" title="" intro=""/> | |||
<tab type="namespacemembers" visible="yes" title="" intro=""/> | |||
</tab> | |||
<tab type="classes" visible="yes" title=""> | |||
<tab type="classlist" visible="yes" title="" intro=""/> | |||
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> | |||
<tab type="hierarchy" visible="yes" title="" intro=""/> | |||
<tab type="classmembers" visible="yes" title="" intro=""/> | |||
</tab> | |||
<tab type="files" visible="yes" title=""> | |||
<tab type="filelist" visible="yes" title="" intro=""/> | |||
<tab type="globals" visible="yes" title="" intro=""/> | |||
</tab> | |||
<tab type="examples" visible="yes" title="" intro=""/> | |||
</navindex> | |||
<!-- Layout definition for a class page --> | |||
<class> | |||
<briefdescription visible="yes"/> | |||
<includes visible="$SHOW_INCLUDE_FILES"/> | |||
<inheritancegraph visible="$CLASS_GRAPH"/> | |||
<collaborationgraph visible="$COLLABORATION_GRAPH"/> | |||
<allmemberslink visible="yes"/> | |||
<memberdecl> | |||
<nestedclasses visible="yes" title=""/> | |||
<publictypes title=""/> | |||
<publicslots title=""/> | |||
<signals title=""/> | |||
<publicmethods title=""/> | |||
<publicstaticmethods title=""/> | |||
<publicattributes title=""/> | |||
<publicstaticattributes title=""/> | |||
<protectedtypes title=""/> | |||
<protectedslots title=""/> | |||
<protectedmethods title=""/> | |||
<protectedstaticmethods title=""/> | |||
<protectedattributes title=""/> | |||
<protectedstaticattributes title=""/> | |||
<packagetypes title=""/> | |||
<packagemethods title=""/> | |||
<packagestaticmethods title=""/> | |||
<packageattributes title=""/> | |||
<packagestaticattributes title=""/> | |||
<properties title=""/> | |||
<events title=""/> | |||
<privatetypes title=""/> | |||
<privateslots title=""/> | |||
<privatemethods title=""/> | |||
<privatestaticmethods title=""/> | |||
<privateattributes title=""/> | |||
<privatestaticattributes title=""/> | |||
<friends title=""/> | |||
<related title="" subtitle=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
<memberdef> | |||
<inlineclasses title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<constructors title=""/> | |||
<functions title=""/> | |||
<related title=""/> | |||
<variables title=""/> | |||
<properties title=""/> | |||
<events title=""/> | |||
</memberdef> | |||
<usedfiles visible="$SHOW_USED_FILES"/> | |||
<authorsection visible="yes"/> | |||
</class> | |||
<!-- Layout definition for a namespace page --> | |||
<namespace> | |||
<briefdescription visible="yes"/> | |||
<memberdecl> | |||
<nestednamespaces visible="yes" title=""/> | |||
<classes visible="yes" title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
<memberdef> | |||
<inlineclasses title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
</memberdef> | |||
<authorsection visible="yes"/> | |||
</namespace> | |||
<!-- Layout definition for a file page --> | |||
<file> | |||
<briefdescription visible="yes"/> | |||
<includes visible="$SHOW_INCLUDE_FILES"/> | |||
<includegraph visible="$INCLUDE_GRAPH"/> | |||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/> | |||
<sourcelink visible="yes"/> | |||
<memberdecl> | |||
<classes visible="yes" title=""/> | |||
<namespaces visible="yes" title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
<memberdef> | |||
<inlineclasses title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
</memberdef> | |||
<authorsection/> | |||
</file> | |||
<!-- Layout definition for a group page --> | |||
<group> | |||
<briefdescription visible="no"/> | |||
<groupgraph visible="$GROUP_GRAPHS"/> | |||
<detaileddescription title=""/> | |||
<memberdecl> | |||
<nestedgroups visible="yes" title=""/> | |||
<dirs visible="yes" title=""/> | |||
<files visible="yes" title=""/> | |||
<namespaces visible="yes" title=""/> | |||
<classes visible="yes" title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<enumvalues title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<signals title=""/> | |||
<publicslots title=""/> | |||
<protectedslots title=""/> | |||
<privateslots title=""/> | |||
<events title=""/> | |||
<properties title=""/> | |||
<friends title=""/> | |||
<membergroups visible="yes"/> | |||
</memberdecl> | |||
<memberdef> | |||
<pagedocs/> | |||
<inlineclasses title=""/> | |||
<defines title=""/> | |||
<typedefs title=""/> | |||
<enums title=""/> | |||
<enumvalues title=""/> | |||
<functions title=""/> | |||
<variables title=""/> | |||
<signals title=""/> | |||
<publicslots title=""/> | |||
<protectedslots title=""/> | |||
<privateslots title=""/> | |||
<events title=""/> | |||
<properties title=""/> | |||
<friends title=""/> | |||
</memberdef> | |||
<authorsection visible="yes"/> | |||
</group> | |||
<!-- Layout definition for a directory page --> | |||
<directory> | |||
<briefdescription visible="yes"/> | |||
<directorygraph visible="yes"/> | |||
<memberdecl> | |||
<dirs visible="yes"/> | |||
<files visible="yes"/> | |||
</memberdecl> | |||
<detaileddescription title=""/> | |||
</directory> | |||
</doxygenlayout> |
@@ -1,72 +0,0 @@ | |||
.TH SERDI 1 "08 May 2012" | |||
.SH NAME | |||
.B serdi \- Read and write RDF syntax | |||
.SH SYNOPSIS | |||
serdi [OPTION]... INPUT BASE_URI | |||
.SH OPTIONS | |||
.TP | |||
\fB\-b\fR | |||
Fast bulk output for large serialisations. | |||
.TP | |||
\fB\-c PREFIX\fR | |||
Chop PREFIX from matching blank node IDs. | |||
.TP | |||
\fB\-e\fR | |||
Eat input one character at a time, rather than a page at a time which is the | |||
default. This is useful when reading from a pipe since output will be | |||
generated immediately as input arrives, rather than waiting until an entire | |||
page of input has arrived. With this option serdi uses one page less memory, | |||
but will likely be significantly slower. | |||
.TP | |||
\fB\-f\fR | |||
Keep full URIs in input (don't qualify). | |||
.TP | |||
\fB\-h\fR | |||
Print the command line options. | |||
.TP | |||
\fB\-i SYNTAX\fR | |||
Read input in SYNTAX (`turtle' or `ntriples'). | |||
.TP | |||
\fB\-o SYNTAX\fR | |||
Write output in SYNTAX (`turtle' or `ntriples'). | |||
.TP | |||
\fB\-p PREFIX\fR | |||
Add PREFIX to blank node IDs. | |||
.TP | |||
\fB\-r ROOT_URI\fR | |||
Keep relative URIs within ROOT_URI. | |||
.TP | |||
\fB\-s INPUT\fR | |||
Parse INPUT as a string (terminates options). | |||
.TP | |||
\fB\-v\fR | |||
Display version information and exit. | |||
.SH AUTHOR | |||
Serdi was written by David Robillard <d@drobilla.net> | |||
.SH COPYRIGHT | |||
Copyright \(co 2011-2012 David Robillard. | |||
.br | |||
License: <http://www.opensource.org/licenses/isc> | |||
.br | |||
This is free software; you are free to change and redistribute it. | |||
.br | |||
There is NO WARRANTY, to the extent permitted by law. | |||
.SH "SEE ALSO" | |||
<http://drobilla.net/software/serd> |
@@ -1,563 +0,0 @@ | |||
body { | |||
font-size: medium; | |||
font-family: sans-serif; | |||
} | |||
#top { | |||
background-color: #F3F3F3; | |||
margin: 0; | |||
padding: 0; | |||
border-bottom: 1px solid #DDD; | |||
margin-bottom: 1ex; | |||
font-size: xx-large; | |||
font-weight: bold; | |||
} | |||
div.header { | |||
display: none; | |||
} | |||
.tabs { | |||
display: none; | |||
} | |||
h1 h2 h3 h4 h5 h6 { | |||
font-weight: bold; | |||
} | |||
h1 { | |||
font-size: 164%; | |||
} | |||
h2 { | |||
font-size: 132%; | |||
} | |||
h3 { | |||
font-size: 124%; | |||
} | |||
h4 { | |||
font-size: 116%; | |||
} | |||
h5 { | |||
font-size: 108%; | |||
} | |||
h6 { | |||
font-size: 100%; | |||
} | |||
p { | |||
margin: 0 0 1ex 0; | |||
} | |||
br { | |||
display: none; | |||
} | |||
dt { | |||
font-weight: 700; | |||
} | |||
div.multicol { | |||
} | |||
p.startli,p.startdd,p.starttd { | |||
margin-top: 2px; | |||
} | |||
p.endli { | |||
margin-bottom: 0; | |||
} | |||
p.enddd { | |||
margin-bottom: 4px; | |||
} | |||
p.endtd { | |||
margin-bottom: 2px; | |||
} | |||
caption { | |||
font-weight: 700; | |||
} | |||
span.legend { | |||
font-size: 70%; | |||
text-align: center; | |||
} | |||
h3.version { | |||
font-size: 90%; | |||
text-align: center; | |||
} | |||
div.qindex,div.navtab { | |||
background-color: #EBEFF6; | |||
border: 1px solid #A3B4D7; | |||
text-align: center; | |||
margin: 2px; | |||
padding: 2px; | |||
} | |||
div.qindex,div.navpath { | |||
width: 100%; | |||
line-height: 140%; | |||
} | |||
div.navtab { | |||
margin-right: 15px; | |||
} | |||
/* @group Link Styling */ | |||
a { | |||
color: #3D8C57; | |||
text-decoration: none; | |||
} | |||
.contents a:visited { | |||
color: #50755E; | |||
} | |||
a:hover { | |||
text-decoration: underline; | |||
} | |||
a.qindexHL { | |||
background-color: #9CAFD4; | |||
color: #FFF; | |||
border: 1px double #869DCA; | |||
} | |||
a.code { | |||
color: #4665A2; | |||
} | |||
a.codeRef { | |||
color: #4665A2; | |||
} | |||
/* @end */ | |||
dl.el { | |||
margin-left: -1cm; | |||
} | |||
.fragment { | |||
font-family: monospace, fixed; | |||
font-size: 105%; | |||
} | |||
pre.fragment { | |||
border: 1px solid #C4C4C4; | |||
background-color: #F9F9F9; | |||
padding: 4px 6px; | |||
margin: 4px 8px 4px 2px; | |||
overflow: auto; | |||
font-size: 9pt; | |||
line-height: 125%; | |||
} | |||
div.ah { | |||
background-color: #000; | |||
font-weight: 700; | |||
color: #FFF; | |||
margin-bottom: 3px; | |||
margin-top: 3px; | |||
padding: .2em; | |||
border: thin solid #333; | |||
} | |||
div.groupHeader { | |||
margin-left: 16px; | |||
margin-top: 12px; | |||
margin-bottom: 6px; | |||
font-weight: 700; | |||
} | |||
div.groupText { | |||
margin-left: 16px; | |||
font-style: italic; | |||
} | |||
body { | |||
background: #FFF; | |||
color: #000; | |||
margin: 0; | |||
} | |||
div.contents { | |||
margin-top: 10px; | |||
margin-left: 10px; | |||
margin-right: 10px; | |||
} | |||
td.indexkey { | |||
background-color: #EBEFF6; | |||
font-weight: 700; | |||
border: 1px solid #C4CFE5; | |||
margin: 2px 0; | |||
padding: 2px 10px; | |||
} | |||
td.indexvalue { | |||
background-color: #EBEFF6; | |||
border: 1px solid #C4CFE5; | |||
padding: 2px 10px; | |||
margin: 2px 0; | |||
} | |||
tr.memlist { | |||
background-color: #EEF1F7; | |||
} | |||
p.formulaDsp { | |||
text-align: center; | |||
} | |||
img.formulaDsp { | |||
} | |||
img.formulaInl { | |||
vertical-align: middle; | |||
} | |||
div.center { | |||
text-align: center; | |||
margin-top: 0; | |||
margin-bottom: 0; | |||
padding: 0; | |||
} | |||
div.center img { | |||
border: 0; | |||
} | |||
address.footer { | |||
text-align: right; | |||
padding: 0 0.25em 0.25em 0; | |||
} | |||
img.footer { | |||
border: 0; | |||
vertical-align: middle; | |||
} | |||
/* @group Code Colorization */ | |||
span.keyword { | |||
color: green; | |||
} | |||
span.keywordtype { | |||
color: #604020; | |||
} | |||
span.keywordflow { | |||
color: #e08000; | |||
} | |||
span.comment { | |||
color: maroon; | |||
} | |||
span.preprocessor { | |||
color: #806020; | |||
} | |||
span.stringliteral { | |||
color: #002080; | |||
} | |||
span.charliteral { | |||
color: teal; | |||
} | |||
span.vhdldigit { | |||
color: #F0F; | |||
} | |||
span.vhdlkeyword { | |||
color: #700070; | |||
} | |||
span.vhdllogic { | |||
color: red; | |||
} | |||
/* @end */ | |||
td.tiny { | |||
font-size: 75%; | |||
} | |||
.dirtab { | |||
padding: 4px; | |||
border-collapse: collapse; | |||
border: 1px solid #A3B4D7; | |||
} | |||
th.dirtab { | |||
background: #EBEFF6; | |||
font-weight: 700; | |||
} | |||
hr { | |||
height: 0; | |||
border: none; | |||
border-top: 1px solid #DDD; | |||
margin: 2em 0 1em; | |||
} | |||
hr.footer { | |||
height: 1px; | |||
} | |||
/* @group Member Descriptions */ | |||
table.memberdecls { | |||
border-spacing: 0; | |||
font-size: small; | |||
} | |||
.mdescLeft,.mdescRight,.memItemLeft,.memItemRight,.memTemplItemLeft,.memTemplItemRight,.memTemplParams { | |||
background-color: #FBFBFB; | |||
margin: 0; | |||
padding: 0.25ex; | |||
} | |||
.mdescLeft,.mdescRight { | |||
color: #555; | |||
} | |||
.memItemLeft,.memItemRight,.memTemplParams { | |||
border-top: 1px solid #DDD; | |||
} | |||
.memItemLeft,.memTemplItemLeft { | |||
white-space: nowrap; | |||
padding-left: 2em; | |||
} | |||
.memTemplParams { | |||
color: #464646; | |||
white-space: nowrap; | |||
} | |||
/* @end */ | |||
/* @group Member Details */ | |||
/* Styles for detailed member documentation */ | |||
.memtemplate { | |||
font-size: 80%; | |||
color: #4665A2; | |||
font-weight: bold; | |||
} | |||
.memnav { | |||
background-color: #EBEFF6; | |||
border: 1px solid #A3B4D7; | |||
text-align: center; | |||
margin: 2px; | |||
margin-right: 15px; | |||
padding: 2px; | |||
} | |||
.memitem { | |||
padding: 0; | |||
margin: 1ex 0 2ex 0; | |||
border: 1px solid #CCC; | |||
} | |||
.memname { | |||
white-space: nowrap; | |||
font-weight: bold; | |||
} | |||
.memproto { | |||
border-bottom: 1px solid #DDD; | |||
padding: 0.5ex; | |||
font-weight: bold; | |||
background-color: #F3F3F3; | |||
} | |||
.memdoc { | |||
padding: 1ex; | |||
background-color: #FBFBFB; | |||
border-top-width: 0; | |||
} | |||
.paramkey { | |||
text-align: right; | |||
} | |||
.paramtype { | |||
white-space: nowrap; | |||
} | |||
.paramname { | |||
color: #602020; | |||
white-space: nowrap; | |||
} | |||
.paramname em { | |||
font-style: normal; | |||
} | |||
/* @end */ | |||
/* @group Directory (tree) */ | |||
/* for the tree view */ | |||
.ftvtree { | |||
font-family: sans-serif; | |||
margin: 0; | |||
} | |||
/* these are for tree view when used as main index */ | |||
.directory { | |||
font-size: 9pt; | |||
font-weight: bold; | |||
margin: 5px; | |||
} | |||
.directory h3 { | |||
margin: 0; | |||
margin-top: 1em; | |||
font-size: 11pt; | |||
} | |||
.directory > h3 { | |||
margin-top: 0; | |||
} | |||
.directory p { | |||
margin: 0; | |||
white-space: nowrap; | |||
} | |||
.directory div { | |||
display: none; | |||
margin: 0; | |||
} | |||
.directory img { | |||
vertical-align: -30%; | |||
} | |||
/* these are for tree view when not used as main index */ | |||
.directory-alt { | |||
font-size: 100%; | |||
font-weight: bold; | |||
} | |||
.directory-alt h3 { | |||
margin: 0; | |||
margin-top: 1em; | |||
font-size: 11pt; | |||
} | |||
.directory-alt > h3 { | |||
margin-top: 0; | |||
} | |||
.directory-alt p { | |||
margin: 0; | |||
white-space: nowrap; | |||
} | |||
.directory-alt div { | |||
display: none; | |||
margin: 0; | |||
} | |||
.directory-alt img { | |||
vertical-align: -30%; | |||
} | |||
/* @end */ | |||
div.dynheader { | |||
margin-top: 8px; | |||
} | |||
address { | |||
font-style: normal; | |||
color: #2A3D61; | |||
} | |||
table.doxtable { | |||
border-collapse: collapse; | |||
margin: 0.5ex; | |||
} | |||
table.doxtable td,table.doxtable th { | |||
border: 1px solid #DDD; | |||
padding: 3px 7px 2px; | |||
} | |||
table.doxtable th { | |||
background-color: #F3F3F3; | |||
color: #000; | |||
padding-bottom: 4px; | |||
padding-top: 5px; | |||
text-align: left; | |||
font-weight: bold; | |||
} | |||
.tabsearch { | |||
top: 0; | |||
left: 10px; | |||
height: 36px; | |||
z-index: 101; | |||
overflow: hidden; | |||
font-size: 13px; | |||
} | |||
.navpath ul { | |||
font-size: 11px; | |||
height: 30px; | |||
line-height: 30px; | |||
color: #8AA0CC; | |||
border: 1px solid #C2CDE4; | |||
overflow: hidden; | |||
margin: 0; | |||
padding: 0; | |||
} | |||
.navpath li { | |||
list-style-type: none; | |||
float: left; | |||
padding-left: 10px; | |||
padding-right: 15px; | |||
color: #364D7C; | |||
} | |||
.navpath a { | |||
height: 32px; | |||
display: block; | |||
text-decoration: none; | |||
outline: none; | |||
} | |||
.navpath a:hover { | |||
color: #6884BD; | |||
} | |||
div.summary { | |||
float: right; | |||
font-size: 8pt; | |||
padding-right: 5px; | |||
width: 50%; | |||
text-align: right; | |||
} | |||
div.summary a { | |||
white-space: nowrap; | |||
} | |||
div.header { | |||
background-color: #F3F3F3; | |||
margin: 0; | |||
border-bottom: 1px solid #DDD; | |||
} | |||
div.headertitle { | |||
padding: 5px 5px 5px 10px; | |||
font-size: 180%; | |||
font-weight: bold; | |||
} |
@@ -1,10 +0,0 @@ | |||
prefix=@PREFIX@ | |||
exec_prefix=@EXEC_PREFIX@ | |||
libdir=@LIBDIR@ | |||
includedir=@INCLUDEDIR@ | |||
Name: Serd | |||
Version: @SERD_VERSION@ | |||
Description: Lightweight RDF syntax library | |||
Libs: -L${libdir} -l@LIB_SERD@ | |||
Cflags: -I${includedir}/serd-@SERD_MAJOR_VERSION@ |
@@ -1,20 +0,0 @@ | |||
These are the tests for the Turtle Terse RDF Triple Language | |||
that must be passed by conformant systems. See | |||
http://www.dajobe.org/2004/01/turtle/ | |||
for the full conformance information. | |||
The format is a set of good tests and bad tests. | |||
Good tests are a pair of files: | |||
abc.ttl abc.out | |||
which are the input Turtle file and the expected output RDF triples, | |||
written in N-Triples. | |||
bad tests are of the form | |||
bad-XX.ttl | |||
which must fail. | |||
The tests should be performed with an assumed base URI | |||
of http://www.w3.org/2001/sw/DataAccess/df1/tests/ | |||
Dave |
@@ -1,219 +0,0 @@ | |||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |||
<> rdfs:comment """ | |||
UTF-8 encoded sample plain-text file | |||
‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ | |||
Markus Kuhn [ˈmaʳkʊs kuːn] <http://www.cl.cam.ac.uk/~mgk25/> — 2002-07-25 | |||
The ASCII compatible UTF-8 encoding used in this plain-text file | |||
is defined in Unicode, ISO 10646-1, and RFC 2279. | |||
Using Unicode/UTF-8, you can write in emails and source code things such as | |||
Mathematics and sciences: | |||
∮ E⋅da = Q, n → ∞, ∑ f(i) = ∏ g(i), ⎧⎡⎛┌─────┐⎞⎤⎫ | |||
⎪⎢⎜│a²+b³ ⎟⎥⎪ | |||
∀x∈ℝ: ⌈x⌉ = −⌊−x⌋, α ∧ ¬β = ¬(¬α ∨ β), ⎪⎢⎜│───── ⎟⎥⎪ | |||
⎪⎢⎜⎷ c₈ ⎟⎥⎪ | |||
ℕ ⊆ ℕ₀ ⊂ ℤ ⊂ ℚ ⊂ ℝ ⊂ ℂ, ⎨⎢⎜ ⎟⎥⎬ | |||
⎪⎢⎜ ∞ ⎟⎥⎪ | |||
⊥ < a ≠ b ≡ c ≤ d ≪ ⊤ ⇒ (⟦A⟧ ⇔ ⟪B⟫), ⎪⎢⎜ ⎲ ⎟⎥⎪ | |||
⎪⎢⎜ ⎳aⁱ-bⁱ⎟⎥⎪ | |||
2H₂ + O₂ ⇌ 2H₂O, R = 4.7 kΩ, ⌀ 200 mm ⎩⎣⎝i=1 ⎠⎦⎭ | |||
Linguistics and dictionaries: | |||
ði ıntəˈnæʃənəl fəˈnɛtık əsoʊsiˈeıʃn | |||
Y [ˈʏpsilɔn], Yen [jɛn], Yoga [ˈjoːgɑ] | |||
APL: | |||
((V⍳V)=⍳⍴V)/V←,V ⌷←⍳→⍴∆∇⊃‾⍎⍕⌈ | |||
Nicer typography in plain text files: | |||
╔══════════════════════════════════════════╗ | |||
║ ║ | |||
║ • ‘single’ and “double” quotes ║ | |||
║ ║ | |||
║ • Curly apostrophes: “We’ve been here” ║ | |||
║ ║ | |||
║ • Latin-1 apostrophe and accents: '´` ║ | |||
║ ║ | |||
║ • ‚deutsche‘ „Anführungszeichen“ ║ | |||
║ ║ | |||
║ • †, ‡, ‰, •, 3–4, —, −5/+5, ™, … ║ | |||
║ ║ | |||
║ • ASCII safety test: 1lI|, 0OD, 8B ║ | |||
║ ╭─────────╮ ║ | |||
║ • the euro symbol: │ 14.95 € │ ║ | |||
║ ╰─────────╯ ║ | |||
╚══════════════════════════════════════════╝ | |||
Combining characters: | |||
STARGΛ̊TE SG-1, a = v̇ = r̈, a⃑ ⊥ b⃑ | |||
Greek (in Polytonic): | |||
The Greek anthem: | |||
Σὲ γνωρίζω ἀπὸ τὴν κόψη | |||
τοῦ σπαθιοῦ τὴν τρομερή, | |||
σὲ γνωρίζω ἀπὸ τὴν ὄψη | |||
ποὺ μὲ βία μετράει τὴ γῆ. | |||
᾿Απ᾿ τὰ κόκκαλα βγαλμένη | |||
τῶν ῾Ελλήνων τὰ ἱερά | |||
καὶ σὰν πρῶτα ἀνδρειωμένη | |||
χαῖρε, ὦ χαῖρε, ᾿Ελευθεριά! | |||
From a speech of Demosthenes in the 4th century BC: | |||
Οὐχὶ ταὐτὰ παρίσταταί μοι γιγνώσκειν, ὦ ἄνδρες ᾿Αθηναῖοι, | |||
ὅταν τ᾿ εἰς τὰ πράγματα ἀποβλέψω καὶ ὅταν πρὸς τοὺς | |||
λόγους οὓς ἀκούω· τοὺς μὲν γὰρ λόγους περὶ τοῦ | |||
τιμωρήσασθαι Φίλιππον ὁρῶ γιγνομένους, τὰ δὲ πράγματ᾿ | |||
εἰς τοῦτο προήκοντα, ὥσθ᾿ ὅπως μὴ πεισόμεθ᾿ αὐτοὶ | |||
πρότερον κακῶς σκέψασθαι δέον. οὐδέν οὖν ἄλλο μοι δοκοῦσιν | |||
οἱ τὰ τοιαῦτα λέγοντες ἢ τὴν ὑπόθεσιν, περὶ ἧς βουλεύεσθαι, | |||
οὐχὶ τὴν οὖσαν παριστάντες ὑμῖν ἁμαρτάνειν. ἐγὼ δέ, ὅτι μέν | |||
ποτ᾿ ἐξῆν τῇ πόλει καὶ τὰ αὑτῆς ἔχειν ἀσφαλῶς καὶ Φίλιππον | |||
τιμωρήσασθαι, καὶ μάλ᾿ ἀκριβῶς οἶδα· ἐπ᾿ ἐμοῦ γάρ, οὐ πάλαι | |||
γέγονεν ταῦτ᾿ ἀμφότερα· νῦν μέντοι πέπεισμαι τοῦθ᾿ ἱκανὸν | |||
προλαβεῖν ἡμῖν εἶναι τὴν πρώτην, ὅπως τοὺς συμμάχους | |||
σώσομεν. ἐὰν γὰρ τοῦτο βεβαίως ὑπάρξῃ, τότε καὶ περὶ τοῦ | |||
τίνα τιμωρήσεταί τις καὶ ὃν τρόπον ἐξέσται σκοπεῖν· πρὶν δὲ | |||
τὴν ἀρχὴν ὀρθῶς ὑποθέσθαι, μάταιον ἡγοῦμαι περὶ τῆς | |||
τελευτῆς ὁντινοῦν ποιεῖσθαι λόγον. | |||
Δημοσθένους, Γ´ ᾿Ολυνθιακὸς | |||
Georgian: | |||
From a Unicode conference invitation: | |||
გთხოვთ ახლავე გაიაროთ რეგისტრაცია Unicode-ის მეათე საერთაშორისო | |||
კონფერენციაზე დასასწრებად, რომელიც გაიმართება 10-12 მარტს, | |||
ქ. მაინცში, გერმანიაში. კონფერენცია შეჰკრებს ერთად მსოფლიოს | |||
ექსპერტებს ისეთ დარგებში როგორიცაა ინტერნეტი და Unicode-ი, | |||
ინტერნაციონალიზაცია და ლოკალიზაცია, Unicode-ის გამოყენება | |||
ოპერაციულ სისტემებსა, და გამოყენებით პროგრამებში, შრიფტებში, | |||
ტექსტების დამუშავებასა და მრავალენოვან კომპიუტერულ სისტემებში. | |||
Russian: | |||
From a Unicode conference invitation: | |||
Зарегистрируйтесь сейчас на Десятую Международную Конференцию по | |||
Unicode, которая состоится 10-12 марта 1997 года в Майнце в Германии. | |||
Конференция соберет широкий круг экспертов по вопросам глобального | |||
Интернета и Unicode, локализации и интернационализации, воплощению и | |||
применению Unicode в различных операционных системах и программных | |||
приложениях, шрифтах, верстке и многоязычных компьютерных системах. | |||
Thai (UCS Level 2): | |||
Excerpt from a poetry on The Romance of The Three Kingdoms (a Chinese | |||
classic 'San Gua'): | |||
[----------------------------|------------------------] | |||
๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช พระปกเกศกองบู๊กู้ขึ้นใหม่ | |||
สิบสองกษัตริย์ก่อนหน้าแลถัดไป สององค์ไซร้โง่เขลาเบาปัญญา | |||
ทรงนับถือขันทีเป็นที่พึ่ง บ้านเมืองจึงวิปริตเป็นนักหนา | |||
โฮจิ๋นเรียกทัพทั่วหัวเมืองมา หมายจะฆ่ามดชั่วตัวสำคัญ | |||
เหมือนขับไสไล่เสือจากเคหา รับหมาป่าเข้ามาเลยอาสัญ | |||
ฝ่ายอ้องอุ้นยุแยกให้แตกกัน ใช้สาวนั้นเป็นชนวนชื่นชวนใจ | |||
พลันลิฉุยกุยกีกลับก่อเหตุ ช่างอาเพศจริงหนาฟ้าร้องไห้ | |||
ต้องรบราฆ่าฟันจนบรรลัย ฤๅหาใครค้ำชูกู้บรรลังก์ ฯ | |||
(The above is a two-column text. If combining characters are handled | |||
correctly, the lines of the second column should be aligned with the | |||
| character above.) | |||
Ethiopian: | |||
Proverbs in the Amharic language: | |||
ሰማይ አይታረስ ንጉሥ አይከሰስ። | |||
ብላ ካለኝ እንደአባቴ በቆመጠኝ። | |||
ጌጥ ያለቤቱ ቁምጥና ነው። | |||
ደሀ በሕልሙ ቅቤ ባይጠጣ ንጣት በገደለው። | |||
የአፍ ወለምታ በቅቤ አይታሽም። | |||
አይጥ በበላ ዳዋ ተመታ። | |||
ሲተረጉሙ ይደረግሙ። | |||
ቀስ በቀስ፥ ዕንቁላል በእግሩ ይሄዳል። | |||
ድር ቢያብር አንበሳ ያስር። | |||
ሰው እንደቤቱ እንጅ እንደ ጉረቤቱ አይተዳደርም። | |||
እግዜር የከፈተውን ጉሮሮ ሳይዘጋው አይድርም። | |||
የጎረቤት ሌባ፥ ቢያዩት ይስቅ ባያዩት ያጠልቅ። | |||
ሥራ ከመፍታት ልጄን ላፋታት። | |||
ዓባይ ማደሪያ የለው፥ ግንድ ይዞ ይዞራል። | |||
የእስላም አገሩ መካ የአሞራ አገሩ ዋርካ። | |||
ተንጋሎ ቢተፉ ተመልሶ ባፉ። | |||
ወዳጅህ ማር ቢሆን ጨርስህ አትላሰው። | |||
እግርህን በፍራሽህ ልክ ዘርጋ። | |||
Runes: | |||
ᚻᛖ ᚳᚹᚫᚦ ᚦᚫᛏ ᚻᛖ ᛒᚢᛞᛖ ᚩᚾ ᚦᚫᛗ ᛚᚪᚾᛞᛖ ᚾᚩᚱᚦᚹᛖᚪᚱᛞᚢᛗ ᚹᛁᚦ ᚦᚪ ᚹᛖᛥᚫ | |||
(Old English, which transcribed into Latin reads 'He cwaeth that he | |||
bude thaem lande northweardum with tha Westsae.' and means 'He said | |||
that he lived in the northern land near the Western Sea.') | |||
Braille: | |||
⡌⠁⠧⠑ ⠼⠁⠒ ⡍⠜⠇⠑⠹⠰⠎ ⡣⠕⠌ | |||
⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠙⠑⠁⠙⠒ ⠞⠕ ⠃⠑⠛⠔ ⠺⠊⠹⠲ ⡹⠻⠑ ⠊⠎ ⠝⠕ ⠙⠳⠃⠞ | |||
⠱⠁⠞⠑⠧⠻ ⠁⠃⠳⠞ ⠹⠁⠞⠲ ⡹⠑ ⠗⠑⠛⠊⠌⠻ ⠕⠋ ⠙⠊⠎ ⠃⠥⠗⠊⠁⠇ ⠺⠁⠎ | |||
⠎⠊⠛⠝⠫ ⠃⠹ ⠹⠑ ⠊⠇⠻⠛⠹⠍⠁⠝⠂ ⠹⠑ ⠊⠇⠻⠅⠂ ⠹⠑ ⠥⠝⠙⠻⠞⠁⠅⠻⠂ | |||
⠁⠝⠙ ⠹⠑ ⠡⠊⠑⠋ ⠍⠳⠗⠝⠻⠲ ⡎⠊⠗⠕⠕⠛⠑ ⠎⠊⠛⠝⠫ ⠊⠞⠲ ⡁⠝⠙ | |||
⡎⠊⠗⠕⠕⠛⠑⠰⠎ ⠝⠁⠍⠑ ⠺⠁⠎ ⠛⠕⠕⠙ ⠥⠏⠕⠝ ⠰⡡⠁⠝⠛⠑⠂ ⠋⠕⠗ ⠁⠝⠹⠹⠔⠛ ⠙⠑ | |||
⠡⠕⠎⠑ ⠞⠕ ⠏⠥⠞ ⠙⠊⠎ ⠙⠁⠝⠙ ⠞⠕⠲ | |||
⡕⠇⠙ ⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ | |||
⡍⠔⠙⠖ ⡊ ⠙⠕⠝⠰⠞ ⠍⠑⠁⠝ ⠞⠕ ⠎⠁⠹ ⠹⠁⠞ ⡊ ⠅⠝⠪⠂ ⠕⠋ ⠍⠹ | |||
⠪⠝ ⠅⠝⠪⠇⠫⠛⠑⠂ ⠱⠁⠞ ⠹⠻⠑ ⠊⠎ ⠏⠜⠞⠊⠊⠥⠇⠜⠇⠹ ⠙⠑⠁⠙ ⠁⠃⠳⠞ | |||
⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ ⡊ ⠍⠊⠣⠞ ⠙⠁⠧⠑ ⠃⠑⠲ ⠔⠊⠇⠔⠫⠂ ⠍⠹⠎⠑⠇⠋⠂ ⠞⠕ | |||
⠗⠑⠛⠜⠙ ⠁ ⠊⠕⠋⠋⠔⠤⠝⠁⠊⠇ ⠁⠎ ⠹⠑ ⠙⠑⠁⠙⠑⠌ ⠏⠊⠑⠊⠑ ⠕⠋ ⠊⠗⠕⠝⠍⠕⠝⠛⠻⠹ | |||
⠔ ⠹⠑ ⠞⠗⠁⠙⠑⠲ ⡃⠥⠞ ⠹⠑ ⠺⠊⠎⠙⠕⠍ ⠕⠋ ⠳⠗ ⠁⠝⠊⠑⠌⠕⠗⠎ | |||
⠊⠎ ⠔ ⠹⠑ ⠎⠊⠍⠊⠇⠑⠆ ⠁⠝⠙ ⠍⠹ ⠥⠝⠙⠁⠇⠇⠪⠫ ⠙⠁⠝⠙⠎ | |||
⠩⠁⠇⠇ ⠝⠕⠞ ⠙⠊⠌⠥⠗⠃ ⠊⠞⠂ ⠕⠗ ⠹⠑ ⡊⠳⠝⠞⠗⠹⠰⠎ ⠙⠕⠝⠑ ⠋⠕⠗⠲ ⡹⠳ | |||
⠺⠊⠇⠇ ⠹⠻⠑⠋⠕⠗⠑ ⠏⠻⠍⠊⠞ ⠍⠑ ⠞⠕ ⠗⠑⠏⠑⠁⠞⠂ ⠑⠍⠏⠙⠁⠞⠊⠊⠁⠇⠇⠹⠂ ⠹⠁⠞ | |||
⡍⠜⠇⠑⠹ ⠺⠁⠎ ⠁⠎ ⠙⠑⠁⠙ ⠁⠎ ⠁ ⠙⠕⠕⠗⠤⠝⠁⠊⠇⠲ | |||
(The first couple of paragraphs of "A Christmas Carol" by Dickens) | |||
Compact font selection example text: | |||
ABCDEFGHIJKLMNOPQRSTUVWXYZ /0123456789 | |||
abcdefghijklmnopqrstuvwxyz £©µÀÆÖÞßéöÿ | |||
–—‘“”„†•…‰™œŠŸž€ ΑΒΓΔΩαβγδω АБВГДабвгд | |||
∀∂∈ℝ∧∪≡∞ ↑↗↨↻⇣ ┐┼╔╘░►☺♀ fi�⑀₂ἠḂӥẄɐː⍎אԱა | |||
Greetings in various languages: | |||
Hello world, Καλημέρα κόσμε, コンニチハ | |||
Box drawing alignment tests: █ | |||
▉ | |||
╔══╦══╗ ┌──┬──┐ ╭──┬──╮ ╭──┬──╮ ┏━━┳━━┓ ┎┒┏┑ ╷ ╻ ┏┯┓ ┌┰┐ ▊ ╱╲╱╲╳╳╳ | |||
║┌─╨─┐║ │╔═╧═╗│ │╒═╪═╕│ │╓─╁─╖│ ┃┌─╂─┐┃ ┗╃╄┙ ╶┼╴╺╋╸┠┼┨ ┝╋┥ ▋ ╲╱╲╱╳╳╳ | |||
║│╲ ╱│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╿ │┃ ┍╅╆┓ ╵ ╹ ┗┷┛ └┸┘ ▌ ╱╲╱╲╳╳╳ | |||
╠╡ ╳ ╞╣ ├╢ ╟┤ ├┼─┼─┼┤ ├╫─╂─╫┤ ┣┿╾┼╼┿┫ ┕┛┖┚ ┌┄┄┐ ╎ ┏┅┅┓ ┋ ▍ ╲╱╲╱╳╳╳ | |||
║│╱ ╲│║ │║ ║│ ││ │ ││ │║ ┃ ║│ ┃│ ╽ │┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▎ | |||
║└─╥─┘║ │╚═╤═╝│ │╘═╪═╛│ │╙─╀─╜│ ┃└─╂─┘┃ ░░▒▒▓▓██ ┊ ┆ ╎ ╏ ┇ ┋ ▏ | |||
╚══╩══╝ └──┴──┘ ╰──┴──╯ ╰──┴──╯ ┗━━┻━━┛ ▗▄▖▛▀▜ └╌╌┘ ╎ ┗╍╍┛ ┋ ▁▂▃▄▅▆▇█ | |||
▝▀▘▙▄▟ | |||
""" . | |||
<> rdfs:comment """ | |||
Two byte Unicode escape: \u00E0 | |||
Largest Unicode escape in Turtle: \U0010FFFF | |||
""" . |
@@ -1,2 +0,0 @@ | |||
# prefix name must end in a : | |||
@prefix a <#> . |
@@ -1,3 +0,0 @@ | |||
# Forbidden by RDF - predicate cannot be blank | |||
@prefix : <http://example.org/base#> . | |||
:a [ :b :c ] :d . |
@@ -1,3 +0,0 @@ | |||
# Forbidden by RDF - predicate cannot be blank | |||
@prefix : <http://example.org/base#> . | |||
:a [] :b . |
@@ -1,3 +0,0 @@ | |||
# 'a' only allowed as a predicate | |||
@prefix : <http://example.org/base#> . | |||
a :a :b . |
@@ -1,3 +0,0 @@ | |||
# No comma is allowed in collections | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
:a :b ( "apple", "banana" ) . |
@@ -1,4 +0,0 @@ | |||
# N3 {}s are not in Turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
{ :a :b :c . } :d :e . | |||
@@ -1,3 +0,0 @@ | |||
# is and of are not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
:a is :b of :c . |
@@ -1,4 +0,0 @@ | |||
# paths are not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
:a.:b.:c . | |||
:a^:b^:c . |
@@ -1,2 +0,0 @@ | |||
@keywords something. | |||
# @keywords is not in turtle |
@@ -1,3 +0,0 @@ | |||
# implies is not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
:a => :b . |
@@ -1,3 +0,0 @@ | |||
# equivalence is not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
:a = :b . |
@@ -1,3 +0,0 @@ | |||
# @forAll is not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
@forAll :x . |
@@ -1,3 +0,0 @@ | |||
# @forSome is not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
@forSome :x . |
@@ -1,3 +0,0 @@ | |||
# <= is not in turtle | |||
@prefix : <http://example.org/stuff/1.0/> . | |||
:a <= :b . |
@@ -1,6 +0,0 @@ | |||
# Test long literals with missing end | |||
@prefix : <http://example.org/ex#> . | |||
:a :b """a long | |||
literal | |||
with | |||
newlines |
@@ -1 +0,0 @@ | |||
@base "I'm quite certain this is not a URI" . |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org/> . | |||
_:.bad a eg:Thing . |
@@ -1 +0,0 @@ | |||
<> <http://example.org/pred> "hello"^^"not-a-uri" . |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:thing [ eg:comment "Thing" |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:comment """\uA |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:comment "That ain't no language"@en-x |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:comment "That ain't no language"@a |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:thing ( eg:car eg:cdr |
@@ -1,2 +0,0 @@ | |||
@prefix eg: <http://example.org/> . | |||
<> eg:p eg:o , |
@@ -1,2 +0,0 @@ | |||
@prefix eg: <http://example.org/> . | |||
<> eg:p eg:o ; eg:p1 eg:o2 , |
@@ -1,2 +0,0 @@ | |||
@prefix eg: <http://example.org/> . | |||
<> eg:p eg:o ; |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:comment "This is the string that never ends |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:comment """Hello"" |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:uri <http://example.org/dontstop |
@@ -1 +0,0 @@ | |||
<http://example.org/thing> <http://example.org/comment> """\!""" . |
@@ -1 +0,0 @@ | |||
<http://example.org/thing> <http://example.org/comment> "\uABCG" . |
@@ -1,2 +0,0 @@ | |||
_:genid1 a _:genid2 . | |||
_:genid2 a _:docid1 . |
@@ -1 +0,0 @@ | |||
<> <http://example.org/pred> "hello"@\bad . |
@@ -1 +0,0 @@ | |||
<> <http://example.org/pred> <http://example.org/valid> , invalid . |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org> . | |||
<> eg:thing ( . |
@@ -1 +0,0 @@ | |||
@prefix eg: "what?" . |
@@ -1 +0,0 @@ | |||
<> a badprefix:Thing . |
@@ -1 +0,0 @@ | |||
<> <http://example.org/pred> .hello . |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org/> . | |||
eg:thing a four . |
@@ -1,3 +0,0 @@ | |||
@prefix eg: <http://example.org/> . | |||
eg:thing a fives . |
@@ -1 +0,0 @@ | |||
@prefix _invalid <http://example.org/> . |
@@ -1 +0,0 @@ | |||
<> <http://example.org/pred> "hello |
@@ -1 +0,0 @@ | |||
<http://example.org/thing> <http://example.org/comment> <http://example.org/\!> . |
@@ -1,2 +0,0 @@ | |||
@prefix a: <http://example.org/> . | |||
a:thing x a:Thing . |
@@ -1 +0,0 @@ | |||
<foo> a <Bar> . |
@@ -1,2 +0,0 @@ | |||
<foo> | |||
a <Bar> . |
@@ -1,88 +0,0 @@ | |||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |||
@prefix mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> . | |||
@prefix qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> . | |||
<> rdf:type mf:Manifest ; | |||
rdfs:comment "Turtle bad syntax test cases (must fail)" ; | |||
mf:entries | |||
( | |||
[ mf:name "bad-00" ; | |||
rdfs:comment "prefix name must end in a :" ; | |||
mf:action [ qt:data <bad-00.ttl> ] ; | |||
] | |||
[ mf:name "bad-01" ; | |||
rdfs:comment "blank predicate forbidden" ; | |||
mf:action [ qt:data <bad-01.ttl> ] ; | |||
] | |||
[ mf:name "bad-02" ; | |||
rdfs:comment "blank predicate forbidden" ; | |||
mf:action [ qt:data <bad-02.ttl> ] ; | |||
] | |||
[ mf:name "bad-03" ; | |||
rdfs:comment "a forbidden as subject" ; | |||
mf:action [ qt:data <bad-03.ttl> ] ; | |||
] | |||
[ mf:name "bad-04" ; | |||
rdfs:comment ", not allowed in collections" ; | |||
mf:action [ qt:data <bad-04.ttl> ] ; | |||
] | |||
[ mf:name "bad-05" ; | |||
rdfs:comment "{} not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-05.ttl> ] ; | |||
] | |||
[ mf:name "bad-06" ; | |||
rdfs:comment "is and of not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-06.ttl> ] ; | |||
] | |||
[ mf:name "bad-07" ; | |||
rdfs:comment "paths not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-07.ttl> ] ; | |||
] | |||
[ mf:name "bad-08" ; | |||
rdfs:comment "@keywords not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-08.ttl> ] ; | |||
] | |||
[ mf:name "bad-09" ; | |||
rdfs:comment "=> not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-09.ttl> ] ; | |||
] | |||
[ mf:name "bad-10" ; | |||
rdfs:comment "= not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-10.ttl> ] ; | |||
] | |||
[ mf:name "bad-11" ; | |||
rdfs:comment "@forAll not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-11.ttl> ] ; | |||
] | |||
[ mf:name "bad-12" ; | |||
rdfs:comment "@forSome not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-12.ttl> ] ; | |||
] | |||
[ mf:name "bad-13" ; | |||
rdfs:comment "<= not allowed in Turtle" ; | |||
mf:action [ qt:data <bad-13.ttl> ] ; | |||
] | |||
[ mf:name "bad-14" ; | |||
rdfs:comment "long literal with missing end" ; | |||
mf:action [ qt:data <bad-14.ttl> ] ; | |||
] | |||
# End of tests | |||
). |
@@ -1,215 +0,0 @@ | |||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |||
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> . | |||
@prefix mf: <http://www.w3.org/2001/sw/DataAccess/tests/test-manifest#> . | |||
@prefix qt: <http://www.w3.org/2001/sw/DataAccess/tests/test-query#> . | |||
<> rdf:type mf:Manifest ; | |||
rdfs:comment "Turtle good syntax test cases (must pass)" ; | |||
mf:entries | |||
( | |||
[ mf:name "test-00" ; | |||
rdfs:comment "Blank subject" ; | |||
mf:action [ qt:data <test-00.ttl> ] ; | |||
mf:result <test-00.out> | |||
] | |||
[ mf:name "test-01" ; | |||
rdfs:comment "@prefix and qnames" ; | |||
mf:action [ qt:data <test-01.ttl> ] ; | |||
mf:result <test-01.out> | |||
] | |||
[ mf:name "test-02" ; | |||
rdfs:comment ", operator" ; | |||
mf:action [ qt:data <test-02.ttl> ] ; | |||
mf:result <test-02.out> | |||
] | |||
[ mf:name "test-03" ; | |||
rdfs:comment "; operator" ; | |||
mf:action [ qt:data <test-03.ttl> ] ; | |||
mf:result <test-03.out> | |||
] | |||
[ mf:name "test-04" ; | |||
rdfs:comment "empty [] as subject and object" ; | |||
mf:action [ qt:data <test-04.ttl> ] ; | |||
mf:result <test-04.out> | |||
] | |||
[ mf:name "test-05" ; | |||
rdfs:comment "non-empty [] as subject and object" ; | |||
mf:action [ qt:data <test-05.ttl> ] ; | |||
mf:result <test-05.out> | |||
] | |||
[ mf:name "test-06" ; | |||
rdfs:comment "'a' as predicate" ; | |||
mf:action [ qt:data <test-06.ttl> ] ; | |||
mf:result <test-06.out> | |||
] | |||
[ mf:name "test-07" ; | |||
rdfs:comment "simple collection" ; | |||
mf:action [ qt:data <test-07.ttl> ] ; | |||
mf:result <test-07.out> | |||
] | |||
[ mf:name "test-08" ; | |||
rdfs:comment "empty collection" ; | |||
mf:action [ qt:data <test-08.ttl> ] ; | |||
mf:result <test-08.out> | |||
] | |||
[ mf:name "test-09" ; | |||
rdfs:comment "integer datatyped literal" ; | |||
mf:action [ qt:data <test-09.ttl> ] ; | |||
mf:result <test-09.out> | |||
] | |||
[ mf:name "test-10" ; | |||
rdfs:comment "decimal integer canonicalization" ; | |||
mf:action [ qt:data <test-10.ttl> ] ; | |||
mf:result <test-10.out> | |||
] | |||
[ mf:name "test-11" ; | |||
rdfs:comment "- and _ in names and qnames" ; | |||
mf:action [ qt:data <test-11.ttl> ] ; | |||
mf:result <test-11.out> | |||
] | |||
[ mf:name "test-12" ; | |||
rdfs:comment "tests for rdf:_<numbers> and other qnames starting with _" ; | |||
mf:action [ qt:data <test-12.ttl> ] ; | |||
mf:result <test-12.out> | |||
] | |||
[ mf:name "test-13" ; | |||
rdfs:comment "bare : allowed" ; | |||
mf:action [ qt:data <test-13.ttl> ] ; | |||
mf:result <test-13.out> | |||
] | |||
[ mf:name "test-14" ; | |||
rdfs:comment "10000 triples, more than the default Bison stack size" ; | |||
mf:action [ qt:data <test-14.ttl> ] ; | |||
mf:result <test-14.out> | |||
] | |||
[ mf:name "test-15" ; | |||
rdfs:comment "10000 triple objects (10000 triples)" ; | |||
mf:action [ qt:data <test-15.ttl> ] ; | |||
mf:result <test-15.out> | |||
] | |||
[ mf:name "test-16" ; | |||
rdfs:comment "10000 items (10000 triples)" ; | |||
mf:action [ qt:data <test-16.ttl> ] ; | |||
mf:result <test-16.out> | |||
] | |||
[ mf:name "test-17" ; | |||
rdfs:comment "simple long literal" ; | |||
mf:action [ qt:data <test-17.ttl> ] ; | |||
mf:result <test-17.out> | |||
] | |||
[ mf:name "test-18" ; | |||
rdfs:comment "long literals with escapes" ; | |||
mf:action [ qt:data <test-18.ttl> ] ; | |||
mf:result <test-18.out> | |||
] | |||
[ mf:name "test-19" ; | |||
rdfs:comment "floating point number" ; | |||
mf:action [ qt:data <test-19.ttl> ] ; | |||
mf:result <test-19.out> | |||
] | |||
[ mf:name "test-20" ; | |||
rdfs:comment "empty literals, normal and long variant" ; | |||
mf:action [ qt:data <test-20.ttl> ] ; | |||
mf:result <test-20.out> | |||
] | |||
[ mf:name "test-21" ; | |||
rdfs:comment "positive integer, decimal and doubles" ; | |||
mf:action [ qt:data <test-21.ttl> ] ; | |||
mf:result <test-21.out> | |||
] | |||
[ mf:name "test-22" ; | |||
rdfs:comment "negative integer, decimal and doubles" ; | |||
mf:action [ qt:data <test-22.ttl> ] ; | |||
mf:result <test-22.out> | |||
] | |||
[ mf:name "test-23" ; | |||
rdfs:comment "long literal ending in double quote" ; | |||
mf:action [ qt:data <test-23.ttl> ] ; | |||
mf:result <test-23.out> | |||
] | |||
[ mf:name "test-24" ; | |||
rdfs:comment "boolean literals" ; | |||
mf:action [ qt:data <test-24.ttl> ] ; | |||
mf:result <test-24.out> | |||
] | |||
[ mf:name "test-25" ; | |||
rdfs:comment "comments" ; | |||
mf:action [ qt:data <test-25.ttl> ] ; | |||
mf:result <test-25.out> | |||
] | |||
[ mf:name "test-26" ; | |||
rdfs:comment "no final mewline" ; | |||
mf:action [ qt:data <test-26.ttl> ] ; | |||
mf:result <test-26.out> | |||
] | |||
[ mf:name "test-27" ; | |||
rdfs:comment "duplicate prefix" ; | |||
mf:action [ qt:data <test-27.ttl> ] ; | |||
mf:result <test-27.out> | |||
] | |||
[ mf:name "test-28" ; | |||
rdfs:comment "decimal data types (serializing test)" ; | |||
mf:action [ qt:data <test-28.ttl> ] ; | |||
mf:result <test-28.out> | |||
] | |||
[ mf:name "test-29" ; | |||
rdfs:comment "Escaping U+0001 to U+007F in a URI" ; | |||
mf:action [ qt:data <test-29.ttl> ] ; | |||
mf:result <test-29.out> | |||
] | |||
[ mf:name "test-30" ; | |||
rdfs:comment "@base" ; | |||
mf:action [ qt:data <test-30.ttl> ] ; | |||
mf:result <test-30.out> | |||
] | |||
[ mf:name "rdf-schema" ; | |||
rdfs:comment "RDF Namespace document converted into Turtle" ; | |||
mf:action [ qt:data <rdf-schema.ttl> ] ; | |||
mf:result <rdf-schema.out> | |||
] | |||
[ mf:name "rdfs-namespace" ; | |||
rdfs:comment "RDFS Namespace document converted into Turtle" ; | |||
mf:action [ qt:data <rdfs-namespace.ttl> ] ; | |||
mf:result <rdfs-namespace.out> | |||
] | |||
[ mf:name "rdfq-results" ; | |||
rdfs:comment "Example query result from http://www.w3.org/2003/03/rdfqr-tests/recording-query-results.html" ; | |||
mf:action [ qt:data <rdfq-results.ttl> ] ; | |||
mf:result <rdfq-results.out> | |||
] | |||
# End of tests | |||
). |
@@ -1,126 +0,0 @@ | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#label> "type"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of Class" . | |||
<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Class"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#label> "Classe"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#Class> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#comment> "Properties used to express RDF Schema constraints." . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ConstraintProperty"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#label> "Propri\u00E9t\u00E9Contrainte"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#ConstraintResource> . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#comment> "Resources used to express RDF Schema constraints." . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#label> "ConstraintResource"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#label> "RessourceContrainte"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#ConstraintResource> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set Containers." . | |||
<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Container"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#label> "Enveloppe"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#Container> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#label> "ContainerMembershipProperty"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#ContainerMembershipProperty> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of atomic values, eg. textual strings." . | |||
<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Literal"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#Literal> <http://www.w3.org/2000/01/rdf-schema#label> "Litt\u00E9ral"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#comment> "The most general class" . | |||
<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Resource"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#Resource> <http://www.w3.org/2000/01/rdf-schema#label> "Ressource"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#comment> "Use this for descriptions" . | |||
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "comment"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#label> "commentaire"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#comment> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> . | |||
<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> . | |||
<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#comment> "This is how we associate a class with properties that its instances can have" . | |||
<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domain"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#label> "domaine"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates a resource containing and defining the subject resource." . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "esD\u00E9finiPar"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#label> "isDefinedBy"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#isDefinedBy> <http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#seeAlso> . | |||
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#comment> "Provides a human-readable version of a resource name." . | |||
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#label> "label"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#label> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Literal> . | |||
<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#ConstraintProperty> . | |||
<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#comment> "Properties that can be used in a schema to provide constraints" . | |||
<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "range"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#label> "\u00E9tendue"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates a resource that provides information about the subject resource." . | |||
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "seeAlso"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#label> "voirAussi"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates membership of a class" . | |||
<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "sousClasseDe"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#label> "subClassOf"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#comment> "Indicates specialization of properties" . | |||
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "sousPropri\u00E9t\u00E9De"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#label> "subPropertyOf"@en . | |||
<http://www.w3.org/2000/01/rdf-schema#subPropertyOf> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Alt"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#label> "Choix"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Alt> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Bag"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#label> "Ensemble"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Bag> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#comment> "The concept of a property." . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Property"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#label> "Propri\u00E9t\u00E9"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "Sequence"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#label> "S\u00E9quence"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Seq> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Container> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/2000/01/rdf-schema#Class> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#comment> "This represents the set of reified statements." . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "D\u00E9claration"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#label> "Statement"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> <http://www.w3.org/2000/01/rdf-schema#subClassOf> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#object> <http://www.w3.org/2000/01/rdf-schema#label> "objet"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "predicate"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#label> "pr\u00E9dicat"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#predicate> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#domain> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Statement> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "subject"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#label> "sujet"@fr . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#subject> <http://www.w3.org/2000/01/rdf-schema#range> <http://www.w3.org/2000/01/rdf-schema#Resource> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://www.w3.org/1999/02/22-rdf-syntax-ns#Property> . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "object"@en . | |||
<http://www.w3.org/1999/02/22-rdf-syntax-ns#value> <http://www.w3.org/2000/01/rdf-schema#label> "value"@fr . | |||
<http://www.w3.org/2000/01/rdf-schema#> <http://www.w3.org/2000/01/rdf-schema#seeAlso> <http://www.w3.org/2000/01/rdf-schema-more> . |
@@ -1,156 +0,0 @@ | |||
# RDF Namespace document converted into Turtle | |||
@prefix : <http://www.w3.org/2000/01/rdf-schema#> . | |||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |||
rdf:type a rdf:Property; | |||
:comment "Indicates membership of a class"; | |||
:label "type"@en, | |||
"type"@fr; | |||
:range :Class . | |||
:Class a :Class; | |||
:comment "The concept of Class"; | |||
:label "Class"@en, | |||
"Classe"@fr; | |||
:subClassOf :Resource . | |||
:ConstraintProperty a :Class; | |||
:comment "Properties used to express RDF Schema constraints."; | |||
:label "ConstraintProperty"@en, | |||
"Propri\u00E9t\u00E9Contrainte"@fr; | |||
:subClassOf :ConstraintResource, | |||
rdf:Property . | |||
:ConstraintResource a :Class, | |||
:Class; | |||
:comment "Resources used to express RDF Schema constraints."; | |||
:label "ConstraintResource"@en, | |||
"RessourceContrainte"@fr; | |||
:subClassOf :Resource . | |||
:Container a :Class; | |||
:comment "This represents the set Containers."; | |||
:label "Container"@en, | |||
"Enveloppe"@fr; | |||
:subClassOf :Resource . | |||
:ContainerMembershipProperty a :Class; | |||
:label "ContainerMembershipProperty"@en; | |||
:subClassOf rdf:Property . | |||
:Literal a :Class, | |||
:Class; | |||
:comment "This represents the set of atomic values, eg. textual strings."; | |||
:label "Literal"@en, | |||
"Litt\u00E9ral"@fr . | |||
:Resource a :Class; | |||
:comment "The most general class"; | |||
:label "Resource"@en, | |||
"Ressource"@fr . | |||
:comment a rdf:Property; | |||
:comment "Use this for descriptions"; | |||
:domain :Resource; | |||
:label "comment"@en, | |||
"commentaire"@fr; | |||
:range :Literal . | |||
:domain a :ConstraintProperty; | |||
:comment "This is how we associate a class with properties that its instances can have"; | |||
:label "domain"@en, | |||
"domaine"@fr . | |||
:isDefinedBy a rdf:Property; | |||
:comment "Indicates a resource containing and defining the subject resource."; | |||
:domain :Resource; | |||
:label "esD\u00E9finiPar"@fr, | |||
"isDefinedBy"@en; | |||
:range :Resource; | |||
:subPropertyOf :seeAlso . | |||
:label a rdf:Property; | |||
:comment "Provides a human-readable version of a resource name."; | |||
:domain :Resource; | |||
:label "label"@en, | |||
"label"@fr; | |||
:range :Literal . | |||
:range a :ConstraintProperty; | |||
:comment "Properties that can be used in a schema to provide constraints"; | |||
:domain rdf:Property; | |||
:label "range"@en, | |||
"\u00E9tendue"@fr; | |||
:range :Class . | |||
:seeAlso a rdf:Property; | |||
:comment "Indicates a resource that provides information about the subject resource."; | |||
:domain :Resource; | |||
:label "seeAlso"@en, | |||
"voirAussi"@fr; | |||
:range :Resource . | |||
:subClassOf a rdf:Property; | |||
:comment "Indicates membership of a class"; | |||
:domain :Class; | |||
:label "sousClasseDe"@fr, | |||
"subClassOf"@en; | |||
:range :Class . | |||
:subPropertyOf a rdf:Property; | |||
:comment "Indicates specialization of properties"; | |||
:domain rdf:Property; | |||
:label "sousPropri\u00E9t\u00E9De"@fr, | |||
"subPropertyOf"@en; | |||
:range rdf:Property . | |||
rdf:Alt a :Class; | |||
:label "Alt"@en, | |||
"Choix"@fr; | |||
:subClassOf :Container . | |||
rdf:Bag a :Class; | |||
:label "Bag"@en, | |||
"Ensemble"@fr; | |||
:subClassOf :Container . | |||
rdf:Property a :Class; | |||
:comment "The concept of a property."; | |||
:label "Property"@en, | |||
"Propri\u00E9t\u00E9"@fr; | |||
:subClassOf :Resource . | |||
rdf:Seq a :Class; | |||
:label "Sequence"@en, | |||
"S\u00E9quence"@fr; | |||
:subClassOf :Container . | |||
rdf:Statement a :Class; | |||
:comment "This represents the set of reified statements."; | |||
:label "D\u00E9claration"@fr, | |||
"Statement"@en; | |||
:subClassOf :Resource . | |||
rdf:object a rdf:Property; | |||
:domain rdf:Statement; | |||
:label "object"@en, | |||
"objet"@fr . | |||
rdf:predicate a rdf:Property; | |||
:domain rdf:Statement; | |||
:label "predicate"@en, | |||
"pr\u00E9dicat"@fr; | |||
:range rdf:Property . | |||
rdf:subject a rdf:Property; | |||
:domain rdf:Statement; | |||
:label "subject"@en, | |||
"sujet"@fr; | |||
:range :Resource . | |||
rdf:value a rdf:Property; | |||
:label "object"@en, | |||
"value"@fr . | |||
: :seeAlso <http://www.w3.org/2000/01/rdf-schema-more> . |
@@ -1,36 +0,0 @@ | |||
_:genid1 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" . | |||
_:genid1 <http://jena.hpl.hp.com/2003/03/result-set#value> "123"^^<http://www.w3.org/2001/XMLSchema#integer> . | |||
_:genid2 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" . | |||
_:genid2 <http://jena.hpl.hp.com/2003/03/result-set#value> <http://example.com/resource1> . | |||
_:genid3 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> . | |||
_:genid3 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid1 . | |||
_:genid3 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid2 . | |||
_:genid4 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" . | |||
_:genid4 <http://jena.hpl.hp.com/2003/03/result-set#value> "2003-01-21" . | |||
_:genid5 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" . | |||
_:genid5 <http://jena.hpl.hp.com/2003/03/result-set#value> <http://example.com/resource2> . | |||
_:genid6 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> . | |||
_:genid6 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid4 . | |||
_:genid6 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid5 . | |||
_:genid7 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" . | |||
_:genid7 <http://jena.hpl.hp.com/2003/03/result-set#value> "anon1" . | |||
_:genid8 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" . | |||
_:genid8 <http://jena.hpl.hp.com/2003/03/result-set#value> _:a . | |||
_:genid9 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> . | |||
_:genid9 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid7 . | |||
_:genid9 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid8 . | |||
_:genid10 <http://jena.hpl.hp.com/2003/03/result-set#variable> "x" . | |||
_:genid10 <http://jena.hpl.hp.com/2003/03/result-set#value> "anon2" . | |||
_:genid11 <http://jena.hpl.hp.com/2003/03/result-set#variable> "y" . | |||
_:genid11 <http://jena.hpl.hp.com/2003/03/result-set#value> _:a . | |||
_:genid12 <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSolution> . | |||
_:genid12 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid10 . | |||
_:genid12 <http://jena.hpl.hp.com/2003/03/result-set#binding> _:genid11 . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://www.w3.org/1999/02/22-rdf-syntax-ns#type> <http://jena.hpl.hp.com/2003/03/result-set#ResultSet> . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#size> "4"^^<http://www.w3.org/2001/XMLSchema#integer> . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#resultVariable> "x" . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#resultVariable> "y" . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid3 . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid6 . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid9 . | |||
<http://www.w3.org/2001/sw/DataAccess/df1/tests/rdfq-results.ttl> <http://jena.hpl.hp.com/2003/03/result-set#solution> _:genid12 . |
@@ -1,39 +0,0 @@ | |||
# from http://www.w3.org/2003/03/rdfqr-tests/recording-query-results.html | |||
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> . | |||
@prefix rs: <http://jena.hpl.hp.com/2003/03/result-set#> . | |||
<> rdf:type rs:ResultSet ; | |||
rs:size 4 ; | |||
rs:resultVariable "x" ; rs:resultVariable "y" ; | |||
rs:solution | |||
[ rdf:type rs:ResultSolution ; | |||
rs:binding [ rs:variable "x" ; rs:value 123 ] ; | |||
rs:binding [ rs:variable "y" ; rs:value <http://example.com/resource1> ] | |||
] ; | |||
rs:solution | |||
[ rdf:type rs:ResultSolution ; | |||
rs:binding [ rs:variable "x" ; | |||
rs:value "2003-01-21" ] ; | |||
rs:binding [ rs:variable "y" ; | |||
rs:value <http://example.com/resource2> ] | |||
] ; | |||
rs:solution | |||
[ rdf:type rs:ResultSolution ; | |||
rs:binding [ rs:variable "x" ; | |||
rs:value "anon1" ] ; | |||
rs:binding [ rs:variable "y" ; | |||
rs:value _:a ] | |||
] ; | |||
rs:solution | |||
[ rdf:type rs:ResultSolution ; | |||
rs:binding [ rs:variable "x" ; | |||
rs:value "anon2" ] ; | |||
rs:binding [ rs:variable "y" ; | |||
rs:value _:a ] | |||
] ; | |||
. |