| @@ -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 ] | |||
| ] ; | |||
| . | |||