Commit 664b97cc authored by Allen Bauer's avatar Allen Bauer Committed by Commit Bot

Pass the class property name and type strings into the metadata constructor.

Bug: 938501
Change-Id: I39d9693833ac8f2c1ffb2f3c307edb303382bf39
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2404948
Commit-Queue: Allen Bauer <kylixrd@chromium.org>
Reviewed-by: default avatarPeter Kasting <pkasting@chromium.org>
Cr-Commit-Position: refs/heads/master@{#806282}
parent 55eba1c2
......@@ -30,21 +30,17 @@
std::unique_ptr<METADATA_PROPERTY_TYPE_INTERNAL(property_type, \
property_name)> \
property_name##_prop = std::make_unique<METADATA_PROPERTY_TYPE_INTERNAL( \
property_type, property_name)>(); \
property_name##_prop->SetMemberName(#property_name); \
property_name##_prop->SetMemberType(#property_type); \
property_type, property_name)>(#property_name, #property_type); \
AddMemberData(std::move(property_name##_prop));
// This will fail to compile if the property accessor isn't in the form of
// GetXXXX.
#define ADD_READONLY_PROPERTY_METADATA(property_type, property_name) \
std::unique_ptr<METADATA_READONLY_PROPERTY_TYPE_INTERNAL(property_type, \
property_name)> \
property_name##_prop = \
std::make_unique<METADATA_READONLY_PROPERTY_TYPE_INTERNAL( \
property_type, property_name)>(); \
property_name##_prop->SetMemberName(#property_name); \
property_name##_prop->SetMemberType(#property_type); \
#define ADD_READONLY_PROPERTY_METADATA(property_type, property_name) \
std::unique_ptr<METADATA_READONLY_PROPERTY_TYPE_INTERNAL(property_type, \
property_name)> \
property_name##_prop = \
std::make_unique<METADATA_READONLY_PROPERTY_TYPE_INTERNAL( \
property_type, property_name)>(#property_name, #property_type); \
AddMemberData(std::move(property_name##_prop));
#endif // UI_VIEWS_METADATA_METADATA_IMPL_MACROS_H_
......@@ -128,7 +128,9 @@ class VIEWS_EXPORT ClassMetaData {
// accessors to get/set the value of the member on an object.
class VIEWS_EXPORT MemberMetaDataBase {
public:
MemberMetaDataBase() = default;
MemberMetaDataBase(const std::string& member_name,
const std::string& member_type)
: member_name_(member_name), member_type_(member_type) {}
virtual ~MemberMetaDataBase() = default;
// Access the value of this member and return it as a string.
......@@ -144,8 +146,6 @@ class VIEWS_EXPORT MemberMetaDataBase {
// Return various information flags about the property.
virtual PropertyFlags GetPropertyFlags() const = 0;
void SetMemberName(const char* name) { member_name_ = name; }
void SetMemberType(const char* type) { member_type_ = type; }
const std::string& member_name() const { return member_name_; }
const std::string& member_type() const { return member_type_; }
......
......@@ -27,7 +27,7 @@ template <typename TClass,
TRet (TClass::*Get)() const>
class ClassPropertyReadOnlyMetaData : public MemberMetaDataBase {
public:
ClassPropertyReadOnlyMetaData() = default;
using MemberMetaDataBase::MemberMetaDataBase;
~ClassPropertyReadOnlyMetaData() override = default;
base::string16 GetValueAsString(void* obj) const override {
......@@ -56,7 +56,8 @@ template <typename TClass,
class ClassPropertyMetaData
: public ClassPropertyReadOnlyMetaData<TClass, TValue, TRet, Get> {
public:
ClassPropertyMetaData() = default;
using ClassPropertyReadOnlyMetaData<TClass, TValue, TRet, Get>::
ClassPropertyReadOnlyMetaData;
~ClassPropertyMetaData() override = default;
void SetValueAsString(void* obj, const base::string16& new_value) override {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment