summaryrefslogtreecommitdiffstats
path: root/src/slv2_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/slv2_internal.h')
-rw-r--r--src/slv2_internal.h428
1 files changed, 0 insertions, 428 deletions
diff --git a/src/slv2_internal.h b/src/slv2_internal.h
deleted file mode 100644
index 2e89891..0000000
--- a/src/slv2_internal.h
+++ /dev/null
@@ -1,428 +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.
-*/
-
-#ifndef SLV2_INTERNAL_H
-#define SLV2_INTERNAL_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdbool.h>
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
-
-#ifdef __WIN32__
-#include <windows.h>
-#define dlopen(path, flags) LoadLibrary(path)
-#define dlclose(lib) FreeLibrary(lib)
-#define dlsym GetProcAddress
-static inline char* dlerror(void) { return "Unknown error"; }
-#else
-#include <dlfcn.h>
-#endif
-
-#include <glib.h>
-
-#include "serd/serd.h"
-#include "sord/sord.h"
-
-#include "slv2-config.h"
-
-#ifdef SLV2_DYN_MANIFEST
-#include "lv2/lv2plug.in/ns/ext/dyn-manifest/dyn-manifest.h"
-#endif
-
-#ifdef HAVE_SUIL
-#include "suil/suil.h"
-#endif
-
-#include "slv2/slv2.h"
-
-#define SLV2_NS_DOAP (const uint8_t*)"http://usefulinc.com/ns/doap#"
-#define SLV2_NS_RDFS (const uint8_t*)"http://www.w3.org/2000/01/rdf-schema#"
-#define SLV2_NS_SLV2 (const uint8_t*)"http://drobilla.net/ns/slv2#"
-#define SLV2_NS_LV2 (const uint8_t*)"http://lv2plug.in/ns/lv2core#"
-#define SLV2_NS_XSD (const uint8_t*)"http://www.w3.org/2001/XMLSchema#"
-#define SLV2_NS_RDF (const uint8_t*)"http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-
-typedef SordIter* SLV2Matches;
-typedef const SordNode* SLV2Node;
-
-#define FOREACH_MATCH(iter) \
- for (; !sord_iter_end(iter); sord_iter_next(iter))
-
-static inline const SordNode*
-slv2_match_subject(SLV2Matches iter) {
- SordQuad tup;
- sord_iter_get(iter, tup);
- return tup[SORD_SUBJECT];
-}
-
-static inline const SordNode*
-slv2_match_object(SLV2Matches iter) {
- SordQuad tup;
- sord_iter_get(iter, tup);
- return tup[SORD_OBJECT];
-}
-
-static inline void
-slv2_match_end(SLV2Matches iter)
-{
- sord_iter_free(iter);
-}
-
-/* ********* PORT ********* */
-
-/** Reference to a port on some plugin. */
-struct _SLV2Port {
- uint32_t index; ///< lv2:index
- SLV2Value symbol; ///< lv2:symbol
- SLV2Values classes; ///< rdf:type
-};
-
-SLV2Port slv2_port_new(SLV2World world, uint32_t index, const char* symbol);
-void slv2_port_free(SLV2Port port);
-
-/* ********* Spec ********* */
-
-struct _SLV2Spec {
- SordNode* spec;
- SordNode* bundle;
- SLV2Values data_uris;
-};
-
-typedef struct _SLV2Spec* SLV2Spec;
-
-/* ********* Plugin ********* */
-
-/** Header of an SLV2Plugin, SLV2PluginClass, or SLV2UI.
- * Any of these structs may be safely casted to _SLV2Header, which is used to
- * implement sequences without code duplication (see slv2_sequence_get_by_uri).
- */
-struct _SLV2Header {
- struct _SLV2World* world;
- SLV2Value uri;
-};
-
-/** Record of an installed/available plugin.
- *
- * A simple reference to a plugin somewhere on the system. This just holds
- * paths of relevant files, the actual data therein isn't loaded into memory.
- */
-struct _SLV2Plugin {
- struct _SLV2World* world;
- SLV2Value plugin_uri;
- SLV2Value bundle_uri; ///< Bundle directory plugin was loaded from
- SLV2Value binary_uri; ///< lv2:binary
- SLV2Value dynman_uri; ///< dynamic manifest binary
- SLV2PluginClass plugin_class;
- SLV2Values data_uris; ///< rdfs::seeAlso
- SLV2Port* ports;
- uint32_t num_ports;
- bool loaded;
- bool replaced;
-};
-
-SLV2Plugin slv2_plugin_new(SLV2World world, SLV2Value uri, SLV2Value bundle_uri);
-void slv2_plugin_load_if_necessary(SLV2Plugin p);
-void slv2_plugin_free(SLV2Plugin plugin);
-
-SLV2Value
-slv2_plugin_get_unique(SLV2Plugin p,
- SLV2Node subject,
- SLV2Node predicate);
-
-/* ********* Plugins ********* */
-
-SLV2Plugins
-slv2_plugins_new();
-
-
-/**
- Increment @a i to point at the next element in the collection.
-*/
-SLV2Iter
-slv2_iter_next(SLV2Iter i);
-
-/**
- Return true iff @a i is at the end of the collection.
-*/
-bool
-slv2_iter_end(SLV2Iter i);
-
-SLV2Iter
-slv2_collection_begin(SLV2Collection collection);
-
-void*
-slv2_collection_get(SLV2Collection collection,
- SLV2Iter i);
-
-/**
- Free @a collection.
-*/
-void
-slv2_collection_free(SLV2Collection collection);
-
-/**
- Get the number of elements in @a collection.
-*/
-unsigned
-slv2_collection_size(SLV2Collection collection);
-
-/**
- Get an element from @a collection by index.
-
- @a index has no significance other than as an index into @a collection.
-
- Any @a index not less than the size of the collection will return NULL,
- so all elements in a collection can be enumerated by repeated calls
- to this function starting with @a index = 0.
-
- Note this function is a search, and not constant time.
- This function is deprecated, use iterators instead.
-
- @return NULL if @a index is out of range.
-*/
-SLV2_DEPRECATED
-void*
-slv2_collection_get_at(SLV2Collection collection,
- unsigned index);
-
-SLV2Values
-slv2_values_new(void);
-
-SLV2ScalePoints
-slv2_scale_points_new(void);
-
-
-/* ********* Instance ********* */
-
-/** Pimpl portion of SLV2Instance */
-struct _SLV2InstanceImpl {
- void* lib_handle;
-};
-
-/* ********* Plugin Class ********* */
-
-struct _SLV2PluginClass {
- struct _SLV2World* world;
- SLV2Value uri;
- SLV2Value parent_uri;
- SLV2Value label;
-};
-
-SLV2PluginClass slv2_plugin_class_new(SLV2World world,
- SLV2Node parent_uri,
- SLV2Node uri,
- const char* label);
-
-void slv2_plugin_class_free(SLV2PluginClass plugin_class);
-
-/* ********* Plugin Classes ********* */
-
-SLV2PluginClasses slv2_plugin_classes_new();
-void slv2_plugin_classes_free();
-
-/* ********* World ********* */
-
-typedef struct {
- bool dyn_manifest;
- bool filter_language;
-} SLV2Options;
-
-/** Model of LV2 (RDF) data loaded from bundles.
- */
-struct _SLV2World {
- SordWorld* world;
- SordModel* model;
- SerdReader* reader;
- SerdEnv* namespaces;
- unsigned n_read_files;
- SLV2PluginClass lv2_plugin_class;
- SLV2PluginClasses plugin_classes;
- GSList* specs;
- SLV2Plugins plugins;
- SordNode* dc_replaces_node;
- SordNode* dyn_manifest_node;
- SordNode* lv2_specification_node;
- SordNode* lv2_plugin_node;
- SordNode* lv2_binary_node;
- SordNode* lv2_default_node;
- SordNode* lv2_minimum_node;
- SordNode* lv2_maximum_node;
- SordNode* lv2_port_node;
- SordNode* lv2_portproperty_node;
- SordNode* lv2_reportslatency_node;
- SordNode* lv2_index_node;
- SordNode* lv2_symbol_node;
- SordNode* rdf_a_node;
- SordNode* rdf_value_node;
- SordNode* rdfs_class_node;
- SordNode* rdfs_label_node;
- SordNode* rdfs_seealso_node;
- SordNode* rdfs_subclassof_node;
- SordNode* slv2_dmanifest_node;
- SordNode* xsd_boolean_node;
- SordNode* xsd_decimal_node;
- SordNode* xsd_double_node;
- SordNode* xsd_integer_node;
- SLV2Value doap_name_val;
- SLV2Value lv2_name_val;
- SLV2Options opt;
-};
-
-const uint8_t*
-slv2_world_blank_node_prefix(SLV2World world);
-void
-slv2_world_load_file(SLV2World world, const char* file_uri);
-
-/* ********* Plugin UI ********* */
-
-struct _SLV2UI {
- struct _SLV2World* world;
- SLV2Value uri;
- SLV2Value bundle_uri;
- SLV2Value binary_uri;
- SLV2Values classes;
-};
-
-SLV2UIs slv2_uis_new();
-
-SLV2UI
-slv2_ui_new(SLV2World world,
- SLV2Value uri,
- SLV2Value type_uri,
- SLV2Value binary_uri);
-
-void slv2_ui_free(SLV2UI ui);
-
-/* ********* Value ********* */
-
-typedef enum _SLV2ValueType {
- SLV2_VALUE_URI,
- SLV2_VALUE_QNAME_UNUSED, ///< FIXME: APIBREAK: remove
- SLV2_VALUE_STRING,
- SLV2_VALUE_INT,
- SLV2_VALUE_FLOAT,
- SLV2_VALUE_BOOL,
- SLV2_VALUE_BLANK
-} SLV2ValueType;
-
-struct _SLV2Value {
- SLV2World world;
- char* str_val; ///< always present
- union {
- int int_val;
- float float_val;
- bool bool_val;
- SordNode* uri_val;
- } val;
- SLV2ValueType type;
-};
-
-SLV2Value slv2_value_new(SLV2World world, SLV2ValueType type, const char* val);
-SLV2Value slv2_value_new_from_node(SLV2World world, SLV2Node node);
-SLV2Node slv2_value_as_node(SLV2Value value);
-
-int
-slv2_header_compare_by_uri(const void* a, const void* b, void* user_data);
-
-static inline void
-slv2_sequence_insert(GSequence* seq, void* value)
-{
- g_sequence_insert_sorted(seq, value, slv2_header_compare_by_uri, NULL);
-}
-
-static inline void
-slv2_array_append(GSequence* seq, void* value) {
- g_sequence_append(seq, value);
-}
-
-struct _SLV2Header*
-slv2_sequence_get_by_uri(GSequence* seq, SLV2Value uri);
-
-static inline SordNode* slv2_node_copy(SLV2Node node) {
- return sord_node_copy(node);
-}
-
-static inline void slv2_node_free(SLV2World world, SordNode* node) {
- sord_node_free(world->world, node);
-}
-
-/* ********* Scale Points ********* */
-
-struct _SLV2ScalePoint {
- SLV2Value value;
- SLV2Value label;
-};
-
-SLV2ScalePoint slv2_scale_point_new(SLV2Value value, SLV2Value label);
-void slv2_scale_point_free(SLV2ScalePoint point);
-
-/* ********* Query Results ********* */
-
-SLV2Matches slv2_plugin_find_statements(SLV2Plugin plugin,
- SLV2Node subject,
- SLV2Node predicate,
- SLV2Node object);
-
-static inline bool slv2_matches_next(SLV2Matches matches) {
- return sord_iter_next(matches);
-}
-
-static inline bool slv2_matches_end(SLV2Matches matches) {
- return sord_iter_end(matches);
-}
-
-SLV2Values slv2_values_from_stream_objects(SLV2Plugin p,
- SLV2Matches stream);
-
-/* ********* Utilities ********* */
-
-char* slv2_strjoin(const char* first, ...);
-char* slv2_strdup(const char* str);
-char* slv2_get_lang();
-uint8_t* slv2_qname_expand(SLV2Plugin p, const char* qname);
-
-typedef void (*VoidFunc)();
-
-/** dlsym wrapper to return a function pointer (without annoying warning) */
-static inline VoidFunc
-slv2_dlfunc(void* handle, const char* symbol)
-{
- typedef VoidFunc (*VoidFuncGetter)(void*, const char*);
- VoidFuncGetter dlfunc = (VoidFuncGetter)dlsym;
- return dlfunc(handle, symbol);
-}
-
-/* ********* Dynamic Manifest ********* */
-#ifdef SLV2_DYN_MANIFEST
-static const LV2_Feature* const dman_features = { NULL };
-#endif
-
-#define SLV2_ERROR(str) fprintf(stderr, "ERROR: %s: " str, __func__)
-#define SLV2_ERRORF(fmt, ...) fprintf(stderr, "ERROR: %s: " fmt, __func__, __VA_ARGS__)
-
-#define SLV2_WARN(str) fprintf(stderr, "WARNING: %s: " str, __func__)
-#define SLV2_WARNF(fmt, ...) fprintf(stderr, "WARNING: %s: " fmt, __func__, __VA_ARGS__)
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SLV2_INTERNAL_H */