From af79240c81ccca2360b39a334126274d49c10f0b Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sun, 30 Aug 2020 21:15:07 +0200 Subject: [PATCH] Namespace libwebsocket surface classes Using the global names-pace for classes named "Json", "TypedValue", "ArdourTransport", "ArdourMixerPlugin" etc is not acceptable. --- libs/surfaces/websockets/ardour_websockets.h | 4 ++-- libs/surfaces/websockets/client.cc | 2 ++ libs/surfaces/websockets/client.h | 7 ++++++- libs/surfaces/websockets/component.cc | 2 ++ libs/surfaces/websockets/component.h | 5 +++-- libs/surfaces/websockets/dispatcher.cc | 1 + libs/surfaces/websockets/dispatcher.h | 4 ++++ libs/surfaces/websockets/feedback.cc | 1 + libs/surfaces/websockets/feedback.h | 4 ++++ libs/surfaces/websockets/json.cc | 4 +++- libs/surfaces/websockets/json.h | 6 +++++- libs/surfaces/websockets/manifest.cc | 10 ++++++---- libs/surfaces/websockets/manifest.h | 4 ++++ libs/surfaces/websockets/message.cc | 4 +++- libs/surfaces/websockets/message.h | 4 ++++ libs/surfaces/websockets/mixer.cc | 1 + libs/surfaces/websockets/mixer.h | 6 +++++- libs/surfaces/websockets/resources.cc | 10 ++++++---- libs/surfaces/websockets/resources.h | 4 ++++ libs/surfaces/websockets/server.cc | 1 + libs/surfaces/websockets/server.h | 4 ++++ libs/surfaces/websockets/state.cc | 2 ++ libs/surfaces/websockets/state.h | 4 ++++ libs/surfaces/websockets/transport.cc | 1 + libs/surfaces/websockets/transport.h | 4 ++++ libs/surfaces/websockets/typed_value.cc | 2 ++ libs/surfaces/websockets/typed_value.h | 4 ++++ 27 files changed, 88 insertions(+), 17 deletions(-) diff --git a/libs/surfaces/websockets/ardour_websockets.h b/libs/surfaces/websockets/ardour_websockets.h index 4b55834eb9..e68e60e13d 100644 --- a/libs/surfaces/websockets/ardour_websockets.h +++ b/libs/surfaces/websockets/ardour_websockets.h @@ -39,8 +39,8 @@ #include "server.h" #include "mixer.h" -namespace ArdourSurface -{ +namespace ArdourSurface { + const char * const surface_name = "WebSockets Server (Experimental)"; const char * const surface_id = "uri://ardour.org/surfaces/ardour_websockets:0"; diff --git a/libs/surfaces/websockets/client.cc b/libs/surfaces/websockets/client.cc index 2d0668fee1..81c4a9c1eb 100644 --- a/libs/surfaces/websockets/client.cc +++ b/libs/surfaces/websockets/client.cc @@ -20,6 +20,8 @@ #include "client.h" +using namespace ArdourSurface; + bool ClientContext::has_state (const NodeState& node_state) { diff --git a/libs/surfaces/websockets/client.h b/libs/surfaces/websockets/client.h index e5783d3d1b..92e0526f75 100644 --- a/libs/surfaces/websockets/client.h +++ b/libs/surfaces/websockets/client.h @@ -25,7 +25,10 @@ #include "message.h" #include "state.h" -typedef struct lws* Client; +typedef struct lws* Client; + +namespace ArdourSurface { + typedef std::list ClientOutputBuffer; class ClientContext @@ -59,4 +62,6 @@ private: ClientOutputBuffer _output_buf; }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_client_h_ diff --git a/libs/surfaces/websockets/component.cc b/libs/surfaces/websockets/component.cc index 9e94a4643e..f2024331d3 100644 --- a/libs/surfaces/websockets/component.cc +++ b/libs/surfaces/websockets/component.cc @@ -19,6 +19,8 @@ #include "component.h" #include "ardour_websockets.h" +using namespace ArdourSurface; + BasicUI& SurfaceComponent::basic_ui () const { diff --git a/libs/surfaces/websockets/component.h b/libs/surfaces/websockets/component.h index d90c4b4627..78708e39e8 100644 --- a/libs/surfaces/websockets/component.h +++ b/libs/surfaces/websockets/component.h @@ -28,9 +28,8 @@ namespace ArdourSurface { -class ArdourWebsockets; -} +class ArdourWebsockets; class ArdourMixer; class ArdourTransport; class WebsocketsServer; @@ -66,4 +65,6 @@ protected: ArdourSurface::ArdourWebsockets& _surface; }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_component_h_ diff --git a/libs/surfaces/websockets/dispatcher.cc b/libs/surfaces/websockets/dispatcher.cc index a8e3479787..aec058e1a9 100644 --- a/libs/surfaces/websockets/dispatcher.cc +++ b/libs/surfaces/websockets/dispatcher.cc @@ -25,6 +25,7 @@ #include "state.h" using namespace ARDOUR; +using namespace ArdourSurface; #define NODE_METHOD_PAIR(x) (Node::x, &WebsocketsDispatcher::x##_handler) diff --git a/libs/surfaces/websockets/dispatcher.h b/libs/surfaces/websockets/dispatcher.h index 0bddb4f08c..e22068c220 100644 --- a/libs/surfaces/websockets/dispatcher.h +++ b/libs/surfaces/websockets/dispatcher.h @@ -25,6 +25,8 @@ #include "component.h" #include "message.h" +namespace ArdourSurface { + class WebsocketsDispatcher : public SurfaceComponent { public: @@ -57,4 +59,6 @@ private: void update (Client, std::string, const AddressVector&, const ValueVector&); }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_dispatcher_h_ diff --git a/libs/surfaces/websockets/feedback.cc b/libs/surfaces/websockets/feedback.cc index c3301723ae..b6a61d6f61 100644 --- a/libs/surfaces/websockets/feedback.cc +++ b/libs/surfaces/websockets/feedback.cc @@ -29,6 +29,7 @@ #define POLL_INTERVAL_MS 100 using namespace ARDOUR; +using namespace ArdourSurface; struct TransportObserver { void operator() (ArdourFeedback* p) diff --git a/libs/surfaces/websockets/feedback.h b/libs/surfaces/websockets/feedback.h index d43a445ef2..7714b98727 100644 --- a/libs/surfaces/websockets/feedback.h +++ b/libs/surfaces/websockets/feedback.h @@ -27,6 +27,8 @@ #include "typed_value.h" #include "mixer.h" +namespace ArdourSurface { + class ArdourFeedback : public SurfaceComponent { public: @@ -54,4 +56,6 @@ private: void observe_strip_plugins (uint32_t, ArdourMixerStrip::PluginMap&); }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_feedback_h_ diff --git a/libs/surfaces/websockets/json.cc b/libs/surfaces/websockets/json.cc index b46857721e..7d1d6c2b1e 100644 --- a/libs/surfaces/websockets/json.cc +++ b/libs/surfaces/websockets/json.cc @@ -21,10 +21,12 @@ #include "json.h" +using namespace ArdourSurface; + /* adapted from https://stackoverflow.com/questions/7724448/simple-json-string-escape-for-c CC BY-SA 4.0 license */ std::string -Json::escape (const std::string &s) { +WebSocketsJSON::escape (const std::string &s) { std::ostringstream o; for (std::string::const_iterator it = s.begin(); it != s.end(); ++it) { diff --git a/libs/surfaces/websockets/json.h b/libs/surfaces/websockets/json.h index 4db738575a..b2a937e952 100644 --- a/libs/surfaces/websockets/json.h +++ b/libs/surfaces/websockets/json.h @@ -19,9 +19,13 @@ #ifndef _ardour_surface_websockets_json_h_ #define _ardour_surface_websockets_json_h_ -namespace Json +namespace ArdourSurface { + +namespace WebSocketsJSON { std::string escape (const std::string&); } +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_json_h_ diff --git a/libs/surfaces/websockets/manifest.cc b/libs/surfaces/websockets/manifest.cc index 306405fd6a..f710e58bde 100644 --- a/libs/surfaces/websockets/manifest.cc +++ b/libs/surfaces/websockets/manifest.cc @@ -28,6 +28,8 @@ #include "resources.h" #include "json.h" +using namespace ArdourSurface; + static const char* const manifest_filename = "manifest.xml"; SurfaceManifest::SurfaceManifest (std::string path) @@ -77,10 +79,10 @@ SurfaceManifest::to_json () std::stringstream ss; ss << "{" - << "\"path\":\"" << Json::escape (Glib::path_get_basename (_path)) << "\"" - << ",\"name\":\"" << Json::escape (_name) << "\"" - << ",\"description\":\"" << Json::escape (_description) << "\"" - << ",\"version\":\"" << Json::escape (_version) << "\"" + << "\"path\":\"" << WebSocketsJSON::escape (Glib::path_get_basename (_path)) << "\"" + << ",\"name\":\"" << WebSocketsJSON::escape (_name) << "\"" + << ",\"description\":\"" << WebSocketsJSON::escape (_description) << "\"" + << ",\"version\":\"" << WebSocketsJSON::escape (_version) << "\"" << "}"; return ss.str (); diff --git a/libs/surfaces/websockets/manifest.h b/libs/surfaces/websockets/manifest.h index 45ecc37f6a..f323043b6d 100644 --- a/libs/surfaces/websockets/manifest.h +++ b/libs/surfaces/websockets/manifest.h @@ -21,6 +21,8 @@ #include +namespace ArdourSurface { + class SurfaceManifest { public: @@ -47,4 +49,6 @@ private: std::string _version; }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_manifest_h_ diff --git a/libs/surfaces/websockets/message.cc b/libs/surfaces/websockets/message.cc index ef81f4e7c3..38f9bdf125 100644 --- a/libs/surfaces/websockets/message.cc +++ b/libs/surfaces/websockets/message.cc @@ -34,6 +34,8 @@ #define JSON_INF 1.0e+128 #define JSON_INF_STR XSTR (JSON_INF) +using namespace ArdourSurface; + namespace pt = boost::property_tree; NodeStateMessage::NodeStateMessage (const NodeState& state) @@ -167,7 +169,7 @@ NodeStateMessage::serialize (void* buf, size_t len) const break; } case TypedValue::String: - ss << '"' << Json::escape (static_cast (val)) << '"'; + ss << '"' << WebSocketsJSON::escape (static_cast (val)) << '"'; break; default: break; diff --git a/libs/surfaces/websockets/message.h b/libs/surfaces/websockets/message.h index a3040f074d..a7b7f64290 100644 --- a/libs/surfaces/websockets/message.h +++ b/libs/surfaces/websockets/message.h @@ -21,6 +21,8 @@ #include "state.h" +namespace ArdourSurface { + class NodeStateMessage { public: @@ -48,4 +50,6 @@ private: NodeState _state; }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_message_h_ diff --git a/libs/surfaces/websockets/mixer.cc b/libs/surfaces/websockets/mixer.cc index a6ae3faf9a..8efb9ea863 100644 --- a/libs/surfaces/websockets/mixer.cc +++ b/libs/surfaces/websockets/mixer.cc @@ -27,6 +27,7 @@ #include "mixer.h" using namespace ARDOUR; +using namespace ArdourSurface; ArdourMixerPlugin::ArdourMixerPlugin (boost::shared_ptr insert) : _insert (insert) diff --git a/libs/surfaces/websockets/mixer.h b/libs/surfaces/websockets/mixer.h index 2c2410328d..5bf61c687d 100644 --- a/libs/surfaces/websockets/mixer.h +++ b/libs/surfaces/websockets/mixer.h @@ -24,9 +24,11 @@ #include "component.h" #include "typed_value.h" +namespace ArdourSurface { + struct ArdourMixerNotFoundException : public virtual std::runtime_error { - using std::runtime_error::runtime_error; + using std::runtime_error::runtime_error; // XXX! }; class ArdourMixerPlugin @@ -120,4 +122,6 @@ private: Glib::Threads::Mutex _mutex; }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_mixer_h_ diff --git a/libs/surfaces/websockets/resources.cc b/libs/surfaces/websockets/resources.cc index afad30e887..aec605ce5f 100644 --- a/libs/surfaces/websockets/resources.cc +++ b/libs/surfaces/websockets/resources.cc @@ -28,6 +28,8 @@ #include "resources.h" #include "json.h" +using namespace ArdourSurface; + static const char* const data_dir_env_var = "ARDOUR_WEBSURFACES_PATH"; static const char* const data_dir_name = "web_surfaces"; static const char* const builtin_dir_name = "builtin"; @@ -85,8 +87,8 @@ ServerResources::scan () SurfaceManifestVector builtin = read_manifests (builtin_dir_str); ss << "[{" - << "\"filesystemPath\":\"" << Json::escape (builtin_dir_str) << "\"" - << ",\"path\":\"" << Json::escape (builtin_dir_name) << "\"" + << "\"filesystemPath\":\"" << WebSocketsJSON::escape (builtin_dir_str) << "\"" + << ",\"path\":\"" << WebSocketsJSON::escape (builtin_dir_name) << "\"" << ",\"surfaces\":" << "["; @@ -101,8 +103,8 @@ ServerResources::scan () SurfaceManifestVector user = read_manifests (user_dir_str); ss << "]},{" - << "\"filesystemPath\":\"" << Json::escape (user_dir_str) << "\"" - << ",\"path\":\"" << Json::escape (user_dir_name) << "\"" + << "\"filesystemPath\":\"" << WebSocketsJSON::escape (user_dir_str) << "\"" + << ",\"path\":\"" << WebSocketsJSON::escape (user_dir_name) << "\"" << ",\"surfaces\":" << "["; diff --git a/libs/surfaces/websockets/resources.h b/libs/surfaces/websockets/resources.h index f942ec1ce7..f86a02d5b8 100644 --- a/libs/surfaces/websockets/resources.h +++ b/libs/surfaces/websockets/resources.h @@ -24,6 +24,8 @@ #include "manifest.h" +namespace ArdourSurface { + typedef std::vector SurfaceManifestVector; class ServerResources @@ -49,4 +51,6 @@ private: }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_resources_h_ diff --git a/libs/surfaces/websockets/server.cc b/libs/surfaces/websockets/server.cc index f7d5621046..1afd7fcbe6 100644 --- a/libs/surfaces/websockets/server.cc +++ b/libs/surfaces/websockets/server.cc @@ -47,6 +47,7 @@ #define MAX_INDEX_SIZE 65536 using namespace Glib; +using namespace ArdourSurface; WebsocketsServer::WebsocketsServer (ArdourSurface::ArdourWebsockets& surface) : SurfaceComponent (surface) diff --git a/libs/surfaces/websockets/server.h b/libs/surfaces/websockets/server.h index 641108ef37..d9335d4faa 100644 --- a/libs/surfaces/websockets/server.h +++ b/libs/surfaces/websockets/server.h @@ -49,6 +49,8 @@ struct LwsPollFdGlibSource { }; #endif +namespace ArdourSurface { + class WebsocketsServer : public SurfaceComponent { public: @@ -102,4 +104,6 @@ private: #endif }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_server_h_ diff --git a/libs/surfaces/websockets/state.cc b/libs/surfaces/websockets/state.cc index 18bf289951..5655f9af35 100644 --- a/libs/surfaces/websockets/state.cc +++ b/libs/surfaces/websockets/state.cc @@ -21,6 +21,8 @@ #include "state.h" +using namespace ArdourSurface; + NodeState::NodeState () {} NodeState::NodeState (std::string node) diff --git a/libs/surfaces/websockets/state.h b/libs/surfaces/websockets/state.h index eecaf16dc3..0ffb1a4212 100644 --- a/libs/surfaces/websockets/state.h +++ b/libs/surfaces/websockets/state.h @@ -29,6 +29,8 @@ #define ADDR_NONE UINT_MAX +namespace ArdourSurface { + namespace Node { const std::string strip_description = "strip_description"; @@ -84,4 +86,6 @@ private: std::size_t hash_value (const NodeState&); +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_state_h_ diff --git a/libs/surfaces/websockets/transport.cc b/libs/surfaces/websockets/transport.cc index 672922928d..e840b49d5f 100644 --- a/libs/surfaces/websockets/transport.cc +++ b/libs/surfaces/websockets/transport.cc @@ -21,6 +21,7 @@ #include "transport.h" using namespace ARDOUR; +using namespace ArdourSurface; double ArdourTransport::tempo () const diff --git a/libs/surfaces/websockets/transport.h b/libs/surfaces/websockets/transport.h index b2448fcb7f..8e0d4b9f2b 100644 --- a/libs/surfaces/websockets/transport.h +++ b/libs/surfaces/websockets/transport.h @@ -21,6 +21,8 @@ #include "component.h" +namespace ArdourSurface { + class ArdourTransport : public SurfaceComponent { public: @@ -40,4 +42,6 @@ public: void set_record (bool); }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_transport_h_ diff --git a/libs/surfaces/websockets/typed_value.cc b/libs/surfaces/websockets/typed_value.cc index 8e01da9bf9..04b0ec9be8 100644 --- a/libs/surfaces/websockets/typed_value.cc +++ b/libs/surfaces/websockets/typed_value.cc @@ -23,6 +23,8 @@ #include "typed_value.h" +using namespace ArdourSurface; + #define DBL_TOLERANCE 0.001 TypedValue::TypedValue () diff --git a/libs/surfaces/websockets/typed_value.h b/libs/surfaces/websockets/typed_value.h index 9ec3787d3e..f24a960e18 100644 --- a/libs/surfaces/websockets/typed_value.h +++ b/libs/surfaces/websockets/typed_value.h @@ -21,6 +21,8 @@ #ifndef _ardour_surface_websockets_typed_value_h_ #define _ardour_surface_websockets_typed_value_h_ +namespace ArdourSurface { + class TypedValue { public: @@ -65,4 +67,6 @@ private: std::string _s; }; +} // namespace ArdourSurface + #endif // _ardour_surface_websockets_typed_value_h_