15ccb8f90Sopenharmony_ci/*
25ccb8f90Sopenharmony_ci * Copyright (c) 2022 Huawei Device Co., Ltd.
35ccb8f90Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
45ccb8f90Sopenharmony_ci * you may not use this file except in compliance with the License.
55ccb8f90Sopenharmony_ci * You may obtain a copy of the License at
65ccb8f90Sopenharmony_ci *
75ccb8f90Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
85ccb8f90Sopenharmony_ci *
95ccb8f90Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
105ccb8f90Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
115ccb8f90Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
125ccb8f90Sopenharmony_ci * See the License for the specific language governing permissions and
135ccb8f90Sopenharmony_ci * limitations under the License.
145ccb8f90Sopenharmony_ci */
155ccb8f90Sopenharmony_ci
165ccb8f90Sopenharmony_ci#include "parcel.h"
175ccb8f90Sopenharmony_ci
185ccb8f90Sopenharmony_cinamespace OHOS {
195ccb8f90Sopenharmony_ci
205ccb8f90Sopenharmony_cistatic const size_t DEFAULT_CPACITY = 204800; // 200K
215ccb8f90Sopenharmony_ci
225ccb8f90Sopenharmony_ciParcelable::Parcelable() : Parcelable(false) {}
235ccb8f90Sopenharmony_ci
245ccb8f90Sopenharmony_ciParcelable::Parcelable(bool asRemote)
255ccb8f90Sopenharmony_ci{
265ccb8f90Sopenharmony_ci    asRemote_ = asRemote;
275ccb8f90Sopenharmony_ci    behavior_ = 0;
285ccb8f90Sopenharmony_ci}
295ccb8f90Sopenharmony_ci
305ccb8f90Sopenharmony_ciParcel::Parcel(Allocator* allocator)
315ccb8f90Sopenharmony_ci{
325ccb8f90Sopenharmony_ci    if (allocator != nullptr) {
335ccb8f90Sopenharmony_ci        allocator_ = allocator;
345ccb8f90Sopenharmony_ci    } else {
355ccb8f90Sopenharmony_ci        allocator_ = new DefaultAllocator();
365ccb8f90Sopenharmony_ci    }
375ccb8f90Sopenharmony_ci
385ccb8f90Sopenharmony_ci    writeCursor_ = 0;
395ccb8f90Sopenharmony_ci    readCursor_ = 0;
405ccb8f90Sopenharmony_ci
415ccb8f90Sopenharmony_ci    data_ = nullptr;
425ccb8f90Sopenharmony_ci    dataSize_ = 0;
435ccb8f90Sopenharmony_ci    dataCapacity_ = 0;
445ccb8f90Sopenharmony_ci
455ccb8f90Sopenharmony_ci    maxDataCapacity_ = DEFAULT_CPACITY;
465ccb8f90Sopenharmony_ci    objectOffsets_ = nullptr;
475ccb8f90Sopenharmony_ci    objectCursor_ = 0;
485ccb8f90Sopenharmony_ci    objectsCapacity_ = 0;
495ccb8f90Sopenharmony_ci}
505ccb8f90Sopenharmony_ci
515ccb8f90Sopenharmony_ciParcel::Parcel() : Parcel(new DefaultAllocator()) {}
525ccb8f90Sopenharmony_ci
535ccb8f90Sopenharmony_ciParcel::~Parcel()
545ccb8f90Sopenharmony_ci{
555ccb8f90Sopenharmony_ci    FlushBuffer();
565ccb8f90Sopenharmony_ci    delete allocator_;
575ccb8f90Sopenharmony_ci}
585ccb8f90Sopenharmony_ci
595ccb8f90Sopenharmony_cisize_t Parcel::GetWritableBytes() const
605ccb8f90Sopenharmony_ci{
615ccb8f90Sopenharmony_ci    return 0;
625ccb8f90Sopenharmony_ci}
635ccb8f90Sopenharmony_ci
645ccb8f90Sopenharmony_cisize_t Parcel::GetReadableBytes() const
655ccb8f90Sopenharmony_ci{
665ccb8f90Sopenharmony_ci    return 0;
675ccb8f90Sopenharmony_ci}
685ccb8f90Sopenharmony_ci
695ccb8f90Sopenharmony_cisize_t Parcel::CalcNewCapacity(size_t minNewCapacity)
705ccb8f90Sopenharmony_ci{
715ccb8f90Sopenharmony_ci    (void)minNewCapacity;
725ccb8f90Sopenharmony_ci    return 0;
735ccb8f90Sopenharmony_ci}
745ccb8f90Sopenharmony_ci
755ccb8f90Sopenharmony_cibool Parcel::EnsureWritableCapacity(size_t desireCapacity)
765ccb8f90Sopenharmony_ci{
775ccb8f90Sopenharmony_ci    (void)desireCapacity;
785ccb8f90Sopenharmony_ci    return false;
795ccb8f90Sopenharmony_ci}
805ccb8f90Sopenharmony_ci
815ccb8f90Sopenharmony_cisize_t Parcel::GetDataSize() const
825ccb8f90Sopenharmony_ci{
835ccb8f90Sopenharmony_ci    return dataSize_;
845ccb8f90Sopenharmony_ci}
855ccb8f90Sopenharmony_ci
865ccb8f90Sopenharmony_ciuintptr_t Parcel::GetData() const
875ccb8f90Sopenharmony_ci{
885ccb8f90Sopenharmony_ci    return reinterpret_cast<uintptr_t>(data_);
895ccb8f90Sopenharmony_ci}
905ccb8f90Sopenharmony_ci
915ccb8f90Sopenharmony_cibinder_size_t Parcel::GetObjectOffsets() const
925ccb8f90Sopenharmony_ci{
935ccb8f90Sopenharmony_ci    return reinterpret_cast<binder_size_t>(objectOffsets_);
945ccb8f90Sopenharmony_ci}
955ccb8f90Sopenharmony_ci
965ccb8f90Sopenharmony_cisize_t Parcel::GetOffsetsSize() const
975ccb8f90Sopenharmony_ci{
985ccb8f90Sopenharmony_ci    return objectCursor_;
995ccb8f90Sopenharmony_ci}
1005ccb8f90Sopenharmony_ci
1015ccb8f90Sopenharmony_cisize_t Parcel::GetDataCapacity() const
1025ccb8f90Sopenharmony_ci{
1035ccb8f90Sopenharmony_ci    return dataCapacity_;
1045ccb8f90Sopenharmony_ci}
1055ccb8f90Sopenharmony_ci
1065ccb8f90Sopenharmony_cibool Parcel::SetMaxCapacity(size_t maxCapacity)
1075ccb8f90Sopenharmony_ci{
1085ccb8f90Sopenharmony_ci    (void)maxCapacity;
1095ccb8f90Sopenharmony_ci    return false;
1105ccb8f90Sopenharmony_ci}
1115ccb8f90Sopenharmony_ci
1125ccb8f90Sopenharmony_cibool Parcel::SetAllocator(Allocator* allocator)
1135ccb8f90Sopenharmony_ci{
1145ccb8f90Sopenharmony_ci    (void)allocator;
1155ccb8f90Sopenharmony_ci    return false;
1165ccb8f90Sopenharmony_ci}
1175ccb8f90Sopenharmony_ci
1185ccb8f90Sopenharmony_cibool Parcel::CheckOffsets()
1195ccb8f90Sopenharmony_ci{
1205ccb8f90Sopenharmony_ci    return false;
1215ccb8f90Sopenharmony_ci}
1225ccb8f90Sopenharmony_ci
1235ccb8f90Sopenharmony_civoid Parcel::InjectOffsets(binder_size_t offsets, size_t offsetSize)
1245ccb8f90Sopenharmony_ci{
1255ccb8f90Sopenharmony_ci    (void)offsets;
1265ccb8f90Sopenharmony_ci    (void)offsetSize;
1275ccb8f90Sopenharmony_ci}
1285ccb8f90Sopenharmony_ci
1295ccb8f90Sopenharmony_civoid Parcel::FlushBuffer()
1305ccb8f90Sopenharmony_ci{
1315ccb8f90Sopenharmony_ci    if (allocator_ == nullptr) {
1325ccb8f90Sopenharmony_ci        return;
1335ccb8f90Sopenharmony_ci    }
1345ccb8f90Sopenharmony_ci
1355ccb8f90Sopenharmony_ci    if (data_ != nullptr) {
1365ccb8f90Sopenharmony_ci        allocator_->Dealloc(data_);
1375ccb8f90Sopenharmony_ci        dataSize_ = 0;
1385ccb8f90Sopenharmony_ci        writeCursor_ = 0;
1395ccb8f90Sopenharmony_ci        readCursor_ = 0;
1405ccb8f90Sopenharmony_ci        dataCapacity_ = 0;
1415ccb8f90Sopenharmony_ci        data_ = nullptr;
1425ccb8f90Sopenharmony_ci    }
1435ccb8f90Sopenharmony_ci
1445ccb8f90Sopenharmony_ci    if (objectOffsets_) {
1455ccb8f90Sopenharmony_ci        objectHolder_.clear();
1465ccb8f90Sopenharmony_ci        free(objectOffsets_);
1475ccb8f90Sopenharmony_ci        objectCursor_ = 0;
1485ccb8f90Sopenharmony_ci        objectOffsets_ = nullptr;
1495ccb8f90Sopenharmony_ci        objectsCapacity_ = 0;
1505ccb8f90Sopenharmony_ci    }
1515ccb8f90Sopenharmony_ci}
1525ccb8f90Sopenharmony_ci
1535ccb8f90Sopenharmony_cibool Parcel::SetDataCapacity(size_t newCapacity)
1545ccb8f90Sopenharmony_ci{
1555ccb8f90Sopenharmony_ci    (void)newCapacity;
1565ccb8f90Sopenharmony_ci    return false;
1575ccb8f90Sopenharmony_ci}
1585ccb8f90Sopenharmony_ci
1595ccb8f90Sopenharmony_cibool Parcel::SetDataSize(size_t dataSize)
1605ccb8f90Sopenharmony_ci{
1615ccb8f90Sopenharmony_ci    (void)dataSize;
1625ccb8f90Sopenharmony_ci    return false;
1635ccb8f90Sopenharmony_ci}
1645ccb8f90Sopenharmony_ci
1655ccb8f90Sopenharmony_cibool Parcel::WriteDataBytes(const void* data, size_t size)
1665ccb8f90Sopenharmony_ci{
1675ccb8f90Sopenharmony_ci    (void)data;
1685ccb8f90Sopenharmony_ci    (void)size;
1695ccb8f90Sopenharmony_ci    return false;
1705ccb8f90Sopenharmony_ci}
1715ccb8f90Sopenharmony_ci
1725ccb8f90Sopenharmony_civoid Parcel::WritePadBytes(size_t padSize)
1735ccb8f90Sopenharmony_ci{
1745ccb8f90Sopenharmony_ci    (void)padSize;
1755ccb8f90Sopenharmony_ci}
1765ccb8f90Sopenharmony_ci
1775ccb8f90Sopenharmony_cibool Parcel::WriteBuffer(const void* data, size_t size)
1785ccb8f90Sopenharmony_ci{
1795ccb8f90Sopenharmony_ci    (void)data;
1805ccb8f90Sopenharmony_ci    (void)size;
1815ccb8f90Sopenharmony_ci    return false;
1825ccb8f90Sopenharmony_ci}
1835ccb8f90Sopenharmony_ci
1845ccb8f90Sopenharmony_cibool Parcel::WriteBufferAddTerminator(const void* data, size_t size, size_t typeSize)
1855ccb8f90Sopenharmony_ci{
1865ccb8f90Sopenharmony_ci    (void)data;
1875ccb8f90Sopenharmony_ci    (void)size;
1885ccb8f90Sopenharmony_ci    (void)typeSize;
1895ccb8f90Sopenharmony_ci    return false;
1905ccb8f90Sopenharmony_ci}
1915ccb8f90Sopenharmony_ci
1925ccb8f90Sopenharmony_cibool Parcel::WriteUnpadBuffer(const void* data, size_t size)
1935ccb8f90Sopenharmony_ci{
1945ccb8f90Sopenharmony_ci    return WriteBuffer(data, size);
1955ccb8f90Sopenharmony_ci}
1965ccb8f90Sopenharmony_ci
1975ccb8f90Sopenharmony_citemplate <typename T>
1985ccb8f90Sopenharmony_cibool Parcel::Write(T value)
1995ccb8f90Sopenharmony_ci{
2005ccb8f90Sopenharmony_ci    (void)value;
2015ccb8f90Sopenharmony_ci    return false;
2025ccb8f90Sopenharmony_ci}
2035ccb8f90Sopenharmony_ci
2045ccb8f90Sopenharmony_cibool Parcel::WriteBool(bool value)
2055ccb8f90Sopenharmony_ci{
2065ccb8f90Sopenharmony_ci    return Write<int32_t>(static_cast<int32_t>(value));
2075ccb8f90Sopenharmony_ci}
2085ccb8f90Sopenharmony_ci
2095ccb8f90Sopenharmony_cibool Parcel::WriteBoolUnaligned(bool value)
2105ccb8f90Sopenharmony_ci{
2115ccb8f90Sopenharmony_ci    return Write<bool>(value);
2125ccb8f90Sopenharmony_ci}
2135ccb8f90Sopenharmony_ci
2145ccb8f90Sopenharmony_cibool Parcel::WriteInt8(int8_t value)
2155ccb8f90Sopenharmony_ci{
2165ccb8f90Sopenharmony_ci    return Write<int32_t>(static_cast<int32_t>(value));
2175ccb8f90Sopenharmony_ci}
2185ccb8f90Sopenharmony_ci
2195ccb8f90Sopenharmony_cibool Parcel::WriteInt8Unaligned(int8_t value)
2205ccb8f90Sopenharmony_ci{
2215ccb8f90Sopenharmony_ci    return Write<int8_t>(value);
2225ccb8f90Sopenharmony_ci}
2235ccb8f90Sopenharmony_ci
2245ccb8f90Sopenharmony_cibool Parcel::WriteInt16(int16_t value)
2255ccb8f90Sopenharmony_ci{
2265ccb8f90Sopenharmony_ci    return Write<int32_t>(static_cast<int32_t>(value));
2275ccb8f90Sopenharmony_ci}
2285ccb8f90Sopenharmony_ci
2295ccb8f90Sopenharmony_cibool Parcel::WriteInt16Unaligned(int16_t value)
2305ccb8f90Sopenharmony_ci{
2315ccb8f90Sopenharmony_ci    return Write<int16_t>(value);
2325ccb8f90Sopenharmony_ci}
2335ccb8f90Sopenharmony_ci
2345ccb8f90Sopenharmony_cibool Parcel::WriteInt32(int32_t value)
2355ccb8f90Sopenharmony_ci{
2365ccb8f90Sopenharmony_ci    return Write<int32_t>(value);
2375ccb8f90Sopenharmony_ci}
2385ccb8f90Sopenharmony_ci
2395ccb8f90Sopenharmony_cibool Parcel::WriteInt64(int64_t value)
2405ccb8f90Sopenharmony_ci{
2415ccb8f90Sopenharmony_ci    return Write<int64_t>(value);
2425ccb8f90Sopenharmony_ci}
2435ccb8f90Sopenharmony_ci
2445ccb8f90Sopenharmony_cibool Parcel::WriteUint8(uint8_t value)
2455ccb8f90Sopenharmony_ci{
2465ccb8f90Sopenharmony_ci    return Write<uint32_t>(static_cast<uint32_t>(value));
2475ccb8f90Sopenharmony_ci}
2485ccb8f90Sopenharmony_ci
2495ccb8f90Sopenharmony_cibool Parcel::WriteUint8Unaligned(uint8_t value)
2505ccb8f90Sopenharmony_ci{
2515ccb8f90Sopenharmony_ci    return Write<uint8_t>(value);
2525ccb8f90Sopenharmony_ci}
2535ccb8f90Sopenharmony_ci
2545ccb8f90Sopenharmony_cibool Parcel::WriteUint16(uint16_t value)
2555ccb8f90Sopenharmony_ci{
2565ccb8f90Sopenharmony_ci    return Write<uint32_t>(static_cast<uint32_t>(value));
2575ccb8f90Sopenharmony_ci}
2585ccb8f90Sopenharmony_ci
2595ccb8f90Sopenharmony_cibool Parcel::WriteUint16Unaligned(uint16_t value)
2605ccb8f90Sopenharmony_ci{
2615ccb8f90Sopenharmony_ci    return Write<uint16_t>(value);
2625ccb8f90Sopenharmony_ci}
2635ccb8f90Sopenharmony_ci
2645ccb8f90Sopenharmony_cibool Parcel::WriteUint32(uint32_t value)
2655ccb8f90Sopenharmony_ci{
2665ccb8f90Sopenharmony_ci    return Write<uint32_t>(value);
2675ccb8f90Sopenharmony_ci}
2685ccb8f90Sopenharmony_ci
2695ccb8f90Sopenharmony_cibool Parcel::WriteUint64(uint64_t value)
2705ccb8f90Sopenharmony_ci{
2715ccb8f90Sopenharmony_ci    return Write<uint64_t>(value);
2725ccb8f90Sopenharmony_ci}
2735ccb8f90Sopenharmony_ci
2745ccb8f90Sopenharmony_cibool Parcel::WriteFloat(float value)
2755ccb8f90Sopenharmony_ci{
2765ccb8f90Sopenharmony_ci    return Write<float>(value);
2775ccb8f90Sopenharmony_ci}
2785ccb8f90Sopenharmony_ci
2795ccb8f90Sopenharmony_cibool Parcel::WriteDouble(double value)
2805ccb8f90Sopenharmony_ci{
2815ccb8f90Sopenharmony_ci    return Write<double>(value);
2825ccb8f90Sopenharmony_ci}
2835ccb8f90Sopenharmony_ci
2845ccb8f90Sopenharmony_cibool Parcel::WritePointer(uintptr_t value)
2855ccb8f90Sopenharmony_ci{
2865ccb8f90Sopenharmony_ci    return Write<binder_uintptr_t>(value);
2875ccb8f90Sopenharmony_ci}
2885ccb8f90Sopenharmony_ci
2895ccb8f90Sopenharmony_cibool Parcel::WriteCString(const char* value)
2905ccb8f90Sopenharmony_ci{
2915ccb8f90Sopenharmony_ci    (void)value;
2925ccb8f90Sopenharmony_ci    return false;
2935ccb8f90Sopenharmony_ci}
2945ccb8f90Sopenharmony_ci
2955ccb8f90Sopenharmony_cibool Parcel::WriteString(const std::string& value)
2965ccb8f90Sopenharmony_ci{
2975ccb8f90Sopenharmony_ci    (void)value;
2985ccb8f90Sopenharmony_ci    return false;
2995ccb8f90Sopenharmony_ci}
3005ccb8f90Sopenharmony_ci
3015ccb8f90Sopenharmony_cibool Parcel::WriteString16(const std::u16string& value)
3025ccb8f90Sopenharmony_ci{
3035ccb8f90Sopenharmony_ci    (void)value;
3045ccb8f90Sopenharmony_ci    return false;
3055ccb8f90Sopenharmony_ci}
3065ccb8f90Sopenharmony_ci
3075ccb8f90Sopenharmony_cibool Parcel::WriteString16WithLength(const char16_t* value, size_t len)
3085ccb8f90Sopenharmony_ci{
3095ccb8f90Sopenharmony_ci    (void)value;
3105ccb8f90Sopenharmony_ci    (void)len;
3115ccb8f90Sopenharmony_ci    return false;
3125ccb8f90Sopenharmony_ci}
3135ccb8f90Sopenharmony_ci
3145ccb8f90Sopenharmony_cibool Parcel::WriteString8WithLength(const char* value, size_t len)
3155ccb8f90Sopenharmony_ci{
3165ccb8f90Sopenharmony_ci    (void)value;
3175ccb8f90Sopenharmony_ci    (void)len;
3185ccb8f90Sopenharmony_ci    return false;
3195ccb8f90Sopenharmony_ci}
3205ccb8f90Sopenharmony_ci
3215ccb8f90Sopenharmony_cibool Parcel::EnsureObjectsCapacity()
3225ccb8f90Sopenharmony_ci{
3235ccb8f90Sopenharmony_ci    return false;
3245ccb8f90Sopenharmony_ci}
3255ccb8f90Sopenharmony_ci
3265ccb8f90Sopenharmony_cibool Parcel::WriteObjectOffset(binder_size_t offset)
3275ccb8f90Sopenharmony_ci{
3285ccb8f90Sopenharmony_ci    (void)offset;
3295ccb8f90Sopenharmony_ci    return false;
3305ccb8f90Sopenharmony_ci}
3315ccb8f90Sopenharmony_ci
3325ccb8f90Sopenharmony_cibool Parcel::WriteRemoteObject(const Parcelable* object)
3335ccb8f90Sopenharmony_ci{
3345ccb8f90Sopenharmony_ci    (void)object;
3355ccb8f90Sopenharmony_ci    return false;
3365ccb8f90Sopenharmony_ci}
3375ccb8f90Sopenharmony_ci
3385ccb8f90Sopenharmony_cibool Parcel::WriteParcelable(const Parcelable* object)
3395ccb8f90Sopenharmony_ci{
3405ccb8f90Sopenharmony_ci    (void)object;
3415ccb8f90Sopenharmony_ci    return false;
3425ccb8f90Sopenharmony_ci}
3435ccb8f90Sopenharmony_ci
3445ccb8f90Sopenharmony_cibool Parcel::WriteStrongParcelable(const sptr<Parcelable>& object)
3455ccb8f90Sopenharmony_ci{
3465ccb8f90Sopenharmony_ci    (void)object;
3475ccb8f90Sopenharmony_ci    return false;
3485ccb8f90Sopenharmony_ci}
3495ccb8f90Sopenharmony_ci
3505ccb8f90Sopenharmony_citemplate <typename T>
3515ccb8f90Sopenharmony_cibool Parcel::Read(T& value)
3525ccb8f90Sopenharmony_ci{
3535ccb8f90Sopenharmony_ci    (void)value;
3545ccb8f90Sopenharmony_ci    return false;
3555ccb8f90Sopenharmony_ci}
3565ccb8f90Sopenharmony_ci
3575ccb8f90Sopenharmony_citemplate <typename T>
3585ccb8f90Sopenharmony_ciT Parcel::Read()
3595ccb8f90Sopenharmony_ci{
3605ccb8f90Sopenharmony_ci    return 0;
3615ccb8f90Sopenharmony_ci}
3625ccb8f90Sopenharmony_ci
3635ccb8f90Sopenharmony_cibool Parcel::ParseFrom(uintptr_t data, size_t size)
3645ccb8f90Sopenharmony_ci{
3655ccb8f90Sopenharmony_ci    (void)data;
3665ccb8f90Sopenharmony_ci    (void)size;
3675ccb8f90Sopenharmony_ci    return false;
3685ccb8f90Sopenharmony_ci}
3695ccb8f90Sopenharmony_ci
3705ccb8f90Sopenharmony_ciconst uint8_t* Parcel::ReadBuffer(size_t length)
3715ccb8f90Sopenharmony_ci{
3725ccb8f90Sopenharmony_ci    (void)length;
3735ccb8f90Sopenharmony_ci    return nullptr;
3745ccb8f90Sopenharmony_ci}
3755ccb8f90Sopenharmony_ci
3765ccb8f90Sopenharmony_ciconst uint8_t* Parcel::ReadUnpadBuffer(size_t length)
3775ccb8f90Sopenharmony_ci{
3785ccb8f90Sopenharmony_ci    (void)length;
3795ccb8f90Sopenharmony_ci    return nullptr;
3805ccb8f90Sopenharmony_ci}
3815ccb8f90Sopenharmony_ci
3825ccb8f90Sopenharmony_civoid Parcel::SkipBytes(size_t bytes)
3835ccb8f90Sopenharmony_ci{
3845ccb8f90Sopenharmony_ci    (void)bytes;
3855ccb8f90Sopenharmony_ci}
3865ccb8f90Sopenharmony_ci
3875ccb8f90Sopenharmony_cisize_t Parcel::GetReadPosition()
3885ccb8f90Sopenharmony_ci{
3895ccb8f90Sopenharmony_ci    return readCursor_;
3905ccb8f90Sopenharmony_ci}
3915ccb8f90Sopenharmony_ci
3925ccb8f90Sopenharmony_cibool Parcel::RewindRead(size_t newPosition)
3935ccb8f90Sopenharmony_ci{
3945ccb8f90Sopenharmony_ci    (void)newPosition;
3955ccb8f90Sopenharmony_ci    return false;
3965ccb8f90Sopenharmony_ci}
3975ccb8f90Sopenharmony_ci
3985ccb8f90Sopenharmony_cisize_t Parcel::GetWritePosition()
3995ccb8f90Sopenharmony_ci{
4005ccb8f90Sopenharmony_ci    return writeCursor_;
4015ccb8f90Sopenharmony_ci}
4025ccb8f90Sopenharmony_ci
4035ccb8f90Sopenharmony_cibool Parcel::RewindWrite(size_t newPosition)
4045ccb8f90Sopenharmony_ci{
4055ccb8f90Sopenharmony_ci    (void)newPosition;
4065ccb8f90Sopenharmony_ci    return false;
4075ccb8f90Sopenharmony_ci}
4085ccb8f90Sopenharmony_ci
4095ccb8f90Sopenharmony_cibool Parcel::ReadBool()
4105ccb8f90Sopenharmony_ci{
4115ccb8f90Sopenharmony_ci    int32_t temp = Read<int32_t>();
4125ccb8f90Sopenharmony_ci    return (temp != 0);
4135ccb8f90Sopenharmony_ci}
4145ccb8f90Sopenharmony_ci
4155ccb8f90Sopenharmony_cibool Parcel::ReadBoolUnaligned()
4165ccb8f90Sopenharmony_ci{
4175ccb8f90Sopenharmony_ci    return Read<bool>();
4185ccb8f90Sopenharmony_ci}
4195ccb8f90Sopenharmony_ci
4205ccb8f90Sopenharmony_ciint8_t Parcel::ReadInt8()
4215ccb8f90Sopenharmony_ci{
4225ccb8f90Sopenharmony_ci    int32_t temp = Read<int32_t>();
4235ccb8f90Sopenharmony_ci    return static_cast<int8_t>(temp);
4245ccb8f90Sopenharmony_ci}
4255ccb8f90Sopenharmony_ci
4265ccb8f90Sopenharmony_ciint16_t Parcel::ReadInt16()
4275ccb8f90Sopenharmony_ci{
4285ccb8f90Sopenharmony_ci    int32_t temp = Read<int32_t>();
4295ccb8f90Sopenharmony_ci    return static_cast<int16_t>(temp);
4305ccb8f90Sopenharmony_ci}
4315ccb8f90Sopenharmony_ci
4325ccb8f90Sopenharmony_ciint32_t Parcel::ReadInt32()
4335ccb8f90Sopenharmony_ci{
4345ccb8f90Sopenharmony_ci    return Read<int32_t>();
4355ccb8f90Sopenharmony_ci}
4365ccb8f90Sopenharmony_ci
4375ccb8f90Sopenharmony_ciint64_t Parcel::ReadInt64()
4385ccb8f90Sopenharmony_ci{
4395ccb8f90Sopenharmony_ci    return Read<int64_t>();
4405ccb8f90Sopenharmony_ci}
4415ccb8f90Sopenharmony_ci
4425ccb8f90Sopenharmony_ciuint8_t Parcel::ReadUint8()
4435ccb8f90Sopenharmony_ci{
4445ccb8f90Sopenharmony_ci    uint32_t temp = Read<uint32_t>();
4455ccb8f90Sopenharmony_ci    return static_cast<uint8_t>(temp);
4465ccb8f90Sopenharmony_ci}
4475ccb8f90Sopenharmony_ci
4485ccb8f90Sopenharmony_ciuint16_t Parcel::ReadUint16()
4495ccb8f90Sopenharmony_ci{
4505ccb8f90Sopenharmony_ci    uint32_t temp = Read<uint32_t>();
4515ccb8f90Sopenharmony_ci    return static_cast<uint16_t>(temp);
4525ccb8f90Sopenharmony_ci}
4535ccb8f90Sopenharmony_ci
4545ccb8f90Sopenharmony_ciuint32_t Parcel::ReadUint32()
4555ccb8f90Sopenharmony_ci{
4565ccb8f90Sopenharmony_ci    return Read<uint32_t>();
4575ccb8f90Sopenharmony_ci}
4585ccb8f90Sopenharmony_ci
4595ccb8f90Sopenharmony_ciuint64_t Parcel::ReadUint64()
4605ccb8f90Sopenharmony_ci{
4615ccb8f90Sopenharmony_ci    return Read<uint64_t>();
4625ccb8f90Sopenharmony_ci}
4635ccb8f90Sopenharmony_ci
4645ccb8f90Sopenharmony_cifloat Parcel::ReadFloat()
4655ccb8f90Sopenharmony_ci{
4665ccb8f90Sopenharmony_ci    return Read<float>();
4675ccb8f90Sopenharmony_ci}
4685ccb8f90Sopenharmony_ci
4695ccb8f90Sopenharmony_cidouble Parcel::ReadDouble()
4705ccb8f90Sopenharmony_ci{
4715ccb8f90Sopenharmony_ci    return Read<double>();
4725ccb8f90Sopenharmony_ci}
4735ccb8f90Sopenharmony_ci
4745ccb8f90Sopenharmony_citemplate <typename T>
4755ccb8f90Sopenharmony_cibool Parcel::ReadPadded(T& value)
4765ccb8f90Sopenharmony_ci{
4775ccb8f90Sopenharmony_ci    (void)value;
4785ccb8f90Sopenharmony_ci    return false;
4795ccb8f90Sopenharmony_ci}
4805ccb8f90Sopenharmony_ci
4815ccb8f90Sopenharmony_cibool Parcel::ReadBool(bool& value)
4825ccb8f90Sopenharmony_ci{
4835ccb8f90Sopenharmony_ci    return ReadPadded<bool>(value);
4845ccb8f90Sopenharmony_ci}
4855ccb8f90Sopenharmony_ci
4865ccb8f90Sopenharmony_cibool Parcel::ReadInt8(int8_t& value)
4875ccb8f90Sopenharmony_ci{
4885ccb8f90Sopenharmony_ci    return ReadPadded<int8_t>(value);
4895ccb8f90Sopenharmony_ci}
4905ccb8f90Sopenharmony_ci
4915ccb8f90Sopenharmony_cibool Parcel::ReadInt8Unaligned(int8_t& value)
4925ccb8f90Sopenharmony_ci{
4935ccb8f90Sopenharmony_ci    return Read<int8_t>(value);
4945ccb8f90Sopenharmony_ci}
4955ccb8f90Sopenharmony_ci
4965ccb8f90Sopenharmony_cibool Parcel::ReadInt16(int16_t& value)
4975ccb8f90Sopenharmony_ci{
4985ccb8f90Sopenharmony_ci    return ReadPadded<int16_t>(value);
4995ccb8f90Sopenharmony_ci}
5005ccb8f90Sopenharmony_ci
5015ccb8f90Sopenharmony_cibool Parcel::ReadInt16Unaligned(int16_t& value)
5025ccb8f90Sopenharmony_ci{
5035ccb8f90Sopenharmony_ci    return Read<int16_t>(value);
5045ccb8f90Sopenharmony_ci}
5055ccb8f90Sopenharmony_ci
5065ccb8f90Sopenharmony_cibool Parcel::ReadInt32(int32_t& value)
5075ccb8f90Sopenharmony_ci{
5085ccb8f90Sopenharmony_ci    return Read<int32_t>(value);
5095ccb8f90Sopenharmony_ci}
5105ccb8f90Sopenharmony_ci
5115ccb8f90Sopenharmony_cibool Parcel::ReadInt64(int64_t& value)
5125ccb8f90Sopenharmony_ci{
5135ccb8f90Sopenharmony_ci    return Read<int64_t>(value);
5145ccb8f90Sopenharmony_ci}
5155ccb8f90Sopenharmony_ci
5165ccb8f90Sopenharmony_cibool Parcel::ReadUint8(uint8_t& value)
5175ccb8f90Sopenharmony_ci{
5185ccb8f90Sopenharmony_ci    return ReadPadded<uint8_t>(value);
5195ccb8f90Sopenharmony_ci}
5205ccb8f90Sopenharmony_ci
5215ccb8f90Sopenharmony_cibool Parcel::ReadUint8Unaligned(uint8_t& value)
5225ccb8f90Sopenharmony_ci{
5235ccb8f90Sopenharmony_ci    return Read<uint8_t>(value);
5245ccb8f90Sopenharmony_ci}
5255ccb8f90Sopenharmony_ci
5265ccb8f90Sopenharmony_cibool Parcel::ReadUint16(uint16_t& value)
5275ccb8f90Sopenharmony_ci{
5285ccb8f90Sopenharmony_ci    return ReadPadded<uint16_t>(value);
5295ccb8f90Sopenharmony_ci}
5305ccb8f90Sopenharmony_ci
5315ccb8f90Sopenharmony_cibool Parcel::ReadUint16Unaligned(uint16_t& value)
5325ccb8f90Sopenharmony_ci{
5335ccb8f90Sopenharmony_ci    return Read<uint16_t>(value);
5345ccb8f90Sopenharmony_ci}
5355ccb8f90Sopenharmony_ci
5365ccb8f90Sopenharmony_cibool Parcel::ReadUint32(uint32_t& value)
5375ccb8f90Sopenharmony_ci{
5385ccb8f90Sopenharmony_ci    return Read<uint32_t>(value);
5395ccb8f90Sopenharmony_ci}
5405ccb8f90Sopenharmony_ci
5415ccb8f90Sopenharmony_cibool Parcel::ReadUint64(uint64_t& value)
5425ccb8f90Sopenharmony_ci{
5435ccb8f90Sopenharmony_ci    return Read<uint64_t>(value);
5445ccb8f90Sopenharmony_ci}
5455ccb8f90Sopenharmony_ci
5465ccb8f90Sopenharmony_cibool Parcel::ReadFloat(float& value)
5475ccb8f90Sopenharmony_ci{
5485ccb8f90Sopenharmony_ci    return Read<float>(value);
5495ccb8f90Sopenharmony_ci}
5505ccb8f90Sopenharmony_ci
5515ccb8f90Sopenharmony_cibool Parcel::ReadDouble(double& value)
5525ccb8f90Sopenharmony_ci{
5535ccb8f90Sopenharmony_ci    return Read<double>(value);
5545ccb8f90Sopenharmony_ci}
5555ccb8f90Sopenharmony_ci
5565ccb8f90Sopenharmony_ciuintptr_t Parcel::ReadPointer()
5575ccb8f90Sopenharmony_ci{
5585ccb8f90Sopenharmony_ci    return Read<binder_uintptr_t>();
5595ccb8f90Sopenharmony_ci}
5605ccb8f90Sopenharmony_ci
5615ccb8f90Sopenharmony_ciconst char* Parcel::ReadCString()
5625ccb8f90Sopenharmony_ci{
5635ccb8f90Sopenharmony_ci    return nullptr;
5645ccb8f90Sopenharmony_ci}
5655ccb8f90Sopenharmony_ci
5665ccb8f90Sopenharmony_ciconst std::string Parcel::ReadString()
5675ccb8f90Sopenharmony_ci{
5685ccb8f90Sopenharmony_ci    return "";
5695ccb8f90Sopenharmony_ci}
5705ccb8f90Sopenharmony_ci
5715ccb8f90Sopenharmony_cibool Parcel::ReadString(std::string& value)
5725ccb8f90Sopenharmony_ci{
5735ccb8f90Sopenharmony_ci    (void)value;
5745ccb8f90Sopenharmony_ci    return false;
5755ccb8f90Sopenharmony_ci}
5765ccb8f90Sopenharmony_ci
5775ccb8f90Sopenharmony_ciconst std::u16string Parcel::ReadString16()
5785ccb8f90Sopenharmony_ci{
5795ccb8f90Sopenharmony_ci#ifndef MOCK_READSTRING_DESCRIPTIR
5805ccb8f90Sopenharmony_ci    std::u16string descriptor = u"ohos.powermgr.IDisplayPowerCallback";
5815ccb8f90Sopenharmony_ci    return descriptor;
5825ccb8f90Sopenharmony_ci#else
5835ccb8f90Sopenharmony_ci    return std::u16string();
5845ccb8f90Sopenharmony_ci#endif
5855ccb8f90Sopenharmony_ci}
5865ccb8f90Sopenharmony_ci
5875ccb8f90Sopenharmony_cibool Parcel::ReadString16(std::u16string& value)
5885ccb8f90Sopenharmony_ci{
5895ccb8f90Sopenharmony_ci    (void)value;
5905ccb8f90Sopenharmony_ci    return false;
5915ccb8f90Sopenharmony_ci}
5925ccb8f90Sopenharmony_ci
5935ccb8f90Sopenharmony_ciconst std::u16string Parcel::ReadString16WithLength(int32_t& readLength)
5945ccb8f90Sopenharmony_ci{
5955ccb8f90Sopenharmony_ci    (void)readLength;
5965ccb8f90Sopenharmony_ci    return std::u16string();
5975ccb8f90Sopenharmony_ci}
5985ccb8f90Sopenharmony_ci
5995ccb8f90Sopenharmony_ciconst std::string Parcel::ReadString8WithLength(int32_t& readLength)
6005ccb8f90Sopenharmony_ci{
6015ccb8f90Sopenharmony_ci    (void)readLength;
6025ccb8f90Sopenharmony_ci    return std::string();
6035ccb8f90Sopenharmony_ci}
6045ccb8f90Sopenharmony_ci
6055ccb8f90Sopenharmony_citemplate <typename T1, typename T2>
6065ccb8f90Sopenharmony_cibool Parcel::WriteVector(const std::vector<T1>& val, bool (Parcel::*Write)(T2))
6075ccb8f90Sopenharmony_ci{
6085ccb8f90Sopenharmony_ci    (void)val;
6095ccb8f90Sopenharmony_ci    return false;
6105ccb8f90Sopenharmony_ci}
6115ccb8f90Sopenharmony_ci
6125ccb8f90Sopenharmony_cibool Parcel::WriteBoolVector(const std::vector<bool>& val)
6135ccb8f90Sopenharmony_ci{
6145ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteBool);
6155ccb8f90Sopenharmony_ci}
6165ccb8f90Sopenharmony_ci
6175ccb8f90Sopenharmony_cibool Parcel::WriteInt8Vector(const std::vector<int8_t>& val)
6185ccb8f90Sopenharmony_ci{
6195ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt8Unaligned);
6205ccb8f90Sopenharmony_ci}
6215ccb8f90Sopenharmony_ci
6225ccb8f90Sopenharmony_cibool Parcel::WriteInt16Vector(const std::vector<int16_t>& val)
6235ccb8f90Sopenharmony_ci{
6245ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt16);
6255ccb8f90Sopenharmony_ci}
6265ccb8f90Sopenharmony_ci
6275ccb8f90Sopenharmony_cibool Parcel::WriteInt32Vector(const std::vector<int32_t>& val)
6285ccb8f90Sopenharmony_ci{
6295ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt32);
6305ccb8f90Sopenharmony_ci}
6315ccb8f90Sopenharmony_ci
6325ccb8f90Sopenharmony_cibool Parcel::WriteInt64Vector(const std::vector<int64_t>& val)
6335ccb8f90Sopenharmony_ci{
6345ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteInt64);
6355ccb8f90Sopenharmony_ci}
6365ccb8f90Sopenharmony_ci
6375ccb8f90Sopenharmony_cibool Parcel::WriteUInt8Vector(const std::vector<uint8_t>& val)
6385ccb8f90Sopenharmony_ci{
6395ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint8Unaligned);
6405ccb8f90Sopenharmony_ci}
6415ccb8f90Sopenharmony_ci
6425ccb8f90Sopenharmony_cibool Parcel::WriteUInt16Vector(const std::vector<uint16_t>& val)
6435ccb8f90Sopenharmony_ci{
6445ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint16Unaligned);
6455ccb8f90Sopenharmony_ci}
6465ccb8f90Sopenharmony_ci
6475ccb8f90Sopenharmony_cibool Parcel::WriteUInt32Vector(const std::vector<uint32_t>& val)
6485ccb8f90Sopenharmony_ci{
6495ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint32);
6505ccb8f90Sopenharmony_ci}
6515ccb8f90Sopenharmony_ci
6525ccb8f90Sopenharmony_cibool Parcel::WriteUInt64Vector(const std::vector<uint64_t>& val)
6535ccb8f90Sopenharmony_ci{
6545ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteUint64);
6555ccb8f90Sopenharmony_ci}
6565ccb8f90Sopenharmony_ci
6575ccb8f90Sopenharmony_cibool Parcel::WriteFloatVector(const std::vector<float>& val)
6585ccb8f90Sopenharmony_ci{
6595ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteFloat);
6605ccb8f90Sopenharmony_ci}
6615ccb8f90Sopenharmony_ci
6625ccb8f90Sopenharmony_cibool Parcel::WriteDoubleVector(const std::vector<double>& val)
6635ccb8f90Sopenharmony_ci{
6645ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteDouble);
6655ccb8f90Sopenharmony_ci}
6665ccb8f90Sopenharmony_ci
6675ccb8f90Sopenharmony_cibool Parcel::WriteStringVector(const std::vector<std::string>& val)
6685ccb8f90Sopenharmony_ci{
6695ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteString);
6705ccb8f90Sopenharmony_ci}
6715ccb8f90Sopenharmony_ci
6725ccb8f90Sopenharmony_cibool Parcel::WriteString16Vector(const std::vector<std::u16string>& val)
6735ccb8f90Sopenharmony_ci{
6745ccb8f90Sopenharmony_ci    return WriteVector(val, &Parcel::WriteString16);
6755ccb8f90Sopenharmony_ci}
6765ccb8f90Sopenharmony_ci
6775ccb8f90Sopenharmony_citemplate <typename T>
6785ccb8f90Sopenharmony_cibool Parcel::ReadVector(std::vector<T>* val, bool (Parcel::*Read)(T&))
6795ccb8f90Sopenharmony_ci{
6805ccb8f90Sopenharmony_ci    (void)val;
6815ccb8f90Sopenharmony_ci    return false;
6825ccb8f90Sopenharmony_ci}
6835ccb8f90Sopenharmony_ci
6845ccb8f90Sopenharmony_cibool Parcel::ReadBoolVector(std::vector<bool>* val)
6855ccb8f90Sopenharmony_ci{
6865ccb8f90Sopenharmony_ci    (void)val;
6875ccb8f90Sopenharmony_ci    return false;
6885ccb8f90Sopenharmony_ci}
6895ccb8f90Sopenharmony_ci
6905ccb8f90Sopenharmony_cibool Parcel::ReadInt8Vector(std::vector<int8_t>* val)
6915ccb8f90Sopenharmony_ci{
6925ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt8Unaligned);
6935ccb8f90Sopenharmony_ci}
6945ccb8f90Sopenharmony_ci
6955ccb8f90Sopenharmony_cibool Parcel::ReadInt16Vector(std::vector<int16_t>* val)
6965ccb8f90Sopenharmony_ci{
6975ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt16);
6985ccb8f90Sopenharmony_ci}
6995ccb8f90Sopenharmony_ci
7005ccb8f90Sopenharmony_cibool Parcel::ReadInt32Vector(std::vector<int32_t>* val)
7015ccb8f90Sopenharmony_ci{
7025ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt32);
7035ccb8f90Sopenharmony_ci}
7045ccb8f90Sopenharmony_ci
7055ccb8f90Sopenharmony_cibool Parcel::ReadInt64Vector(std::vector<int64_t>* val)
7065ccb8f90Sopenharmony_ci{
7075ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadInt64);
7085ccb8f90Sopenharmony_ci}
7095ccb8f90Sopenharmony_ci
7105ccb8f90Sopenharmony_cibool Parcel::ReadUInt8Vector(std::vector<uint8_t>* val)
7115ccb8f90Sopenharmony_ci{
7125ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint8Unaligned);
7135ccb8f90Sopenharmony_ci}
7145ccb8f90Sopenharmony_ci
7155ccb8f90Sopenharmony_cibool Parcel::ReadUInt16Vector(std::vector<uint16_t>* val)
7165ccb8f90Sopenharmony_ci{
7175ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint16Unaligned);
7185ccb8f90Sopenharmony_ci}
7195ccb8f90Sopenharmony_ci
7205ccb8f90Sopenharmony_cibool Parcel::ReadUInt32Vector(std::vector<uint32_t>* val)
7215ccb8f90Sopenharmony_ci{
7225ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint32);
7235ccb8f90Sopenharmony_ci}
7245ccb8f90Sopenharmony_ci
7255ccb8f90Sopenharmony_cibool Parcel::ReadUInt64Vector(std::vector<uint64_t>* val)
7265ccb8f90Sopenharmony_ci{
7275ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadUint64);
7285ccb8f90Sopenharmony_ci}
7295ccb8f90Sopenharmony_ci
7305ccb8f90Sopenharmony_cibool Parcel::ReadFloatVector(std::vector<float>* val)
7315ccb8f90Sopenharmony_ci{
7325ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadFloat);
7335ccb8f90Sopenharmony_ci}
7345ccb8f90Sopenharmony_ci
7355ccb8f90Sopenharmony_cibool Parcel::ReadDoubleVector(std::vector<double>* val)
7365ccb8f90Sopenharmony_ci{
7375ccb8f90Sopenharmony_ci    return ReadVector(val, &Parcel::ReadDouble);
7385ccb8f90Sopenharmony_ci}
7395ccb8f90Sopenharmony_ci
7405ccb8f90Sopenharmony_cibool Parcel::ReadStringVector(std::vector<std::string>* val)
7415ccb8f90Sopenharmony_ci{
7425ccb8f90Sopenharmony_ci    (void)val;
7435ccb8f90Sopenharmony_ci    return false;
7445ccb8f90Sopenharmony_ci}
7455ccb8f90Sopenharmony_ci
7465ccb8f90Sopenharmony_cibool Parcel::ReadString16Vector(std::vector<std::u16string>* val)
7475ccb8f90Sopenharmony_ci{
7485ccb8f90Sopenharmony_ci    (void)val;
7495ccb8f90Sopenharmony_ci    return false;
7505ccb8f90Sopenharmony_ci}
7515ccb8f90Sopenharmony_ci} // namespace OHOS
752