1c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz/*
2c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * Copyright (C) 2018 The Android Open Source Project
3c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz *
4c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * Licensed under the Apache License, Version 2.0 (the "License");
5c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * you may not use this file except in compliance with the License.
6c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * You may obtain a copy of the License at
7c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz *
8c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz *      http://www.apache.org/licenses/LICENSE-2.0
9c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz *
10c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * Unless required by applicable law or agreed to in writing, software
11c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * distributed under the License is distributed on an "AS IS" BASIS,
12c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * See the License for the specific language governing permissions and
14c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz * limitations under the License.
15c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz */
16c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
17c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz#define LOG_TAG "StatsDimensionsValue"
18c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
19c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz#include "android/os/StatsDimensionsValue.h"
20c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
21c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz#include <cutils/log.h>
22c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
23c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatzusing android::Parcel;
24c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatzusing android::Parcelable;
25c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatzusing android::status_t;
26c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatzusing std::vector;
27c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
28c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatznamespace android {
29c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatznamespace os {
30c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
31c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue() {};
32c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
33c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue(int32_t field, String16 value) :
34c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mField(field),
35c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mValueType(kStrValueType),
36c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mStrValue(value) {
37c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
38c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue(int32_t field, int32_t value) :
39c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mField(field),
40c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mValueType(kIntValueType),
41c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mIntValue(value) {
42c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
43c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue(int32_t field, int64_t value) :
44c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mField(field),
45c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mValueType(kLongValueType),
46c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mLongValue(value) {
47c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
48c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue(int32_t field, bool value) :
49c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mField(field),
50c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mValueType(kBoolValueType),
51c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mBoolValue(value) {
52c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
53c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue(int32_t field, float value) :
54c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mField(field),
55c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mValueType(kFloatValueType),
56c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mFloatValue(value) {
57c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
58c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::StatsDimensionsValue(int32_t field, vector<StatsDimensionsValue> value) :
59c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mField(field),
60c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mValueType(kTupleValueType),
61c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    mTupleValue(value) {
62c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
63c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
64c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::~StatsDimensionsValue() {}
65c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
66c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatzstatus_t
67c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::writeToParcel(Parcel* out) const {
68c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    status_t err ;
69c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
70c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    err = out->writeInt32(mField);
71c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    if (err != NO_ERROR) {
72c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        return err;
73c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    }
74c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    err = out->writeInt32(mValueType);
75c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    if (err != NO_ERROR) {
76c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        return err;
77c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    }
78c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    switch (mValueType) {
79c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        case kStrValueType:
80c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            err = out->writeString16(mStrValue);
81c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
82c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        case kIntValueType:
83c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            err = out->writeInt32(mIntValue);
84c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
85c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        case kLongValueType:
86c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            err = out->writeInt64(mLongValue);
87c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
88c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        case kBoolValueType:
89c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            err = out->writeBool(mBoolValue);
90c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
91c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        case kFloatValueType:
92c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            err = out->writeFloat(mFloatValue);
93c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
94c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        case kTupleValueType:
95c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            {
96c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                int sz = mTupleValue.size();
97c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                err = out->writeInt32(sz);
98c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                if (err != NO_ERROR) {
99c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                    return err;
100c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                }
101c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                for (int i = 0; i < sz; ++i) {
102c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                    err = mTupleValue[i].writeToParcel(out);
103c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                    if (err != NO_ERROR) {
104c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                        return err;
105c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                    }
106c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz                }
107c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            }
108c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
109c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz        default:
110c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            err = UNKNOWN_ERROR;
111c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz            break;
112c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    }
113c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    return err;
114c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
115c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
116c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatzstatus_t
117c697797d43b6932fc7cca1c8d7d850c3fb4d1452BookatzStatsDimensionsValue::readFromParcel(const Parcel* in)
118c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz{
119c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    // Implement me if desired. We don't currently use this.
120c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    ALOGE("Cannot do c++ StatsDimensionsValue.readFromParcel(); it is not implemented.");
121c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    (void)in; // To prevent compile error of unused parameter 'in'
122c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz    return UNKNOWN_ERROR;
123c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}
124c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz
125c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}  // namespace os
126c697797d43b6932fc7cca1c8d7d850c3fb4d1452Bookatz}  // namespace android
127