From 08125ac98950650cd7587b8bbc3817b449cb6493 Mon Sep 17 00:00:00 2001 From: nmset Date: Sun, 17 Dec 2017 17:43:17 +0100 Subject: [PATCH] Add files via upload --- DBusMprisProxy.cpp | 99 +++ DBusMprisProxy.h | 68 ++ DBusPODProxy.cpp | 93 +++ DBusPODProxy.h | 50 ++ Makefile | 128 +++ README.md | 5 + globals.h | 28 + main.cpp | 133 ++++ mpris_proxy.hpp | 730 ++++++++++++++++++ mpris_proxy.xml | 107 +++ nbproject/Makefile-Debug.mk | 95 +++ nbproject/Makefile-Release.mk | 95 +++ nbproject/Makefile-impl.mk | 133 ++++ nbproject/Makefile-variables.mk | 35 + nbproject/Package-Debug.bash | 76 ++ nbproject/Package-Release.bash | 76 ++ nbproject/configurations.xml | 138 ++++ nbproject/private/Makefile-variables.mk | 7 + .../private/c_standard_headers_indexer.c | 75 ++ nbproject/private/configurations.xml | 73 ++ .../private/cpp_standard_headers_indexer.cpp | 135 ++++ nbproject/private/launcher.properties | 42 + nbproject/private/private.xml | 14 + nbproject/project.xml | 31 + pod_proxy.hpp | 62 ++ pod_proxy.xml | 12 + 26 files changed, 2540 insertions(+) create mode 100644 DBusMprisProxy.cpp create mode 100644 DBusMprisProxy.h create mode 100644 DBusPODProxy.cpp create mode 100644 DBusPODProxy.h create mode 100644 Makefile create mode 100644 README.md create mode 100644 globals.h create mode 100644 main.cpp create mode 100644 mpris_proxy.hpp create mode 100644 mpris_proxy.xml create mode 100644 nbproject/Makefile-Debug.mk create mode 100644 nbproject/Makefile-Release.mk create mode 100644 nbproject/Makefile-impl.mk create mode 100644 nbproject/Makefile-variables.mk create mode 100644 nbproject/Package-Debug.bash create mode 100644 nbproject/Package-Release.bash create mode 100644 nbproject/configurations.xml create mode 100644 nbproject/private/Makefile-variables.mk create mode 100644 nbproject/private/c_standard_headers_indexer.c create mode 100644 nbproject/private/configurations.xml create mode 100644 nbproject/private/cpp_standard_headers_indexer.cpp create mode 100644 nbproject/private/launcher.properties create mode 100644 nbproject/private/private.xml create mode 100644 nbproject/project.xml create mode 100644 pod_proxy.hpp create mode 100644 pod_proxy.xml diff --git a/DBusMprisProxy.cpp b/DBusMprisProxy.cpp new file mode 100644 index 0000000..0540aed --- /dev/null +++ b/DBusMprisProxy.cpp @@ -0,0 +1,99 @@ + +/* + * File: DBusMprisProxy.cpp + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 22:23 + */ + +#include "DBusMprisProxy.h" +#include "globals.h" +#include +#include +#include +using namespace std; + +#define FFR_PAUSE 200 + +bool DBusMprisProxy::m_break = true; +extern uint g_autorewind; + +/** + * Communicates over DBus to an MPRIS compliant media player. + * @param connection + * @param service + */ +DBusMprisProxy::DBusMprisProxy(DBus::Connection &connection, const char * service) +: DBus::ObjectProxy(connection, "/org/mpris/MediaPlayer2", service) +{ +} + +DBusMprisProxy::~DBusMprisProxy() +{ +} + +void DBusMprisProxy::FastForward(const int& step) +{ + // Let the running thread die + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE + 1)); + m_break = false; + thread t(DoFastForward, this, step); + t.detach(); +} + +void DBusMprisProxy::Rewind(const int& step) +{ + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE + 1)); + m_break = false; + thread t(DoRewind, this, step); + t.detach(); +} + +void DBusMprisProxy::Reset() +{ + m_break = true; +} + +int DBusMprisProxy::DoFastForward(DBusMprisProxy * obj, const int& step) +{ + try + { + while (!m_break) + { + obj->Seek(step); // 1 sec = 1000000 + // https://stackoverflow.com/questions/4184468/sleep-for-milliseconds + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE)); + } + } + catch (DBus::Error e) + { + cout << e.message() << _NL_ << e.name() << endl; + return 1; // ??? + } + return 0; // ??? +} + +int DBusMprisProxy::DoRewind(DBusMprisProxy* obj, const int& step) +{ + try + { + while (!m_break) + { + obj->Seek(-1 * step); + this_thread::sleep_for(chrono::milliseconds(FFR_PAUSE)); + } + } + catch (DBus::Error e) + { + cout << e.message() << _NL_ << e.name() << endl; + return 1; // ??? + } + return 0; // ??? +} + +void DBusMprisProxy::AutoRewind() +{ + Seek((int64_t) g_autorewind * 1000 * -1); +} + diff --git a/DBusMprisProxy.h b/DBusMprisProxy.h new file mode 100644 index 0000000..619a645 --- /dev/null +++ b/DBusMprisProxy.h @@ -0,0 +1,68 @@ +/* + * File: DBusMprisProxy.h + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 22:23 + */ + +#ifndef DBUSMPRISPROXY_H +#define DBUSMPRISPROXY_H + +#include "mpris_proxy.hpp" + +#define FFR_STEP 5000000 // Fast forward and rewind by 5 secs +#define FFR_STEP_QUICK 50000000 // 50 secs + +/** + * Sends DBus commands to an MPRIS compliant media player. + * @param connection + * @param service + */ + +class DBusMprisProxy : public org::mpris::MediaPlayer2::Player_proxy, +public DBus::IntrospectableProxy, +public DBus::ObjectProxy +{ +public: + /** + * + * @param connection + * @param service : pedal.event, from application POD7. + */ + DBusMprisProxy(DBus::Connection &connection, const char * service); + virtual ~DBusMprisProxy(); + + /** + * Advances the media position by step milliseconds, + * pausing 200 milliseconds between steps. + * Runs in a detached thread. + * @param step + */ + void FastForward(const int& step); + /** + * Moves back the media position by step milliseconds, + * pausing 200 milliseconds between steps. + * Runs in a detached thread. + */ + void Rewind(const int& step); + /** + * Sets a flag that allows running threads to end. + */ + void Reset(); + /** + * Rewinds specified milliseconds before starting playback. + * An unavoidable feature for transcriptionists. + */ + void AutoRewind(); +private: + /** + * Flag controlling thread lifetime. + */ + static bool m_break; + static int DoFastForward(DBusMprisProxy * obj, const int& step); + static int DoRewind(DBusMprisProxy * obj, const int& step); +}; + +#endif /* DBUSMPRISPROXY_H */ + diff --git a/DBusPODProxy.cpp b/DBusPODProxy.cpp new file mode 100644 index 0000000..5356fe1 --- /dev/null +++ b/DBusPODProxy.cpp @@ -0,0 +1,93 @@ +/* + * File: DBusPODProxy.cpp + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 18:51 + */ + +#include "DBusPODProxy.h" +#include "globals.h" +#include +#include +using namespace std; + +#include "DBusMprisProxy.h" + +DBusMprisProxy * g_MprisProxy; +extern string g_backend; +extern uint g_rewind; +extern uint g_fastforward; +extern uint g_play; +extern bool g_verbose; + +/** + * Controls playback of an MPRIS compliant media player. + * @param connection + * @param service + */ +DBusPODProxy::DBusPODProxy(DBus::Connection &connection, const char * service) +: DBus::ObjectProxy(connection, "/pedal/event", service) +{ + thread t(Entry); + t.detach(); + string mpris_service("org.mpris.MediaPlayer2."); + mpris_service += g_backend; + g_MprisProxy = new DBusMprisProxy(connection, mpris_service.c_str()); +} + +DBusPODProxy::~DBusPODProxy() +{ + DBus::default_dispatcher->leave(); + delete g_MprisProxy; +} + +void DBusPODProxy::OnPedalEvent(const int32_t& code) +{ + if (g_verbose) + cout << code << endl; + try + { + // Stop evenything whenever a pedal whenever occurs + g_MprisProxy->Reset(); + g_MprisProxy->Pause(); + // switch case does not compile here + if ((uint) code == g_rewind) + { + g_MprisProxy->Rewind(FFR_STEP); + } + else if ((uint) code == g_rewind + g_play) + { + g_MprisProxy->Rewind(FFR_STEP_QUICK); + } + else if ((uint) code == g_fastforward) + { + g_MprisProxy->FastForward(FFR_STEP); + } + else if ((uint) code == g_fastforward + g_play) + { + g_MprisProxy->FastForward(FFR_STEP_QUICK); + } + else if ((uint) code == g_play) + { + g_MprisProxy->AutoRewind(); + g_MprisProxy->Play(); + } + else + { + g_MprisProxy->Reset(); + g_MprisProxy->Pause(); + } + + } + catch (DBus::Error e) + { + cout << e.message() << _NL_ << e.name() << endl; + } +} + +int DBusPODProxy::Entry() +{ + DBus::default_dispatcher->enter(); // IS BLOCKING + return 0; +} diff --git a/DBusPODProxy.h b/DBusPODProxy.h new file mode 100644 index 0000000..72f4be7 --- /dev/null +++ b/DBusPODProxy.h @@ -0,0 +1,50 @@ +/* + * File: DBusPODProxy.h + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 18:51 + */ + +#ifndef DBUSPODPROXY_H +#define DBUSPODPROXY_H + +#include "pod_proxy.hpp" + +/** + * Listen to DBus pedal events from application POD7. + * It creates an DBus proxy for an MPRIS compliant media player + * that will react to pedal events. + */ + +class DBusPODProxy : public pedal::event_proxy, +public DBus::IntrospectableProxy, +public DBus::ObjectProxy +{ +public: + /** + * + * @param connection + * @param service : pedal.event, from application POD7. + */ + DBusPODProxy(DBus::Connection &connection, const char * service); + virtual ~DBusPODProxy(); + + /** + * + * @param code : sent by a pedal event + */ + void OnPedalEvent(const int32_t& code) override; + + /** + * Enters the DBus loop in a detached thread + * @return + */ + static int Entry(); + +private: + +}; + +#endif /* DBUSPODPROXY_H */ + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..05de621 --- /dev/null +++ b/Makefile @@ -0,0 +1,128 @@ +# +# There exist several targets which are by default empty and which can be +# used for execution of your targets. These targets are usually executed +# before and after some main targets. They are: +# +# .build-pre: called before 'build' target +# .build-post: called after 'build' target +# .clean-pre: called before 'clean' target +# .clean-post: called after 'clean' target +# .clobber-pre: called before 'clobber' target +# .clobber-post: called after 'clobber' target +# .all-pre: called before 'all' target +# .all-post: called after 'all' target +# .help-pre: called before 'help' target +# .help-post: called after 'help' target +# +# Targets beginning with '.' are not intended to be called on their own. +# +# Main targets can be executed directly, and they are: +# +# build build a specific configuration +# clean remove built files from a configuration +# clobber remove all built files +# all build all configurations +# help print help mesage +# +# Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and +# .help-impl are implemented in nbproject/makefile-impl.mk. +# +# Available make variables: +# +# CND_BASEDIR base directory for relative paths +# CND_DISTDIR default top distribution directory (build artifacts) +# CND_BUILDDIR default top build directory (object files, ...) +# CONF name of current configuration +# CND_PLATFORM_${CONF} platform name (current configuration) +# CND_ARTIFACT_DIR_${CONF} directory of build artifact (current configuration) +# CND_ARTIFACT_NAME_${CONF} name of build artifact (current configuration) +# CND_ARTIFACT_PATH_${CONF} path to build artifact (current configuration) +# CND_PACKAGE_DIR_${CONF} directory of package (current configuration) +# CND_PACKAGE_NAME_${CONF} name of package (current configuration) +# CND_PACKAGE_PATH_${CONF} path to package (current configuration) +# +# NOCDDL + + +# Environment +MKDIR=mkdir +CP=cp +CCADMIN=CCadmin + + +# build +build: .build-post + +.build-pre: +# Add your pre 'build' code here... + +.build-post: .build-impl +# Add your post 'build' code here... + + +# clean +clean: .clean-post + +.clean-pre: +# Add your pre 'clean' code here... + +.clean-post: .clean-impl +# Add your post 'clean' code here... + + +# clobber +clobber: .clobber-post + +.clobber-pre: +# Add your pre 'clobber' code here... + +.clobber-post: .clobber-impl +# Add your post 'clobber' code here... + + +# all +all: .all-post + +.all-pre: +# Add your pre 'all' code here... + +.all-post: .all-impl +# Add your post 'all' code here... + + +# build tests +build-tests: .build-tests-post + +.build-tests-pre: +# Add your pre 'build-tests' code here... + +.build-tests-post: .build-tests-impl +# Add your post 'build-tests' code here... + + +# run tests +test: .test-post + +.test-pre: build-tests +# Add your pre 'test' code here... + +.test-post: .test-impl +# Add your post 'test' code here... + + +# help +help: .help-post + +.help-pre: +# Add your pre 'help' code here... + +.help-post: .help-impl +# Add your post 'help' code here... + + + +# include project implementation makefile +include nbproject/Makefile-impl.mk + +# include project make variables +include nbproject/Makefile-variables.mk diff --git a/README.md b/README.md new file mode 100644 index 0000000..743754f --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +PMP7 is a small utility that listens to session DBus signals sent by POD7 utility to control an MPRIS compliant media player by a foot pedal. + +Each pedal event can be assigned a unique action on the command line. A backend media player must be specified. + +Work done as a hobbyist with NetBeans, targeting GNU/Linux OS. diff --git a/globals.h b/globals.h new file mode 100644 index 0000000..2bf08fc --- /dev/null +++ b/globals.h @@ -0,0 +1,28 @@ +/* + * File: globals.h + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 20:27 + */ + +#ifndef GLOBALS_H +#define GLOBALS_H + +#define _APPNAME_ "PMP7" // Pedal control for Media Player +#define _APP_DESCRIPTION_ "Controls media playback by foot pedal" +#define _VERSION_ "1" +#define _AUTHOR_ "SET - nmset@netcourrier.com" +#define _ABOUT_ string(_APPNAME_) + string(" - version ") + string(_VERSION_) \ + + string(" - ") + string(_APP_DESCRIPTION_) + _DOT_ \ + + string("\nAuthor : ") + string(_AUTHOR_) \ + + string("\nLicense : GPL v2") + +#define _DOT_ "." +#define _SPACE_ " " +#define _COMMA_ "," +#define _COLON_ ":" +#define _NL_ "\n" + +#endif /* GLOBALS_H */ + diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..5b2bf02 --- /dev/null +++ b/main.cpp @@ -0,0 +1,133 @@ +/* + * File: main.cpp + * Author: SET - nmset@netcourrier.com + * License : GPL V2 + * + * Created on 10 décembre 2017, 16:24 + */ + +// Pedal controlled Media Player + +#include +#include +#include +#include +#include "globals.h" +#include "DBusPODProxy.h" + +using namespace std; +namespace po = boost::program_options; + +DBusPODProxy * g_pod7Proxy; +DBus::BusDispatcher g_dispatcher; +bool g_verbose = false; +string g_backend = ""; +uint g_play = 4; +uint g_fastforward = 2; +uint g_rewind = 1; +uint g_autorewind = 1500; + +void signalhandler(int sn) +{ + if (g_verbose) + cout << "Application signaled to exit." << endl; + delete g_pod7Proxy; + exit(0); +} + +bool ManageParams(int argc, char** argv) +{ + try + { + po::options_description desc(_ABOUT_); + desc.add_options() + ("help,h", "Print help messages.") + ("backend,b", po::value(&g_backend), "Media player : vlc, dragonplayer, xmms2...") + ("verbose,v", "Show some messages on stdout, namely, signaled pedal codes.") + ("play,p", po::value(&g_play), "Pedal code for - default : 4, unsigned.") + ("fastforward,f", po::value(&g_fastforward), "Pedal code for - default : 2, unsigned.") + ("rewind,r", po::value(&g_play), "Pedal code for - default : 1, unsigned.") + ("autorewind,a", po::value(&g_autorewind), "Automatically rewind for n milliseconds when playback stops - default : 1500, unsigned."); + + po::variables_map vm; + try + { + po::store(po::parse_command_line(argc, argv, desc), vm); + po::notify(vm); + if (vm.count("help")) + { + cout << desc << endl; + return false; + } + if (!vm.count("backend")) + { + cout << desc << endl; + return false; + } + if (g_rewind == g_play + || g_rewind == g_fastforward + || g_play == g_fastforward) + { + cout << "Declared pedal codes are inconsistent. A pedal code should identify a unique action." << endl; + return false; + } + if (vm.count("verbose")) + { + g_verbose = true; + } + } + catch (po::error& eb) + { + cerr << "Error : " << eb.what() << endl; + return false; + } + } + catch (exception& e) + { + cerr << "Error : " << e.what() << endl; + return false; + } + return true; +} + +bool StartPOD7Proxy() +{ + DBus::Connection bus = DBus::Connection::SessionBus(); + try + { + g_pod7Proxy = new DBusPODProxy(bus, "pedal.event"); + return true; + } + catch (DBus::Error e) + { + delete g_pod7Proxy; + cout << e.message() << _NL_ << e.name() << endl; + ; + } + return false; +} + +int main(int argc, char** argv) +{ + if (!ManageParams(argc, argv)) + return 0; + signal(SIGINT, signalhandler); + signal(SIGTERM, signalhandler); + DBus::_init_threading(); + DBus::default_dispatcher = &g_dispatcher; + if (!StartPOD7Proxy()) + { + cout << "Could not listen to pedal events." << endl; + return 0; + } + + // Any better way to do that ? + while (true) + sleep(84600); + return 0; +} + +/* + dbusxx-introspect /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.vlc + dbusxx-introspect /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.dragonplayer + */ \ No newline at end of file diff --git a/mpris_proxy.hpp b/mpris_proxy.hpp new file mode 100644 index 0000000..f1d8a3c --- /dev/null +++ b/mpris_proxy.hpp @@ -0,0 +1,730 @@ + +/* + * This file was automatically generated by dbusxx-xml2cpp; DO NOT EDIT! + */ + +#ifndef __dbusxx__mpris_proxy_hpp__PROXY_MARSHAL_H +#define __dbusxx__mpris_proxy_hpp__PROXY_MARSHAL_H + +#include +#include + +namespace org { +namespace mpris { + +class MediaPlayer2_proxy +: public ::DBus::InterfaceProxy +{ +public: + + MediaPlayer2_proxy() + : ::DBus::InterfaceProxy("org.mpris.MediaPlayer2") + { + } + +public: + + /* properties exported by this interface */ + const std::string Identity() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "Identity"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::string DesktopEntry() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "DesktopEntry"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::vector< std::string > SupportedMimeTypes() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "SupportedMimeTypes"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::vector< std::string > SupportedUriSchemes() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "SupportedUriSchemes"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool HasTrackList() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "HasTrackList"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanQuit() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "CanQuit"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanSetFullscreen() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "CanSetFullscreen"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool Fullscreen() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "Fullscreen"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Fullscreen( const bool & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "Fullscreen"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const bool CanRaise() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2"; + const std::string property_name = "CanRaise"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + void Quit() + { + ::DBus::CallMessage call; + call.member("Quit"); + ::DBus::Message ret = invoke_method (call); + } + + void Raise() + { + ::DBus::CallMessage call; + call.member("Raise"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ +}; + +} } +namespace org { +namespace mpris { +namespace MediaPlayer2 { + +class Player_proxy +: public ::DBus::InterfaceProxy +{ +public: + + Player_proxy() + : ::DBus::InterfaceProxy("org.mpris.MediaPlayer2.Player") + { + } + +public: + + /* properties exported by this interface */ + const std::map< std::string, ::DBus::Variant > Metadata() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Metadata"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::string PlaybackStatus() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "PlaybackStatus"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const std::string LoopStatus() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "LoopStatus"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void LoopStatus( const std::string & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "LoopStatus"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double Volume() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Volume"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Volume( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Volume"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double Shuffle() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Shuffle"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Shuffle( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Shuffle"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const int32_t Position() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Position"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const double Rate() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Rate"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void Rate( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "Rate"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double MinimumRate() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MinimumRate"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void MinimumRate( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MinimumRate"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const double MaximumRate() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MaximumRate"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + void MaximumRate( const double & input) { + ::DBus::CallMessage call ; + call.member("Set"); call.interface( "org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + ::DBus::Variant value; + ::DBus::MessageIter vi = value.writer (); + vi << input; + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "MaximumRate"; + wi << interface_name; + wi << property_name; + wi << value; + ::DBus::Message ret = this->invoke_method (call); + }; + const bool CanControl() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanControl"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanPlay() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanPlay"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanPause() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanPause"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanSeek() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.Player"; + const std::string property_name = "CanSeek"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + void Previous() + { + ::DBus::CallMessage call; + call.member("Previous"); + ::DBus::Message ret = invoke_method (call); + } + + void Next() + { + ::DBus::CallMessage call; + call.member("Next"); + ::DBus::Message ret = invoke_method (call); + } + + void Stop() + { + ::DBus::CallMessage call; + call.member("Stop"); + ::DBus::Message ret = invoke_method (call); + } + + void Play() + { + ::DBus::CallMessage call; + call.member("Play"); + ::DBus::Message ret = invoke_method (call); + } + + void Pause() + { + ::DBus::CallMessage call; + call.member("Pause"); + ::DBus::Message ret = invoke_method (call); + } + + void PlayPause() + { + ::DBus::CallMessage call; + call.member("PlayPause"); + ::DBus::Message ret = invoke_method (call); + } + + void Seek(const int64_t& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("Seek"); + ::DBus::Message ret = invoke_method (call); + } + + void OpenUri(const std::string& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("OpenUri"); + ::DBus::Message ret = invoke_method (call); + } + + void SetPosition(const ::DBus::Path& argin0, const int64_t& argin1) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + wi << argin1; + call.member("SetPosition"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ +}; + +} } } +namespace org { +namespace mpris { +namespace MediaPlayer2 { + +class TrackList_proxy +: public ::DBus::InterfaceProxy +{ +public: + + TrackList_proxy() + : ::DBus::InterfaceProxy("org.mpris.MediaPlayer2.TrackList") + { + connect_signal(TrackList_proxy, TrackListReplaced, _TrackListReplaced_stub); + connect_signal(TrackList_proxy, TrackAdded, _TrackAdded_stub); + connect_signal(TrackList_proxy, TrackRemoved, _TrackRemoved_stub); + connect_signal(TrackList_proxy, TrackMetadataChanged, _TrackMetadataChanged_stub); + } + +public: + + /* properties exported by this interface */ + const std::vector< ::DBus::Path > Tracks() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.TrackList"; + const std::string property_name = "Tracks"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; + const bool CanEditTracks() { + ::DBus::CallMessage call ; + call.member("Get"); call.interface("org.freedesktop.DBus.Properties"); + ::DBus::MessageIter wi = call.writer(); + const std::string interface_name = "org.mpris.MediaPlayer2.TrackList"; + const std::string property_name = "CanEditTracks"; + wi << interface_name; + wi << property_name; + ::DBus::Message ret = this->invoke_method (call); + ::DBus::MessageIter ri = ret.reader (); + ::DBus::Variant argout; + ri >> argout; + return argout; + }; +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + std::vector< std::map< std::string, ::DBus::Variant > > GetTracksMetadata(const std::vector< ::DBus::Path >& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("GetTracksMetadata"); + ::DBus::Message ret = invoke_method (call); + ::DBus::MessageIter ri = ret.reader(); + + std::vector< std::map< std::string, ::DBus::Variant > > argout; + ri >> argout; + return argout; + } + + void AddTrack(const std::string& argin0, const ::DBus::Path& argin1, const bool& argin2) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + wi << argin1; + wi << argin2; + call.member("AddTrack"); + ::DBus::Message ret = invoke_method (call); + } + + void RemoveTrack(const ::DBus::Path& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("RemoveTrack"); + ::DBus::Message ret = invoke_method (call); + } + + void GoTo(const ::DBus::Path& argin0) + { + ::DBus::CallMessage call; + ::DBus::MessageIter wi = call.writer(); + + wi << argin0; + call.member("GoTo"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + virtual void TrackListReplaced(const std::vector< ::DBus::Path >& argin0, const ::DBus::Path& argin1) = 0; + virtual void TrackAdded(const std::map< std::string, ::DBus::Variant >& argin0, const ::DBus::Path& argin1) = 0; + virtual void TrackRemoved(const ::DBus::Path& argin0) = 0; + virtual void TrackMetadataChanged(const ::DBus::Path& argin0, const std::map< std::string, ::DBus::Variant >& argin1) = 0; + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ + void _TrackListReplaced_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + std::vector< ::DBus::Path > arg0; + ri >> arg0; + ::DBus::Path arg1; + ri >> arg1; + TrackListReplaced(arg0, arg1); + } + void _TrackAdded_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + std::map< std::string, ::DBus::Variant > arg0; + ri >> arg0; + ::DBus::Path arg1; + ri >> arg1; + TrackAdded(arg0, arg1); + } + void _TrackRemoved_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + ::DBus::Path arg0; + ri >> arg0; + TrackRemoved(arg0); + } + void _TrackMetadataChanged_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + ::DBus::Path arg0; + ri >> arg0; + std::map< std::string, ::DBus::Variant > arg1; + ri >> arg1; + TrackMetadataChanged(arg0, arg1); + } +}; + +} } } +#endif //__dbusxx__mpris_proxy_hpp__PROXY_MARSHAL_H diff --git a/mpris_proxy.xml b/mpris_proxy.xml new file mode 100644 index 0000000..b578b1c --- /dev/null +++ b/mpris_proxy.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/Makefile-Debug.mk b/nbproject/Makefile-Debug.mk new file mode 100644 index 0000000..af10b6c --- /dev/null +++ b/nbproject/Makefile-Debug.mk @@ -0,0 +1,95 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/DBusMprisProxy.o \ + ${OBJECTDIR}/DBusPODProxy.o \ + ${OBJECTDIR}/main.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-ldbus-c++-1 -lboost_program_options + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 ${OBJECTFILES} ${LDLIBSOPTIONS} -pthread + +${OBJECTDIR}/DBusMprisProxy.o: DBusMprisProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusMprisProxy.o DBusMprisProxy.cpp + +${OBJECTDIR}/DBusPODProxy.o: DBusPODProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusPODProxy.o DBusPODProxy.cpp + +${OBJECTDIR}/main.o: main.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -g -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-Release.mk b/nbproject/Makefile-Release.mk new file mode 100644 index 0000000..448f0a3 --- /dev/null +++ b/nbproject/Makefile-Release.mk @@ -0,0 +1,95 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a -pre and a -post target defined where you can add customized code. +# +# This makefile implements configuration specific macros and targets. + + +# Environment +MKDIR=mkdir +CP=cp +GREP=grep +NM=nm +CCADMIN=CCadmin +RANLIB=ranlib +CC=gcc +CCC=g++ +CXX=g++ +FC=gfortran +AS=as + +# Macros +CND_PLATFORM=GNU-Linux +CND_DLIB_EXT=so +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build + +# Include project Makefile +include Makefile + +# Object Directory +OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM} + +# Object Files +OBJECTFILES= \ + ${OBJECTDIR}/DBusMprisProxy.o \ + ${OBJECTDIR}/DBusPODProxy.o \ + ${OBJECTDIR}/main.o + + +# C Compiler Flags +CFLAGS= + +# CC Compiler Flags +CCFLAGS= +CXXFLAGS= + +# Fortran Compiler Flags +FFLAGS= + +# Assembler Flags +ASFLAGS= + +# Link Libraries and Options +LDLIBSOPTIONS=-ldbus-c++-1 -lboost_program_options + +# Build Targets +.build-conf: ${BUILD_SUBPROJECTS} + "${MAKE}" -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 + +${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7: ${OBJECTFILES} + ${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM} + ${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 ${OBJECTFILES} ${LDLIBSOPTIONS} -pthread + +${OBJECTDIR}/DBusMprisProxy.o: DBusMprisProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusMprisProxy.o DBusMprisProxy.cpp + +${OBJECTDIR}/DBusPODProxy.o: DBusPODProxy.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/DBusPODProxy.o DBusPODProxy.cpp + +${OBJECTDIR}/main.o: main.cpp + ${MKDIR} -p ${OBJECTDIR} + ${RM} "$@.d" + $(COMPILE.cc) -O2 -I/usr/include/dbus-c++-1 -MMD -MP -MF "$@.d" -o ${OBJECTDIR}/main.o main.cpp + +# Subprojects +.build-subprojects: + +# Clean Targets +.clean-conf: ${CLEAN_SUBPROJECTS} + ${RM} -r ${CND_BUILDDIR}/${CND_CONF} + +# Subprojects +.clean-subprojects: + +# Enable dependency checking +.dep.inc: .depcheck-impl + +include .dep.inc diff --git a/nbproject/Makefile-impl.mk b/nbproject/Makefile-impl.mk new file mode 100644 index 0000000..86de2ec --- /dev/null +++ b/nbproject/Makefile-impl.mk @@ -0,0 +1,133 @@ +# +# Generated Makefile - do not edit! +# +# Edit the Makefile in the project folder instead (../Makefile). Each target +# has a pre- and a post- target defined where you can add customization code. +# +# This makefile implements macros and targets common to all configurations. +# +# NOCDDL + + +# Building and Cleaning subprojects are done by default, but can be controlled with the SUB +# macro. If SUB=no, subprojects will not be built or cleaned. The following macro +# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf +# and .clean-reqprojects-conf unless SUB has the value 'no' +SUB_no=NO +SUBPROJECTS=${SUB_${SUB}} +BUILD_SUBPROJECTS_=.build-subprojects +BUILD_SUBPROJECTS_NO= +BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}} +CLEAN_SUBPROJECTS_=.clean-subprojects +CLEAN_SUBPROJECTS_NO= +CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}} + + +# Project Name +PROJECTNAME=PMP7 + +# Active Configuration +DEFAULTCONF=Debug +CONF=${DEFAULTCONF} + +# All Configurations +ALLCONFS=Debug Release + + +# build +.build-impl: .build-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf + + +# clean +.clean-impl: .clean-pre .validate-impl .depcheck-impl + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf + + +# clobber +.clobber-impl: .clobber-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \ + done + +# all +.all-impl: .all-pre .depcheck-impl + @#echo "=> Running $@..." + for CONF in ${ALLCONFS}; \ + do \ + "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \ + done + +# build tests +.build-tests-impl: .build-impl .build-tests-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf + +# run tests +.test-impl: .build-tests-impl .test-pre + @#echo "=> Running $@... Configuration=$(CONF)" + "${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf + +# dependency checking support +.depcheck-impl: + @echo "# This code depends on make tool being used" >.dep.inc + @if [ -n "${MAKE_VERSION}" ]; then \ + echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES} \$${TESTOBJECTFILES}))" >>.dep.inc; \ + echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \ + echo "include \$${DEPFILES}" >>.dep.inc; \ + echo "endif" >>.dep.inc; \ + else \ + echo ".KEEP_STATE:" >>.dep.inc; \ + echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \ + fi + +# configuration validation +.validate-impl: + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + echo ""; \ + echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \ + echo "See 'make help' for details."; \ + echo "Current directory: " `pwd`; \ + echo ""; \ + fi + @if [ ! -f nbproject/Makefile-${CONF}.mk ]; \ + then \ + exit 1; \ + fi + + +# help +.help-impl: .help-pre + @echo "This makefile supports the following configurations:" + @echo " ${ALLCONFS}" + @echo "" + @echo "and the following targets:" + @echo " build (default target)" + @echo " clean" + @echo " clobber" + @echo " all" + @echo " help" + @echo "" + @echo "Makefile Usage:" + @echo " make [CONF=] [SUB=no] build" + @echo " make [CONF=] [SUB=no] clean" + @echo " make [SUB=no] clobber" + @echo " make [SUB=no] all" + @echo " make help" + @echo "" + @echo "Target 'build' will build a specific configuration and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no'," + @echo " also clean subprojects." + @echo "Target 'clobber' will remove all built files from all configurations and," + @echo " unless 'SUB=no', also from subprojects." + @echo "Target 'all' will will build all configurations and, unless 'SUB=no'," + @echo " also build subprojects." + @echo "Target 'help' prints this message." + @echo "" + diff --git a/nbproject/Makefile-variables.mk b/nbproject/Makefile-variables.mk new file mode 100644 index 0000000..01944a7 --- /dev/null +++ b/nbproject/Makefile-variables.mk @@ -0,0 +1,35 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +CND_BASEDIR=`pwd` +CND_BUILDDIR=build +CND_DISTDIR=dist +# Debug configuration +CND_PLATFORM_Debug=GNU-Linux +CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux +CND_ARTIFACT_NAME_Debug=pmp7 +CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux/pmp7 +CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux/package +CND_PACKAGE_NAME_Debug=pmp7.tar +CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux/package/pmp7.tar +# Release configuration +CND_PLATFORM_Release=GNU-Linux +CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux +CND_ARTIFACT_NAME_Release=pmp7 +CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux/pmp7 +CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux/package +CND_PACKAGE_NAME_Release=pmp7.tar +CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux/package/pmp7.tar +# +# include compiler specific variables +# +# dmake command +ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \ + (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk) +# +# gmake command +.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)) +# +include nbproject/private/Makefile-variables.mk diff --git a/nbproject/Package-Debug.bash b/nbproject/Package-Debug.bash new file mode 100644 index 0000000..d85bcfe --- /dev/null +++ b/nbproject/Package-Debug.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Debug +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 +OUTPUT_BASENAME=pmp7 +PACKAGE_TOP_DIR=pmp7/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/pmp7/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/Package-Release.bash b/nbproject/Package-Release.bash new file mode 100644 index 0000000..639db23 --- /dev/null +++ b/nbproject/Package-Release.bash @@ -0,0 +1,76 @@ +#!/bin/bash -x + +# +# Generated - do not edit! +# + +# Macros +TOP=`pwd` +CND_PLATFORM=GNU-Linux +CND_CONF=Release +CND_DISTDIR=dist +CND_BUILDDIR=build +CND_DLIB_EXT=so +NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging +TMPDIRNAME=tmp-packaging +OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/pmp7 +OUTPUT_BASENAME=pmp7 +PACKAGE_TOP_DIR=pmp7/ + +# Functions +function checkReturnCode +{ + rc=$? + if [ $rc != 0 ] + then + exit $rc + fi +} +function makeDirectory +# $1 directory path +# $2 permission (optional) +{ + mkdir -p "$1" + checkReturnCode + if [ "$2" != "" ] + then + chmod $2 "$1" + checkReturnCode + fi +} +function copyFileToTmpDir +# $1 from-file path +# $2 to-file path +# $3 permission +{ + cp "$1" "$2" + checkReturnCode + if [ "$3" != "" ] + then + chmod $3 "$2" + checkReturnCode + fi +} + +# Setup +cd "${TOP}" +mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package +rm -rf ${NBTMPDIR} +mkdir -p ${NBTMPDIR} + +# Copy files and create directories and links +cd "${TOP}" +makeDirectory "${NBTMPDIR}/pmp7/bin" +copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755 + + +# Generate tar file +cd "${TOP}" +rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar +cd ${NBTMPDIR} +tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/pmp7.tar * +checkReturnCode + +# Cleanup +cd "${TOP}" +rm -rf ${NBTMPDIR} diff --git a/nbproject/configurations.xml b/nbproject/configurations.xml new file mode 100644 index 0000000..258f60e --- /dev/null +++ b/nbproject/configurations.xml @@ -0,0 +1,138 @@ + + + + + DBusMprisProxy.h + DBusPODProxy.h + globals.h + mpris_proxy.hpp + pod_proxy.hpp + + + mpris_proxy.xml + pod_proxy.xml + + + DBusMprisProxy.cpp + DBusPODProxy.cpp + main.cpp + + + + + Makefile + + README.md + + Makefile + + + + default + true + false + + + + + /usr/include/dbus-c++-1 + + + + + dbus-c++-1 + boost_program_options + + -pthread + + + + + + + + + + + + + + + + + + + + + + + + + + + + default + true + false + + + + 5 + + + 5 + + /usr/include/dbus-c++-1 + + + + 5 + + + 5 + + + + dbus-c++-1 + boost_program_options + + -pthread + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/private/Makefile-variables.mk b/nbproject/private/Makefile-variables.mk new file mode 100644 index 0000000..a64183e --- /dev/null +++ b/nbproject/private/Makefile-variables.mk @@ -0,0 +1,7 @@ +# +# Generated - do not edit! +# +# NOCDDL +# +# Debug configuration +# Release configuration diff --git a/nbproject/private/c_standard_headers_indexer.c b/nbproject/private/c_standard_headers_indexer.c new file mode 100644 index 0000000..c2548d2 --- /dev/null +++ b/nbproject/private/c_standard_headers_indexer.c @@ -0,0 +1,75 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/c/header + +#include // Conditionally compiled macro that compares its argument to zero +#include // Functions to determine the type contained in character data +#include // Macros reporting error conditions +#include // Limits of float types +#include // Sizes of basic types +#include // Localization utilities +#include // Common mathematics functions +#include // Nonlocal jumps +#include // Signal handling +#include // Variable arguments +#include // Common macro definitions +#include // Input/output +#include // String handling +#include // General utilities: memory management, program utilities, string conversions, random numbers +#include // Time/date utilities +#include // (since C95) Alternative operator spellings +#include // (since C95) Extended multibyte and wide character utilities +#include // (since C95) Wide character classification and mapping utilities +#ifdef _STDC_C99 +#include // (since C99) Complex number arithmetic +#include // (since C99) Floating-point environment +#include // (since C99) Format conversion of integer types +#include // (since C99) Boolean type +#include // (since C99) Fixed-width integer types +#include // (since C99) Type-generic math (macros wrapping math.h and complex.h) +#endif +#ifdef _STDC_C11 +#include // (since C11) alignas and alignof convenience macros +#include // (since C11) Atomic types +#include // (since C11) noreturn convenience macros +#include // (since C11) Thread library +#include // (since C11) UTF-16 and UTF-32 character utilities +#endif diff --git a/nbproject/private/configurations.xml b/nbproject/private/configurations.xml new file mode 100644 index 0000000..32b7898 --- /dev/null +++ b/nbproject/private/configurations.xml @@ -0,0 +1,73 @@ + + + Makefile + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + "${OUTPUT_PATH}" -b vlc + + "${OUTPUT_PATH}" -b vlc + + true + 0 + 0 + + + + + + + localhost + 2 + + + + + + + + + + + + + + + gdb + + + + "${OUTPUT_PATH}" + + "${OUTPUT_PATH}" + + true + 0 + 0 + + + + + + diff --git a/nbproject/private/cpp_standard_headers_indexer.cpp b/nbproject/private/cpp_standard_headers_indexer.cpp new file mode 100644 index 0000000..04f6fa6 --- /dev/null +++ b/nbproject/private/cpp_standard_headers_indexer.cpp @@ -0,0 +1,135 @@ +/* + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + * + * Copyright (c) 2016 Oracle and/or its affiliates. All rights reserved. + * + * Oracle and Java are registered trademarks of Oracle and/or its affiliates. + * Other names may be trademarks of their respective owners. + * + * The contents of this file are subject to the terms of either the GNU + * General Public License Version 2 only ("GPL") or the Common + * Development and Distribution License("CDDL") (collectively, the + * "License"). You may not use this file except in compliance with the + * License. You can obtain a copy of the License at + * http://www.netbeans.org/cddl-gplv2.html + * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the + * specific language governing permissions and limitations under the + * License. When distributing the software, include this License Header + * Notice in each file and include the License file at + * nbbuild/licenses/CDDL-GPL-2-CP. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the GPL Version 2 section of the License file that + * accompanied this code. If applicable, add the following below the + * License Header, with the fields enclosed by brackets [] replaced by + * your own identifying information: + * "Portions Copyrighted [year] [name of copyright owner]" + * + * If you wish your version of this file to be governed by only the CDDL + * or only the GPL Version 2, indicate your decision by adding + * "[Contributor] elects to include this software in this distribution + * under the [CDDL or GPL Version 2] license." If you do not indicate a + * single choice of license, a recipient has the option to distribute + * your version of this file under either the CDDL, the GPL Version 2 or + * to extend the choice of license to its licensees as provided above. + * However, if you add GPL Version 2 code and therefore, elected the GPL + * Version 2 license, then the option applies only if the new code is + * made subject to such option by the copyright holder. + * + * Contributor(s): + */ + +// List of standard headers was taken in http://en.cppreference.com/w/cpp/header + +#include // General purpose utilities: program control, dynamic memory allocation, random numbers, sort and search +#include // Functions and macro constants for signal management +#include // Macro (and function) that saves (and jumps) to an execution context +#include // Handling of variable length argument lists +#include // Runtime type information utilities +#include // std::bitset class template +#include // Function objects, designed for use with the standard algorithms +#include // Various utility components +#include // C-style time/date utilites +#include // typedefs for types such as size_t, NULL and others +#include // Low-level memory management utilities +#include // Higher level memory management utilities +#include // limits of integral types +#include // limits of float types +#include // standardized way to query properties of arithmetic types +#include // Exception handling utilities +#include // Standard exception objects +#include // Conditionally compiled macro that compares its argument to zero +#include // Macro containing the last error number +#include // functions to determine the type contained in character data +#include // functions for determining the type of wide character data +#include // various narrow character string handling functions +#include // various wide and multibyte string handling functions +#include // std::basic_string class template +#include // std::vector container +#include // std::deque container +#include // std::list container +#include // std::set and std::multiset associative containers +#include // std::map and std::multimap associative containers +#include // std::stack container adaptor +#include // std::queue and std::priority_queue container adaptors +#include // Algorithms that operate on containers +#include // Container iterators +#include // Common mathematics functions +#include // Complex number type +#include // Class for representing and manipulating arrays of values +#include // Numeric operations on values in containers +#include // forward declarations of all classes in the input/output library +#include // std::ios_base class, std::basic_ios class template and several typedefs +#include // std::basic_istream class template and several typedefs +#include // std::basic_ostream, std::basic_iostream class templates and several typedefs +#include // several standard stream objects +#include // std::basic_fstream, std::basic_ifstream, std::basic_ofstream class templates and several typedefs +#include // std::basic_stringstream, std::basic_istringstream, std::basic_ostringstream class templates and several typedefs +#include // std::strstream, std::istrstream, std::ostrstream(deprecated) +#include // Helper functions to control the format or input and output +#include // std::basic_streambuf class template +#include // C-style input-output functions +#include // Localization utilities +#include // C localization utilities +#include // empty header. The macros that appear in iso646.h in C are keywords in C++ +#if __cplusplus >= 201103L +#include // (since C++11) std::type_index +#include // (since C++11) Compile-time type information +#include // (since C++11) C++ time utilites +#include // (since C++11) std::initializer_list class template +#include // (since C++11) std::tuple class template +#include // (since C++11) Nested allocator class +#include // (since C++11) fixed-size types and limits of other types +#include // (since C++11) formatting macros , intmax_t and uintmax_t math and conversions +#include // (since C++11) defines std::error_code, a platform-dependent error code +#include // (since C++11) C-style Unicode character conversion functions +#include // (since C++11) std::array container +#include // (since C++11) std::forward_list container +#include // (since C++11) std::unordered_set and std::unordered_multiset unordered associative containers +#include // (since C++11) std::unordered_map and std::unordered_multimap unordered associative containers +#include // (since C++11) Random number generators and distributions +#include // (since C++11) Compile-time rational arithmetic +#include // (since C++11) Floating-point environment access functions +#include // (since C++11) Unicode conversion facilities +#include // (since C++11) Classes, algorithms and iterators to support regular expression processing +#include // (since C++11) Atomic operations library +#include // (since C++11)(deprecated in C++17) simply includes the header +#include // (since C++11)(deprecated in C++17) simply includes the headers (until C++17) (since C++17) and : the overloads equivalent to the contents of the C header tgmath.h are already provided by those headers +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11)(deprecated in C++17) defines one compatibility macro constant +#include // (since C++11) std::thread class and supporting functions +#include // (since C++11) mutual exclusion primitives +#include // (since C++11) primitives for asynchronous computations +#include // (since C++11) thread waiting conditions +#endif +#if __cplusplus >= 201300L +#include // (since C++14) shared mutual exclusion primitives +#endif +#if __cplusplus >= 201500L +#include // (since C++17) std::any class template +#include // (since C++17) std::optional class template +#include // (since C++17) std::variant class template +#include // (since C++17) Polymorphic allocators and memory resources +#include // (since C++17) std::basic_string_view class template +#include // (since C++17) Predefined execution policies for parallel versions of the algorithms +#include // (since C++17) std::path class and supporting functions +#endif diff --git a/nbproject/private/launcher.properties b/nbproject/private/launcher.properties new file mode 100644 index 0000000..3edc2d8 --- /dev/null +++ b/nbproject/private/launcher.properties @@ -0,0 +1,42 @@ +# Launchers File syntax: +# +# [Must-have property line] +# launcher1.runCommand= +# [Optional extra properties] +# launcher1.displayName= +# launcher1.hide= +# launcher1.buildCommand= +# launcher1.runDir= +# launcher1.runInOwnTab= +# launcher1.symbolFiles= +# launcher1.env.= +# (If this value is quoted with ` it is handled as a native command which execution result will become the value) +# [Common launcher properties] +# common.runDir= +# (This value is overwritten by a launcher specific runDir value if the latter exists) +# common.env.= +# (Environment variables from common launcher are merged with launcher specific variables) +# common.symbolFiles= +# (This value is overwritten by a launcher specific symbolFiles value if the latter exists) +# +# In runDir, symbolFiles and env fields you can use these macroses: +# ${PROJECT_DIR} - project directory absolute path +# ${OUTPUT_PATH} - linker output path (relative to project directory path) +# ${OUTPUT_BASENAME}- linker output filename +# ${TESTDIR} - test files directory (relative to project directory path) +# ${OBJECTDIR} - object files directory (relative to project directory path) +# ${CND_DISTDIR} - distribution directory (relative to project directory path) +# ${CND_BUILDDIR} - build directory (relative to project directory path) +# ${CND_PLATFORM} - platform name +# ${CND_CONF} - configuration name +# ${CND_DLIB_EXT} - dynamic library extension +# +# All the project launchers must be listed in the file! +# +# launcher1.runCommand=... +# launcher2.runCommand=... +# ... +# common.runDir=... +# common.env.KEY=VALUE + +# launcher1.runCommand= \ No newline at end of file diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml new file mode 100644 index 0000000..516ee4c --- /dev/null +++ b/nbproject/private/private.xml @@ -0,0 +1,14 @@ + + + + 1 + 0 + + + + + file:/home/user/tmp/cpp/NetBeansProjects/PMP7/main.cpp + file:/home/user/tmp/cpp/NetBeansProjects/PMP7/README.md + + + diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..49970be --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,31 @@ + + + org.netbeans.modules.cnd.makeproject + + + PMP7 + + cpp + h,hpp + UTF-8 + + + + + Debug + 1 + + + Release + 1 + + + + true + ANSI|ANSI + ANSI|ANSI + ANSI|ANSI + + + + diff --git a/pod_proxy.hpp b/pod_proxy.hpp new file mode 100644 index 0000000..7d5bbb2 --- /dev/null +++ b/pod_proxy.hpp @@ -0,0 +1,62 @@ + +/* + * This file was automatically generated by dbusxx-xml2cpp; DO NOT EDIT! + */ + +#ifndef __dbusxx__pod_proxy_hpp__PROXY_MARSHAL_H +#define __dbusxx__pod_proxy_hpp__PROXY_MARSHAL_H + +#include +#include + +namespace pedal { + +class event_proxy +: public ::DBus::InterfaceProxy +{ +public: + + event_proxy() + : ::DBus::InterfaceProxy("pedal.event") + { + connect_signal(event_proxy, OnPedalEvent, _OnPedalEvent_stub); + } + +public: + + /* properties exported by this interface */ +public: + + /* methods exported by this interface, + * this functions will invoke the corresponding methods on the remote objects + */ + void Quit() + { + ::DBus::CallMessage call; + call.member("Quit"); + ::DBus::Message ret = invoke_method (call); + } + + +public: + + /* signal handlers for this interface + */ + virtual void OnPedalEvent(const int32_t& code) = 0; + +private: + + /* unmarshalers (to unpack the DBus message before calling the actual signal handler) + */ + void _OnPedalEvent_stub(const ::DBus::SignalMessage &sig) + { + ::DBus::MessageIter ri = sig.reader(); + + int32_t code; + ri >> code; + OnPedalEvent(code); + } +}; + +} +#endif //__dbusxx__pod_proxy_hpp__PROXY_MARSHAL_H diff --git a/pod_proxy.xml b/pod_proxy.xml new file mode 100644 index 0000000..f39ab54 --- /dev/null +++ b/pod_proxy.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + \ No newline at end of file