Skip to content

Commit

Permalink
Fix some weird template/operator issues on OS X.
Browse files Browse the repository at this point in the history
I frankly don't understand at all what's going on here. These fixes
derive from:

https://chromium.googlesource.com/chromiumos/third_party/dbus-cplusplus/+/c3f69f6be02e31521474dce7eadf6ba4f4a7ce94
https://chromium.googlesource.com/chromiumos/third_party/dbus-cplusplus/+/7104857773f790a549d399715482fa23d9b736cd

Except I've dropped some changes that break the OS X build for me. Frankly, if
it compiles, that's good enough for me.
  • Loading branch information
pkgw committed Dec 20, 2015
1 parent 43f119a commit a0b9ef3
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 10 deletions.
23 changes: 14 additions & 9 deletions include/dbus-c++/types.h
Expand Up @@ -89,13 +89,7 @@ class DXXAPI Variant
}

template <typename T>
operator T() const
{
T cast;
MessageIter ri = _msg.reader();
ri >> cast;
return cast;
}
operator T() const;

private:

Expand Down Expand Up @@ -316,7 +310,7 @@ struct type< Struct<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
}
};

} /* namespace DBus */
extern DXXAPI DBus::MessageIter &operator << (DBus::MessageIter &iter, const DBus::Variant &val);

inline DBus::MessageIter &operator << (DBus::MessageIter &iter, const DBus::Invalid &)
{
Expand Down Expand Up @@ -551,6 +545,8 @@ inline DBus::MessageIter &operator >> (DBus::MessageIter &iter, DBus::Signature
return ++iter;
}

extern DXXAPI DBus::MessageIter &operator >> (DBus::MessageIter &iter, DBus::Variant &val);

template<typename E>
inline DBus::MessageIter &operator >> (DBus::MessageIter &iter, std::vector<E>& val)
{
Expand Down Expand Up @@ -644,7 +640,16 @@ inline DBus::MessageIter &operator >> (DBus::MessageIter &iter, DBus::Struct<T1,
return ++iter;
}

extern DXXAPI DBus::MessageIter &operator >> (DBus::MessageIter &iter, DBus::Variant &val);
template <typename T>
inline DBus::Variant::operator T() const
{
T cast;
DBus::MessageIter ri = _msg.reader();
ri >> cast;
return cast;
}

} /* namespace DBus */

#endif//__DBUSXX_TYPES_H

3 changes: 2 additions & 1 deletion src/types.cpp
Expand Up @@ -34,7 +34,7 @@
#include "message_p.h"
#include "internalerror.h"

using namespace DBus;
namespace DBus {

Variant::Variant()
: _msg(CallMessage()) // dummy message used as temporary storage for variant data
Expand Down Expand Up @@ -104,3 +104,4 @@ MessageIter &operator >> (MessageIter &iter, Variant &val)
return ++iter;
}

} /* namespace DBus */

0 comments on commit a0b9ef3

Please sign in to comment.