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