X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/50c549b98d8e61e19f59c61989af293bb58319f8..7344108e8a129a3f9b4df5ab0f98a1713db03b89:/include/wx/ipcbase.h diff --git a/include/wx/ipcbase.h b/include/wx/ipcbase.h index 48f4d5c33a..521bef8595 100644 --- a/include/wx/ipcbase.h +++ b/include/wx/ipcbase.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: ipcbase.h +// Name: wx/ipcbase.h // Purpose: Base classes for IPC // Author: Julian Smart // Modified by: @@ -72,7 +72,7 @@ public: : size, wxIPC_UNICODETEXT); } bool Execute(const wxString& s) { - const wxUTF8Buf buf = s.utf8_str(); + const wxScopedCharBuffer buf = s.utf8_str(); return DoExecute(buf, strlen(buf) + 1, wxIPC_UTF8TEXT); } bool Execute(const wxCStrData& cs) @@ -94,7 +94,7 @@ public: : size, wxIPC_UNICODETEXT); } bool Poke(const wxString& item, const wxString s) { - const wxUTF8Buf buf = s.utf8_str(); + const wxScopedCharBuffer buf = s.utf8_str(); return DoPoke(item, buf, strlen(buf) + 1, wxIPC_UTF8TEXT); } bool Poke(const wxString& item, const wxCStrData& cs) @@ -116,7 +116,7 @@ public: : size, wxIPC_UNICODETEXT); } bool Advise(const wxString& item, const wxString s) { - const wxUTF8Buf buf = s.utf8_str(); + const wxScopedCharBuffer buf = s.utf8_str(); return DoAdvise(item, buf, strlen(buf) + 1, wxIPC_UTF8TEXT); } bool Advise(const wxString& item, const wxCStrData& cs) @@ -127,11 +127,25 @@ public: // Callbacks to SERVER - override at will - virtual bool OnExecute(const wxString& WXUNUSED(topic), - const void *WXUNUSED(data), - size_t WXUNUSED(size), - wxIPCFormat WXUNUSED(format)) - { return false; } + virtual bool OnExec(const wxString& WXUNUSED(topic), + const wxString& WXUNUSED(data)) + { + wxFAIL_MSG( "This method shouldn't be called, if it is, it probably " + "means that you didn't update your old code overriding " + "OnExecute() to use the new parameter types (\"const void *\" " + "instead of \"wxChar *\" and \"size_t\" instead of \"int\"), " + "you must do it or your code wouldn't be executed at all!" ); + return false; + } + + // deprecated function kept for backwards compatibility: usually you will + // want to override OnExec() above instead which receives its data in a more + // convenient format + virtual bool OnExecute(const wxString& topic, + const void *data, + size_t size, + wxIPCFormat format) + { return OnExec(topic, GetTextFromData(data, size, format)); } virtual const void *OnRequest(const wxString& WXUNUSED(topic), const wxString& WXUNUSED(item), @@ -166,6 +180,28 @@ public: virtual bool OnDisconnect() { delete this; return true; } + // return true if this is one of the formats used for textual data + // transmission + static bool IsTextFormat(wxIPCFormat format) + { + return format == wxIPC_TEXT || + format == wxIPC_UTF8TEXT || + format == wxIPC_UTF16TEXT || + format == wxIPC_UTF32TEXT; + } + + // converts from the data and format into a wxString automatically + // + // this function accepts data in all of wxIPC_TEXT, wxIPC_UNICODETEXT, and + // wxIPC_UTF8TEXT formats but asserts if the format is anything else (i.e. + // such that IsTextFormat(format) doesn't return true) + // + // notice that the size parameter here contains the total size of the data, + // including the terminating '\0' or L'\0' + static + wxString GetTextFromData(const void *data, size_t size, wxIPCFormat format); + + // return a buffer at least this size, reallocating buffer if needed // returns NULL if using an inadequate user buffer which can't be resized void *GetBufferAtLeast(size_t bytes); @@ -186,7 +222,7 @@ private: protected: bool m_connected; - DECLARE_NO_ASSIGN_CLASS(wxConnectionBase); + wxDECLARE_NO_ASSIGN_CLASS(wxConnectionBase); DECLARE_CLASS(wxConnectionBase) };