summaryrefslogtreecommitdiffstats
path: root/utils/lv2_inspect.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/lv2_inspect.c')
-rw-r--r--utils/lv2_inspect.c383
1 files changed, 0 insertions, 383 deletions
diff --git a/utils/lv2_inspect.c b/utils/lv2_inspect.c
deleted file mode 100644
index 48d2935..0000000
--- a/utils/lv2_inspect.c
+++ /dev/null
@@ -1,383 +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 <locale.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lilv/lilv.h"
-
-#include "lilv-config.h"
-
-LilvNode* event_class = NULL;
-LilvNode* control_class = NULL;
-LilvNode* in_group_pred = NULL;
-LilvNode* role_pred = NULL;
-LilvNode* preset_pred = NULL;
-LilvNode* title_pred = NULL;
-LilvNode* supports_event_pred = NULL;
-
-void
-print_group(const LilvPlugin* p,
- const LilvNode* group,
- LilvNode* type,
- LilvNode* symbol)
-{
- printf("\n\tGroup %s:\n", lilv_node_as_string(group));
- printf("\t\tType: %s\n", lilv_node_as_string(type));
- printf("\t\tSymbol: %s\n", lilv_node_as_string(symbol));
-}
-
-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* p = lilv_scale_points_get(points, i);
- printf("\t\t\t%s = \"%s\"\n",
- lilv_node_as_string(lilv_scale_point_get_value(p)),
- lilv_node_as_string(lilv_scale_point_get_label(p)));
- }
- 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, in_group_pred);
- if (lilv_nodes_size(groups) > 0)
- printf("\t\tGroup: %s\n",
- lilv_node_as_string(
- lilv_nodes_get(groups, lilv_nodes_begin(groups))));
- lilv_nodes_free(groups);
-
- LilvNodes* roles = lilv_port_get_value(p, port, role_pred);
- if (lilv_nodes_size(roles) > 0)
- printf("\t\tRole: %s\n",
- lilv_node_as_string(
- lilv_nodes_get(roles, lilv_nodes_begin(roles))));
- lilv_nodes_free(roles);
-
- 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);
-}
-
-void
-print_plugin(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("\tUI: ");
- LILV_FOREACH(uis, i, uis) {
- const LilvUI* ui = lilv_uis_get(uis, i);
- printf("%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, i, types) {
- printf("\t Class: %s\n",
- lilv_node_as_uri(lilv_nodes_get(types, i)));
- }
-
- if (binary)
- printf("\t Binary: %s\n", binary);
-
- printf("\t Bundle: %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);
-
- /* Presets */
-
- LilvNodes* presets = lilv_plugin_get_value(p, preset_pred);
- if (presets)
- printf("\tPresets: \n");
- LILV_FOREACH(nodes, i, presets) {
- LilvNodes* titles = lilv_plugin_get_value_for_subject(
- p, lilv_nodes_get(presets, i), title_pred);
- if (titles) {
- const LilvNode* title = lilv_nodes_get(titles, lilv_nodes_begin(titles));
- printf("\t %s\n", lilv_node_as_string(title));
- }
- }
-
- /* Ports */
-
- const uint32_t num_ports = lilv_plugin_get_num_ports(p);
- float* mins = calloc(num_ports, sizeof(float));
- float* maxes = calloc(num_ports, sizeof(float));
- float* defaults = 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);
-}
-
-void
-print_version()
-{
- printf(
- "lv2_inspect (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");
-}
-
-void
-print_usage()
-{
- printf("Usage: lv2_inspect PLUGIN_URI\n");
- printf("Show information about an installed LV2 plugin.\n");
-}
-
-int
-main(int argc, char** argv)
-{
- int ret = 0;
- setlocale (LC_ALL, "");
-
- LilvWorld* world = lilv_world_new();
- lilv_world_load_all(world);
-
-#define NS_DC "http://dublincore.org/documents/dcmi-namespace/"
-#define NS_PG "http://lv2plug.in/ns/ext/port-groups#"
-#define NS_PSET "http://lv2plug.in/ns/ext/presets#"
-#define NS_EV "http://lv2plug.in/ns/ext/event#"
-
- control_class = lilv_new_uri(world, LILV_PORT_CLASS_CONTROL);
- event_class = lilv_new_uri(world, LILV_PORT_CLASS_EVENT);
- in_group_pred = lilv_new_uri(world, NS_PG "inGroup");
- preset_pred = lilv_new_uri(world, NS_PSET "hasPreset");
- role_pred = lilv_new_uri(world, NS_PG "role");
- title_pred = lilv_new_uri(world, NS_DC "title");
- supports_event_pred = lilv_new_uri(world, NS_EV "supportsEvent");
-
- if (argc != 2) {
- print_usage();
- ret = 1;
- goto done;
- }
-
- if (!strcmp(argv[1], "--version")) {
- print_version();
- ret = 0;
- goto done;
- } else if (!strcmp(argv[1], "--help")) {
- print_usage();
- ret = 0;
- goto done;
- } else if (argv[1][0] == '-') {
- print_usage();
- ret = 2;
- goto done;
- }
-
- const LilvPlugins* plugins = lilv_world_get_all_plugins(world);
- LilvNode* uri = lilv_new_uri(world, argv[1]);
-
- const LilvPlugin* p = lilv_plugins_get_by_uri(plugins, uri);
-
- if (p) {
- print_plugin(p);
- } else {
- fprintf(stderr, "Plugin not found.\n");
- }
-
- ret = (p != NULL ? 0 : -1);
-
- lilv_node_free(uri);
-
-done:
- lilv_node_free(title_pred);
- lilv_node_free(role_pred);
- lilv_node_free(preset_pred);
- lilv_node_free(in_group_pred);
- lilv_node_free(event_class);
- lilv_node_free(control_class);
- lilv_world_free(world);
- return ret;
-}
-