MediaMetrics: Move Item::Prop to the start of the class

This improves clarity.

Test: atest mediametrics_tests
Bug: 138583596
Change-Id: Ib02e2c8f226278c627d5e0feac5a4ec7e7a6c49f
diff --git a/media/libmediametrics/include/MediaMetricsItem.h b/media/libmediametrics/include/MediaMetricsItem.h
index f844c82..880a8c9 100644
--- a/media/libmediametrics/include/MediaMetricsItem.h
+++ b/media/libmediametrics/include/MediaMetricsItem.h
@@ -619,6 +619,164 @@
 class Item : public mediametrics::BaseItem {
 public:
 
+    class Prop {
+    public:
+        using Elem = std::variant<
+                std::monostate,               // kTypeNone
+                int32_t,                      // kTypeInt32
+                int64_t,                      // kTypeInt64
+                double,                       // kTypeDouble
+                std::string,                  // kTypeCString
+                std::pair<int64_t, int64_t>   // kTypeRate
+                >;
+
+        Prop() = default;
+        Prop(const Prop& other) {
+           *this = other;
+        }
+        Prop& operator=(const Prop& other) {
+            mName = other.mName;
+            mElem = other.mElem;
+            return *this;
+        }
+        Prop(Prop&& other) {
+            *this = std::move(other);
+        }
+        Prop& operator=(Prop&& other) {
+            mName = std::move(other.mName);
+            mElem = std::move(other.mElem);
+            return *this;
+        }
+
+        bool operator==(const Prop& other) const {
+            return mName == other.mName && mElem == other.mElem;
+        }
+        bool operator!=(const Prop& other) const {
+            return !(*this == other);
+        }
+
+        void clear() {
+            mName.clear();
+            mElem = std::monostate{};
+        }
+        void clearValue() {
+            mElem = std::monostate{};
+        }
+
+        const char *getName() const {
+            return mName.c_str();
+        }
+
+        void swap(Prop& other) {
+            std::swap(mName, other.mName);
+            std::swap(mElem, other.mElem);
+        }
+
+        void setName(const char *name) {
+            mName = name;
+        }
+
+        bool isNamed(const char *name) const {
+            return mName == name;
+        }
+
+        template <typename T> void visit(T f) const {
+            std::visit(f, mElem);
+        }
+
+        template <typename T> bool get(T *value) const {
+            auto pval = std::get_if<T>(&mElem);
+            if (pval != nullptr) {
+                *value = *pval;
+                return true;
+            }
+            return false;
+        }
+
+        const Elem& get() const {
+            return mElem;
+        }
+
+        template <typename T> void set(const T& value) {
+            mElem = value;
+        }
+
+        template <typename T> void add(const T& value) {
+            auto pval = std::get_if<T>(&mElem);
+            if (pval != nullptr) {
+                *pval += value;
+            } else {
+                mElem = value;
+            }
+        }
+
+        template <> void add(const std::pair<int64_t, int64_t>& value) {
+            auto pval = std::get_if<std::pair<int64_t, int64_t>>(&mElem);
+            if (pval != nullptr) {
+                pval->first += value.first;
+                pval->second += value.second;
+            } else {
+                mElem = value;
+            }
+        }
+
+        status_t writeToParcel(Parcel *parcel) const {
+            return std::visit([this, parcel](auto &value) {
+                    return BaseItem::writeToParcel(mName.c_str(), value, parcel);}, mElem);
+        }
+
+        void toStringBuffer(char *buffer, size_t length) const {
+            return std::visit([this, buffer, length](auto &value) {
+                BaseItem::toStringBuffer(mName.c_str(), value, buffer, length);}, mElem);
+        }
+
+        size_t getByteStringSize() const {
+            return std::visit([this](auto &value) {
+                return BaseItem::sizeOfByteString(mName.c_str(), value);}, mElem);
+        }
+
+        status_t writeToByteString(char **bufferpptr, char *bufferptrmax) const {
+            return std::visit([this, bufferpptr, bufferptrmax](auto &value) {
+                return BaseItem::writeToByteString(mName.c_str(), value, bufferpptr, bufferptrmax);
+            }, mElem);
+        }
+
+        status_t readFromParcel(const Parcel& data);
+
+        status_t readFromByteString(const char **bufferpptr, const char *bufferptrmax);
+
+    private:
+        std::string mName;
+        Elem mElem;
+    };
+
+    // Iteration of props within item
+    class iterator {
+    public:
+        iterator(const std::map<std::string, Prop>::const_iterator &_it) : it(_it) { }
+        iterator &operator++() {
+            ++it;
+            return *this;
+        }
+        bool operator!=(iterator &other) const {
+            return it != other.it;
+        }
+        const Prop &operator*() const {
+            return it->second;
+        }
+
+    private:
+        std::map<std::string, Prop>::const_iterator it;
+    };
+
+    iterator begin() const {
+        return iterator(mProps.cbegin());
+    }
+
+    iterator end() const {
+        return iterator(mProps.cend());
+    }
+
         enum {
             PROTO_V0 = 0,
             PROTO_FIRST = PROTO_V0,
@@ -820,164 +978,6 @@
     int32_t writeToParcel0(Parcel *) const;
     int32_t readFromParcel0(const Parcel&);
 
-public:
-
-    class Prop {
-    public:
-        using Elem = std::variant<
-                std::monostate,               // kTypeNone
-                int32_t,                      // kTypeInt32
-                int64_t,                      // kTypeInt64
-                double,                       // kTypeDouble
-                std::string,                  // kTypeCString
-                std::pair<int64_t, int64_t>   // kTypeRate
-                >;
-
-        Prop() = default;
-        Prop(const Prop& other) {
-           *this = other;
-        }
-        Prop& operator=(const Prop& other) {
-            mName = other.mName;
-            mElem = other.mElem;
-            return *this;
-        }
-        Prop(Prop&& other) {
-            *this = std::move(other);
-        }
-        Prop& operator=(Prop&& other) {
-            mName = std::move(other.mName);
-            mElem = std::move(other.mElem);
-            return *this;
-        }
-
-        bool operator==(const Prop& other) const {
-            return mName == other.mName && mElem == other.mElem;
-        }
-        bool operator!=(const Prop& other) const {
-            return !(*this == other);
-        }
-
-        void clear() {
-            mName.clear();
-            mElem = std::monostate{};
-        }
-        void clearValue() {
-            mElem = std::monostate{};
-        }
-
-        const char *getName() const {
-            return mName.c_str();
-        }
-
-        void swap(Prop& other) {
-            std::swap(mName, other.mName);
-            std::swap(mElem, other.mElem);
-        }
-
-        void setName(const char *name) {
-            mName = name;
-        }
-
-        bool isNamed(const char *name) const {
-            return mName == name;
-        }
-
-        template <typename T> void visit(T f) const {
-            std::visit(f, mElem);
-        }
-
-        template <typename T> bool get(T *value) const {
-            auto pval = std::get_if<T>(&mElem);
-            if (pval != nullptr) {
-                *value = *pval;
-                return true;
-            }
-            return false;
-        }
-
-        template <typename T> void set(const T& value) {
-            mElem = value;
-        }
-
-        template <typename T> void add(const T& value) {
-            auto pval = std::get_if<T>(&mElem);
-            if (pval != nullptr) {
-                *pval += value;
-            } else {
-                mElem = value;
-            }
-        }
-
-        template <> void add(const std::pair<int64_t, int64_t>& value) {
-            auto pval = std::get_if<std::pair<int64_t, int64_t>>(&mElem);
-            if (pval != nullptr) {
-                pval->first += value.first;
-                pval->second += value.second;
-            } else {
-                mElem = value;
-            }
-        }
-
-        status_t writeToParcel(Parcel *parcel) const {
-            return std::visit([this, parcel](auto &value) {
-                    return BaseItem::writeToParcel(mName.c_str(), value, parcel);}, mElem);
-        }
-
-        void toStringBuffer(char *buffer, size_t length) const {
-            return std::visit([this, buffer, length](auto &value) {
-                BaseItem::toStringBuffer(mName.c_str(), value, buffer, length);}, mElem);
-        }
-
-        size_t getByteStringSize() const {
-            return std::visit([this](auto &value) {
-                return BaseItem::sizeOfByteString(mName.c_str(), value);}, mElem);
-        }
-
-        status_t writeToByteString(char **bufferpptr, char *bufferptrmax) const {
-            return std::visit([this, bufferpptr, bufferptrmax](auto &value) {
-                return BaseItem::writeToByteString(mName.c_str(), value, bufferpptr, bufferptrmax);
-            }, mElem);
-        }
-
-        status_t readFromParcel(const Parcel& data);
-
-        status_t readFromByteString(const char **bufferpptr, const char *bufferptrmax);
-
-    private:
-        std::string mName;
-        Elem mElem;
-    };
-
-    // Iteration of props within item
-    class iterator {
-    public:
-        iterator(const std::map<std::string, Prop>::const_iterator &_it) : it(_it) { }
-        iterator &operator++() {
-            ++it;
-            return *this;
-        }
-        bool operator!=(iterator &other) const {
-            return it != other.it;
-        }
-        const Prop &operator*() const {
-            return it->second;
-        }
-
-    private:
-        std::map<std::string, Prop>::const_iterator it;
-    };
-
-    iterator begin() const {
-        return iterator(mProps.cbegin());
-    }
-
-    iterator end() const {
-        return iterator(mProps.cend());
-    }
-
-private:
-
     const Prop *findProp(const char *key) const {
         auto it = mProps.find(key);
         return it != mProps.end() ? &it->second : nullptr;