Mercurial > hg > piper-vamp-js
changeset 2:4d6e60a7c80e
Some JSON fixes and a quick test program
author | Chris Cannam |
---|---|
date | Tue, 23 Aug 2016 12:04:49 +0100 |
parents | 7cfe736fd974 |
children | 6a792d8838c9 |
files | Makefile.example VamPipePluginLibrary.cpp quick-test.cpp |
diffstat | 3 files changed, 73 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/Makefile.example Tue Aug 23 11:17:01 2016 +0100 +++ b/Makefile.example Tue Aug 23 12:04:49 2016 +0100 @@ -1,19 +1,42 @@ -example.so: example.cpp VamPipeAdapter.h VamPipePluginLibrary.h VamPipePluginLibrary.cpp - c++ -std=c++11 -fPIC \ - -I../vamp-plugin-sdk -I.. -I../json \ - -Wall -Wextra -g \ - -shared -Wl,-Bsymbolic -Wl,-soname=example.so -Wl,-z,defs -Wl,--version-script=vampipe.map \ - example.cpp \ - VamPipePluginLibrary.cpp \ +ADAPTER_HEADERS := VamPipeAdapter.h VamPipePluginLibrary.h +ADAPTER_SOURCES := VamPipePluginLibrary.cpp + +PLUGIN_SOURCES := \ ../vamp-plugin-sdk/examples/ZeroCrossing.cpp \ ../vamp-plugin-sdk/examples/SpectralCentroid.cpp \ ../vamp-plugin-sdk/examples/PercussionOnsetDetector.cpp \ ../vamp-plugin-sdk/examples/FixedTempoEstimator.cpp \ ../vamp-plugin-sdk/examples/AmplitudeFollower.cpp \ - ../vamp-plugin-sdk/examples/PowerSpectrum.cpp \ - ../json/json11/json11.cpp \ + ../vamp-plugin-sdk/examples/PowerSpectrum.cpp + +OTHER_SOURCES := \ + ../json/json11/json11.cpp + +SDK_LIBS := \ ../vamp-plugin-sdk/libvamp-hostsdk.a \ - ../vamp-plugin-sdk/libvamp-sdk.a \ - -o example.so + ../vamp-plugin-sdk/libvamp-sdk.a +EXAMPLE_EXT := .so +EXAMPLE := example$(EXAMPLE_EXT) +EXAMPLE_SOURCE := example.cpp +EXAMPLE_SOURCES := $(EXAMPLE_SOURCE) $(ADAPTER_SOURCES) $(PLUGIN_SOURCES) $(OTHER_SOURCES) +EXAMPLE_LDFLAGS := -shared -Wl,-Bsymbolic -Wl,-soname=example.so -Wl,-z,defs -Wl,--version-script=vampipe.map + +TEST := quick-test +TEST_SOURCE := quick-test.cpp +TEST_LDFLAGS := -ldl + +CXXFLAGS := -std=c++11 -fPIC -Wall -Wextra -g +INCPATH := -I../vamp-plugin-sdk -I.. -I../json + +all: $(EXAMPLE) $(TEST) + ./$(TEST) + +$(EXAMPLE): $(EXAMPLE_SOURCES) $(ADAPTER_HEADERS) $(SDK_LIBS) + $(CXX) $(CXXFLAGS) $(INCPATH) -o $(EXAMPLE) \ + $(EXAMPLE_SOURCES) $(SDK_LIBS) $(EXAMPLE_LDFLAGS) + +$(TEST): $(TEST_SOURCE) + $(CXX) $(CXXFLAGS) -o $(TEST) $(TEST_SOURCE) $(TEST_LDFLAGS) +
--- a/VamPipePluginLibrary.cpp Tue Aug 23 11:17:01 2016 +0100 +++ b/VamPipePluginLibrary.cpp Tue Aug 23 12:04:49 2016 +0100 @@ -58,7 +58,7 @@ if (!j["type"].is_string()) { throw VampJson::Failure("string expected for type field"); } - if (!j["content"].is_object()) { + if (!j["content"].is_null() && !j["content"].is_object()) { throw VampJson::Failure("object expected for content field"); } return j;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/quick-test.cpp Tue Aug 23 12:04:49 2016 +0100 @@ -0,0 +1,38 @@ + +#include <iostream> +#include <dlfcn.h> + +using namespace std; + +int main(int argc, char **argv) +{ + string example = "./example.so"; + + void *lib = dlopen(example.c_str(), RTLD_LAZY | RTLD_LOCAL); + if (!lib) { + cerr << "failed to open " + example + ": " << dlerror() << endl; + return 1; + } + + typedef const char *(*RequestFn)(const char *); + RequestFn reqFn = (RequestFn)dlsym(lib, "vampipeRequestJson"); + if (!reqFn) { + cerr << "failed to find request function in " + + example + ": " << dlerror() << endl; + return 1; + } + + typedef void (*FreeFn)(const char *); + FreeFn freeFn = (FreeFn)dlsym(lib, "vampipeFreeJson"); + if (!freeFn) { + cerr << "failed to find free function in " + + example + ": " << dlerror() << endl; + return 1; + } + + string listRequest = "{\"type\": \"list\"}"; + const char *listResponse = reqFn(listRequest.c_str()); + cout << listResponse << endl; + freeFn(listResponse); +} +