summaryrefslogtreecommitdiffstats
path: root/dbus
diff options
context:
space:
mode:
authordcheng <dcheng@chromium.org>2015-09-18 11:29:06 -0700
committerCommit bot <commit-bot@chromium.org>2015-09-18 18:30:06 +0000
commitfc6e2304f630345c79c95291191f4b64880736a1 (patch)
treec7cac8512ff75652525b2d57f34ed778387f540f /dbus
parentd350943f049ddcf83b371cf97d652d4d6a8f4f18 (diff)
downloadchromium_src-fc6e2304f630345c79c95291191f4b64880736a1.zip
chromium_src-fc6e2304f630345c79c95291191f4b64880736a1.tar.gz
chromium_src-fc6e2304f630345c79c95291191f4b64880736a1.tar.bz2
Export various dbus::Property template specializations.
BUG=409111 R=stevenjb@chromium.org Committed: https://chromium.googlesource.com/chromium/src/+/40855d43fa71c215829b53a1034b1b653b4b8557 Review URL: https://codereview.chromium.org/1339763003 Cr-Commit-Position: refs/heads/master@{#349717}
Diffstat (limited to 'dbus')
-rw-r--r--dbus/property.h241
1 files changed, 154 insertions, 87 deletions
diff --git a/dbus/property.h b/dbus/property.h
index 5f36d69..b308c82 100644
--- a/dbus/property.h
+++ b/dbus/property.h
@@ -426,101 +426,168 @@ class CHROME_DBUS_EXPORT Property : public PropertyBase {
T set_value_;
};
-template <> Property<uint8>::Property();
-template <> bool Property<uint8>::PopValueFromReader(MessageReader* reader);
-template <> void Property<uint8>::AppendSetValueToWriter(MessageWriter* writer);
-extern template class Property<uint8>;
-
-template <> Property<bool>::Property();
-template <> bool Property<bool>::PopValueFromReader(MessageReader* reader);
-template <> void Property<bool>::AppendSetValueToWriter(MessageWriter* writer);
-extern template class Property<bool>;
-
-template <> Property<int16>::Property();
-template <> bool Property<int16>::PopValueFromReader(MessageReader* reader);
-template <> void Property<int16>::AppendSetValueToWriter(MessageWriter* writer);
-extern template class Property<int16>;
-
-template <> Property<uint16>::Property();
-template <> bool Property<uint16>::PopValueFromReader(MessageReader* reader);
-template <> void Property<uint16>::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<uint16>;
-
-template <> Property<int32>::Property();
-template <> bool Property<int32>::PopValueFromReader(MessageReader* reader);
-template <> void Property<int32>::AppendSetValueToWriter(MessageWriter* writer);
-extern template class Property<int32>;
-
-template <> Property<uint32>::Property();
-template <> bool Property<uint32>::PopValueFromReader(MessageReader* reader);
-template <> void Property<uint32>::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<uint32>;
-
-template <> Property<int64>::Property();
-template <> bool Property<int64>::PopValueFromReader(MessageReader* reader);
-template <> void Property<int64>::AppendSetValueToWriter(MessageWriter* writer);
-extern template class Property<int64>;
-
-template <> Property<uint64>::Property();
-template <> bool Property<uint64>::PopValueFromReader(MessageReader* reader);
-template <> void Property<uint64>::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<uint64>;
-
-template <> Property<double>::Property();
-template <> bool Property<double>::PopValueFromReader(MessageReader* reader);
-template <> void Property<double>::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<double>;
-
-template <> bool Property<std::string>::PopValueFromReader(
- MessageReader* reader);
-template <> void Property<std::string>::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<std::string>;
-
-template <> bool Property<ObjectPath>::PopValueFromReader(
- MessageReader* reader);
-template <> void Property<ObjectPath>::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<ObjectPath>;
-
-template <> bool Property<std::vector<std::string> >::PopValueFromReader(
- MessageReader* reader);
-template <> void Property<std::vector<std::string> >::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<std::vector<std::string> >;
-
-template <> bool Property<std::vector<ObjectPath> >::PopValueFromReader(
- MessageReader* reader);
-template <> void Property<std::vector<ObjectPath> >::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<std::vector<ObjectPath> >;
-
-template <> bool Property<std::vector<uint8> >::PopValueFromReader(
- MessageReader* reader);
-template <> void Property<std::vector<uint8> >::AppendSetValueToWriter(
- MessageWriter* writer);
-extern template class Property<std::vector<uint8> >;
-
-template <>
-bool Property<std::map<std::string, std::string>>::PopValueFromReader(
+// Clang and GCC don't agree on how attributes should work for explicitly
+// instantiated templates. GCC ignores attributes on explicit instantiations
+// (and emits a warning) while Clang requires the visiblity attribute on the
+// explicit instantiations for them to be visible to other compilation units.
+// Hopefully clang and GCC agree one day, and this can be cleaned up:
+// https://llvm.org/bugs/show_bug.cgi?id=24815
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wattributes"
+
+template <>
+CHROME_DBUS_EXPORT Property<uint8>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<uint8>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<uint8>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<uint8>;
+
+template <>
+CHROME_DBUS_EXPORT Property<bool>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<bool>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<bool>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<bool>;
+
+template <>
+CHROME_DBUS_EXPORT Property<int16>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<int16>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<int16>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<int16>;
+
+template <>
+CHROME_DBUS_EXPORT Property<uint16>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<uint16>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<uint16>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<uint16>;
+
+template <>
+CHROME_DBUS_EXPORT Property<int32>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<int32>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<int32>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<int32>;
+
+template <>
+CHROME_DBUS_EXPORT Property<uint32>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<uint32>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<uint32>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<uint32>;
+
+template <>
+CHROME_DBUS_EXPORT Property<int64>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<int64>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<int64>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<int64>;
+
+template <>
+CHROME_DBUS_EXPORT Property<uint64>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<uint64>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<uint64>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<uint64>;
+
+template <>
+CHROME_DBUS_EXPORT Property<double>::Property();
+template <>
+CHROME_DBUS_EXPORT bool Property<double>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<double>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<double>;
+
+template <>
+CHROME_DBUS_EXPORT bool Property<std::string>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<std::string>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<std::string>;
+
+template <>
+CHROME_DBUS_EXPORT bool Property<ObjectPath>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<ObjectPath>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<ObjectPath>;
+
+template <>
+CHROME_DBUS_EXPORT bool Property<std::vector<std::string>>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<
+ std::vector<std::string>>::AppendSetValueToWriter(MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<std::vector<std::string>>;
+
+template <>
+CHROME_DBUS_EXPORT bool Property<std::vector<ObjectPath>>::PopValueFromReader(
MessageReader* reader);
template <>
-void Property<std::map<std::string, std::string>>::AppendSetValueToWriter(
+CHROME_DBUS_EXPORT void Property<
+ std::vector<ObjectPath>>::AppendSetValueToWriter(MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<std::vector<ObjectPath>>;
+
+template <>
+CHROME_DBUS_EXPORT bool Property<std::vector<uint8>>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void Property<std::vector<uint8>>::AppendSetValueToWriter(
+ MessageWriter* writer);
+extern template class CHROME_DBUS_EXPORT Property<std::vector<uint8>>;
+
+template <>
+CHROME_DBUS_EXPORT bool
+Property<std::map<std::string, std::string>>::PopValueFromReader(
+ MessageReader* reader);
+template <>
+CHROME_DBUS_EXPORT void
+Property<std::map<std::string, std::string>>::AppendSetValueToWriter(
MessageWriter* writer);
-extern template class Property<std::map<std::string, std::string>>;
+extern template class CHROME_DBUS_EXPORT
+ Property<std::map<std::string, std::string>>;
template <>
-bool Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>::
+CHROME_DBUS_EXPORT bool
+Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>::
PopValueFromReader(MessageReader* reader);
template <>
-void Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>::
+CHROME_DBUS_EXPORT void
+Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>::
AppendSetValueToWriter(MessageWriter* writer);
-extern template class Property<
- std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>;
+extern template class CHROME_DBUS_EXPORT
+ Property<std::vector<std::pair<std::vector<uint8_t>, uint16_t>>>;
+
+#pragma GCC diagnostic pop
} // namespace dbus