]> git.ipfire.org Git - thirdparty/open-vm-tools.git/commitdiff
Changes to common source files not directly applicable to open-vm-tools.
authorJohn Wolfe <jwolfe@vmware.com>
Wed, 18 May 2022 01:36:21 +0000 (18:36 -0700)
committerJohn Wolfe <jwolfe@vmware.com>
Wed, 18 May 2022 01:36:21 +0000 (18:36 -0700)
open-vm-tools/lib/include/sigc++2to3.h [new file with mode: 0644]
open-vm-tools/services/plugins/dndcp/dnd/copyPasteRpc.hh
open-vm-tools/services/plugins/dndcp/dnd/dndRpc.hh
open-vm-tools/services/plugins/dndcp/dnd/fileTransferRpc.hh
open-vm-tools/services/plugins/dndcp/stringxx/string.hh
open-vm-tools/services/plugins/dndcp/stringxx/ubstr_t.hh

diff --git a/open-vm-tools/lib/include/sigc++2to3.h b/open-vm-tools/lib/include/sigc++2to3.h
new file mode 100644 (file)
index 0000000..cdc96a1
--- /dev/null
@@ -0,0 +1,138 @@
+/*********************************************************
+ * Copyright (C) 2022 VMware, Inc. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation version 2.1 and no later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
+ * License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
+ *
+ *********************************************************/
+
+/*
+ * sigc++2to3.h --
+ *
+ *     A header file that contain definations that will allow some sigc++2 APIs
+ *     to work when builing with sigc++3.
+ */
+
+#pragma once
+
+
+#include <type_traits>
+#include <sigc++config.h>
+#include <sigc++/sigc++.h>
+
+
+#if SIGCXX_MAJOR_VERSION >= 3
+
+namespace sigc {
+
+
+// Bridge slot syntax change
+template <typename T_ret, typename... T_args>
+class slot : public slot<T_ret(T_args...)> {
+private:
+   using _true_slot = slot<T_ret(T_args...)>;
+public:
+   inline slot() = default;
+   inline slot(const _true_slot& src) : _true_slot(src) {}
+   template<typename T_functor>
+   inline slot(const T_functor& func) : _true_slot(func) {}
+};
+
+template <typename T_ret>
+using slot0 = slot<T_ret()>;
+template <typename T_ret, typename T_arg1>
+using slot1 = slot<T_ret(T_arg1)>;
+template <typename T_ret, typename T_arg1, typename T_arg2>
+using slot2 = slot<T_ret(T_arg1, T_arg2)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3>
+using slot3 = slot<T_ret(T_arg1, T_arg2, T_arg3)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4>
+using slot4 = slot<T_ret(T_arg1, T_arg2, T_arg3, T_arg4)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5>
+using slot5 = slot<T_ret(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5, typename T_arg6>
+using slot6 = slot<T_ret(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5, typename T_arg6, typename T_arg7>
+using slot7 = slot<T_ret(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7)>;
+
+
+// Bridge signal syntax change
+template <typename T_ret, typename... T_args>
+class signal : public signal<T_ret(T_args...)> {
+public:
+   signal() = default;
+};
+
+template <typename T_ret>
+using signal0 = signal<T_ret()>;
+template <typename T_ret, typename T_arg1>
+using signal1 = signal<T_ret(T_arg1)>;
+template <typename T_ret, typename T_arg1, typename T_arg2>
+using signal2 = signal<T_ret(T_arg1, T_arg2)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3>
+using signal3 = signal<T_ret(T_arg1, T_arg2, T_arg3)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4>
+using signal4 = signal<T_ret(T_arg1, T_arg2, T_arg3, T_arg4)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5>
+using signal5 = signal<T_ret(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5, typename T_arg6>
+using signal6 = signal<T_ret(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6)>;
+template <typename T_ret, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5, typename T_arg6, typename T_arg7>
+using signal7 = signal<T_ret(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7)>;
+
+
+//Bridge bound_mem_functor
+template <typename T_ret, typename T_obj>
+using bound_mem_functor0 = bound_mem_functor<T_ret (T_obj::*)(), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1>
+using bound_mem_functor1 = bound_mem_functor<T_ret (T_obj::*)(T_arg1), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1, typename T_arg2>
+using bound_mem_functor2 = bound_mem_functor<T_ret (T_obj::*)(T_arg1, T_arg2), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1, typename T_arg2, typename T_arg3>
+using bound_mem_functor3 = bound_mem_functor<T_ret (T_obj::*)(T_arg1, T_arg2, T_arg3), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4>
+using bound_mem_functor4 = bound_mem_functor<T_ret (T_obj::*)(T_arg1, T_arg2, T_arg3, T_arg4), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5>
+using bound_mem_functor5 = bound_mem_functor<T_ret (T_obj::*)(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5, typename T_arg6>
+using bound_mem_functor6 = bound_mem_functor<T_ret (T_obj::*)(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6), T_obj>;
+template <typename T_ret, typename T_obj, typename T_arg1, typename T_arg2, typename T_arg3, typename T_arg4, typename T_arg5, typename T_arg6, typename T_arg7>
+using bound_mem_functor7 = bound_mem_functor<T_ret (T_obj::*)(T_arg1, T_arg2, T_arg3, T_arg4, T_arg5, T_arg6, T_arg7), T_obj>;
+
+
+// Add old mem_fun API for pointer
+template<typename T_return, typename T_obj, typename... T_arg>
+inline decltype(auto)
+mem_fun(T_obj *obj, T_return (T_obj::*func)(T_arg...))
+{
+   return bound_mem_functor<T_return (T_obj::*)(T_arg...), T_arg...>(*obj, func);
+}
+
+template<typename T_return, typename T_obj, typename... T_arg>
+inline decltype(auto)
+mem_fun(const T_obj *obj, T_return (T_obj::*func)(T_arg...) const)
+{
+   return bound_mem_functor<T_return (T_obj::*)(T_arg...) const, T_arg...>(*obj, func);
+}
+
+
+// Stub sigc::ref impl
+template <typename T>
+inline decltype(auto) ref(T& t) { return std::ref(t); }
+template <typename T>
+inline decltype(auto) ref(const T& t) { return std::cref(t); }
+
+
+} //namespace sigc
+
+#endif // SIGCXX_MAJOR_VERSION >= 3
index c488dbed21ff6a4ceb023e34a110c8c080b545fb..6fdb6b6ad80cef042c64ba96258eb15eb0d3f620 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2007-2017 VMware, Inc. All rights reserved.
+ * Copyright (C) 2007-2017,2022 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -25,7 +25,8 @@
 #ifndef COPY_PASTE_RPC_HH
 #define COPY_PASTE_RPC_HH
 
-#include <sigc++/connection.h>
+#include <sigc++/sigc++.h>
+#include <sigc++2to3.h>
 #include "dndCPLibExport.hh"
 #include "rpcBase.h"
 
index 33c72f3698761bdb4259dc2d47b43d69b89a2471..100e621a8f0d60903b40425df0cb208690bc0691 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2007-2017 VMware, Inc. All rights reserved.
+ * Copyright (C) 2007-2017,2022 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -25,7 +25,8 @@
 #ifndef DND_RPC_HH
 #define DND_RPC_HH
 
-#include <sigc++/connection.h>
+#include <sigc++/sigc++.h>
+#include <sigc++2to3.h>
 #include "dndCPLibExport.hh"
 #include "rpcBase.h"
 
index b685735ad548aad9eec1a6c0a26268483d327dec..f33d352a8070355913cae9ab37bcd434c3c6b248 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2010-2017 VMware, Inc. All rights reserved.
+ * Copyright (C) 2010-2017,2022 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -25,7 +25,8 @@
 #ifndef FILE_TRANSFER_RPC_HH
 #define FILE_TRANSFER_RPC_HH
 
-#include <sigc++/connection.h>
+#include <sigc++/sigc++.h>
+#include <sigc++2to3.h>
 #include "dndCPLibExport.hh"
 #include "rpcBase.h"
 
index 53a50f4c5db9088d92c63422fb0c7d61d90675c6..ea44000e7c8b4dca3e768ef00baa6679b051c0ae 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2008-2019 VMware, Inc. All rights reserved.
+ * Copyright (C) 2008-2019,2022 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -55,6 +55,7 @@
  * need to include <glib.h> here.
  */
 #include <glib.h>
+#include <giommconfig.h> // For GIOMM_*_VERSION macros
 #include <glibmm/ustring.h>
 
 #ifdef _WIN32
@@ -101,6 +102,18 @@ public:
    static const size_type npos;
 
    // Normalize mode map to Glib::NormalizeMode
+#if GIOMM_MAJOR_VERSION >= 2 && GIOMM_MINOR_VERSION >= 68
+   typedef enum {
+      NORMALIZE_DEFAULT          = Glib::NormalizeMode::DEFAULT,
+      NORMALIZE_NFD              = Glib::NormalizeMode::NFD,
+      NORMALIZE_DEFAULT_COMPOSE  = Glib::NormalizeMode::DEFAULT_COMPOSE,
+      NORMALIZE_NFC              = Glib::NormalizeMode::NFC,
+      NORMALIZE_ALL              = Glib::NormalizeMode::ALL,
+      NORMALIZE_NFKD             = Glib::NormalizeMode::NFKD,
+      NORMALIZE_ALL_COMPOSE      = Glib::NormalizeMode::ALL_COMPOSE,
+      NORMALIZE_NFKC             = Glib::NormalizeMode::NFKC
+   } NormalizeMode;
+#else
    typedef enum {
       NORMALIZE_DEFAULT          = Glib::NORMALIZE_DEFAULT,
       NORMALIZE_NFD              = Glib::NORMALIZE_NFD,
@@ -111,6 +124,7 @@ public:
       NORMALIZE_ALL_COMPOSE      = Glib::NORMALIZE_ALL_COMPOSE,
       NORMALIZE_NFKC             = Glib::NORMALIZE_NFKC
    } NormalizeMode;
+#endif
 
    string();
    string(const char *s);
index 2d0f7f07fe861e7730bf0f22852ffbbe6e96cf86..46e118a8434826ec30af87ba7684e7f7dac01e25 100644 (file)
@@ -1,5 +1,5 @@
 /*********************************************************
- * Copyright (C) 2008-2019,2021 VMware, Inc. All rights reserved.
+ * Copyright (C) 2008-2019,2021-2022 VMware, Inc. All rights reserved.
  *
  * This program is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as published
@@ -32,6 +32,7 @@
 
 #include <algorithm>
 #include <comutil.h>
+#include <giommconfig.h> // For GIOMM_*_VERSION
 #include <glibmm/refptr.h>
 
 #include "autoCPtr.hh"
@@ -115,6 +116,9 @@ private:
       {
       }
 
+#if GIOMM_MAJOR_VERSION >= 2 && GIOMM_MINOR_VERSION >= 68
+      // Glib::RefPtr is now just a std::shared_ptr so no extras are needed
+#else
       // For Glib::RefPtr.
       void reference()
       {
@@ -129,6 +133,7 @@ private:
             delete this;
          }
       }
+#endif
 
       // Takes ownership of the input string.
       void Set(char *utf8String) // IN/OUT: May be NULL.
@@ -145,13 +150,18 @@ private:
          return mUTF8String;
       }
 
+#if GIOMM_MAJOR_VERSION >= 2 && GIOMM_MINOR_VERSION >= 68
+   public:
+#else
    private:
       // Only destructible via unreference().
+#endif
       ~UTF8Data()
       {
          free(mUTF8String);
       }
 
+   private:
       char *mUTF8String;
       unsigned int mRefCount;