1 /*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #include "parcel.h"
17 #include <climits>
18 #include "securec.h"
19
20 namespace OHOS {
21
Parcelable()22 Parcelable::Parcelable() : Parcelable(false)
23 {}
24
Parcelable(bool asRemote)25 Parcelable::Parcelable(bool asRemote)
26 {
27 (void)asRemote;
28 }
29
~Parcel()30 Parcel::~Parcel()
31 {
32 }
33
GetWritableBytes() const34 size_t Parcel::GetWritableBytes() const
35 {
36 return {};
37 }
38
GetReadableBytes() const39 size_t Parcel::GetReadableBytes() const
40 {
41 return {};
42 }
43
CalcNewCapacity(size_t minNewCapacity)44 size_t Parcel::CalcNewCapacity(size_t minNewCapacity)
45 {
46 (void)minNewCapacity;
47 return {};
48 }
49
EnsureWritableCapacity(size_t desireCapacity)50 bool Parcel::EnsureWritableCapacity(size_t desireCapacity)
51 {
52 (void)desireCapacity;
53 return {};
54 }
55
GetDataSize() const56 size_t Parcel::GetDataSize() const
57 {
58 return {};
59 }
60
GetData() const61 uintptr_t Parcel::GetData() const
62 {
63 return {};
64 }
65
GetObjectOffsets() const66 binder_size_t Parcel::GetObjectOffsets() const
67 {
68 return {};
69 }
70
GetOffsetsSize() const71 size_t Parcel::GetOffsetsSize() const
72 {
73 return {};
74 }
75
GetDataCapacity() const76 size_t Parcel::GetDataCapacity() const
77 {
78 return {};
79 }
80
GetMaxCapacity() const81 size_t Parcel::GetMaxCapacity() const
82 {
83 return {};
84 }
85
SetMaxCapacity(size_t maxCapacity)86 bool Parcel::SetMaxCapacity(size_t maxCapacity)
87 {
88 (void)maxCapacity;
89 return {};
90 }
91
SetAllocator(Allocator * allocator)92 bool Parcel::SetAllocator(Allocator *allocator)
93 {
94 (void)allocator;
95 return {};
96 }
97
CheckOffsets()98 bool Parcel::CheckOffsets()
99 {
100 return {};
101 }
102
InjectOffsets(binder_size_t offsets,size_t offsetSize)103 void Parcel::InjectOffsets(binder_size_t offsets, size_t offsetSize)
104 {
105 (void)offsets;
106 (void)offsetSize;
107 }
108
FlushBuffer()109 void Parcel::FlushBuffer()
110 {
111 }
112
SetDataCapacity(size_t newCapacity)113 bool Parcel::SetDataCapacity(size_t newCapacity)
114 {
115 (void)newCapacity;
116 return {};
117 }
118
SetDataSize(size_t dataSize)119 bool Parcel::SetDataSize(size_t dataSize)
120 {
121 (void)dataSize;
122 return {};
123 }
124
WriteDataBytes(const void * data,size_t size)125 bool Parcel::WriteDataBytes(const void *data, size_t size)
126 {
127 (void)data;
128 (void)size;
129 return {};
130 }
131
WritePadBytes(size_t padSize)132 void Parcel::WritePadBytes(size_t padSize)
133 {
134 (void)padSize;
135 }
136
WriteBuffer(const void * data,size_t size)137 bool Parcel::WriteBuffer(const void *data, size_t size)
138 {
139 (void)data;
140 (void)size;
141 return {};
142 }
143
WriteBufferAddTerminator(const void * data,size_t size,size_t typeSize)144 bool Parcel::WriteBufferAddTerminator(const void *data, size_t size, size_t typeSize)
145 {
146 (void)data;
147 (void)size;
148 (void)typeSize;
149 return {};
150 }
151
WriteUnpadBuffer(const void * data,size_t size)152 bool Parcel::WriteUnpadBuffer(const void *data, size_t size)
153 {
154 (void)data;
155 (void)size;
156 return {};
157 }
158
159 template <typename T>
Write(T value)160 bool Parcel::Write(T value)
161 {
162 (void)value;
163 return {};
164 }
165
WriteBool(bool value)166 bool Parcel::WriteBool(bool value)
167 {
168 return Write<int32_t>(static_cast<int32_t>(value));
169 }
170
WriteBoolUnaligned(bool value)171 bool Parcel::WriteBoolUnaligned(bool value)
172 {
173 return Write<bool>(value);
174 }
175
WriteInt8(int8_t value)176 bool Parcel::WriteInt8(int8_t value)
177 {
178 return Write<int32_t>(static_cast<int32_t>(value));
179 }
180
WriteInt8Unaligned(int8_t value)181 bool Parcel::WriteInt8Unaligned(int8_t value)
182 {
183 return Write<int8_t>(value);
184 }
185
WriteInt16(int16_t value)186 bool Parcel::WriteInt16(int16_t value)
187 {
188 return Write<int32_t>(static_cast<int32_t>(value));
189 }
190
WriteInt16Unaligned(int16_t value)191 bool Parcel::WriteInt16Unaligned(int16_t value)
192 {
193 return Write<int16_t>(value);
194 }
195
WriteInt32(int32_t value)196 bool Parcel::WriteInt32(int32_t value)
197 {
198 return Write<int32_t>(value);
199 }
200
WriteInt64(int64_t value)201 bool Parcel::WriteInt64(int64_t value)
202 {
203 return Write<int64_t>(value);
204 }
205
WriteUint8(uint8_t value)206 bool Parcel::WriteUint8(uint8_t value)
207 {
208 return Write<uint32_t>(static_cast<uint32_t>(value));
209 }
210
WriteUint8Unaligned(uint8_t value)211 bool Parcel::WriteUint8Unaligned(uint8_t value)
212 {
213 return Write<uint8_t>(value);
214 }
215
WriteUint16(uint16_t value)216 bool Parcel::WriteUint16(uint16_t value)
217 {
218 return Write<uint32_t>(static_cast<uint32_t>(value));
219 }
220
WriteUint16Unaligned(uint16_t value)221 bool Parcel::WriteUint16Unaligned(uint16_t value)
222 {
223 return Write<uint16_t>(value);
224 }
225
WriteUint32(uint32_t value)226 bool Parcel::WriteUint32(uint32_t value)
227 {
228 return Write<uint32_t>(value);
229 }
230
WriteUint64(uint64_t value)231 bool Parcel::WriteUint64(uint64_t value)
232 {
233 return Write<uint64_t>(value);
234 }
235
WriteFloat(float value)236 bool Parcel::WriteFloat(float value)
237 {
238 return Write<float>(value);
239 }
240
WriteDouble(double value)241 bool Parcel::WriteDouble(double value)
242 {
243 return Write<double>(value);
244 }
245
WritePointer(uintptr_t value)246 bool Parcel::WritePointer(uintptr_t value)
247 {
248 return Write<binder_uintptr_t>(value);
249 }
250
WriteCString(const char * value)251 bool Parcel::WriteCString(const char *value)
252 {
253 (void)value;
254 return {};
255 }
256
WriteString(const std::string & value)257 bool Parcel::WriteString(const std::string &value)
258 {
259 (void)value;
260 return {};
261 }
262
WriteString16(const std::u16string & value)263 bool Parcel::WriteString16(const std::u16string &value)
264 {
265 (void)value;
266 return {};
267 }
268
WriteString16WithLength(const char16_t * value,size_t len)269 bool Parcel::WriteString16WithLength(const char16_t *value, size_t len)
270 {
271 (void)value;
272 (void)len;
273 return {};
274 }
275
WriteString8WithLength(const char * value,size_t len)276 bool Parcel::WriteString8WithLength(const char *value, size_t len)
277 {
278 (void)value;
279 (void)len;
280 return {};
281 }
282
EnsureObjectsCapacity()283 bool Parcel::EnsureObjectsCapacity()
284 {
285 return {};
286 }
287
WriteObjectOffset(binder_size_t offset)288 bool Parcel::WriteObjectOffset(binder_size_t offset)
289 {
290 (void)offset;
291 return {};
292 }
293
WriteRemoteObject(const Parcelable * object)294 bool Parcel::WriteRemoteObject(const Parcelable *object)
295 {
296 (void)object;
297 return {};
298 }
299
WriteParcelable(const Parcelable * object)300 bool Parcel::WriteParcelable(const Parcelable *object)
301 {
302 (void)object;
303 return {};
304 }
305
WriteStrongParcelable(const sptr<Parcelable> & object)306 bool Parcel::WriteStrongParcelable(const sptr<Parcelable> &object)
307 {
308 (void)object;
309 return {};
310 }
311
312 template <typename T>
Read(T & value)313 bool Parcel::Read(T &value)
314 {
315 (void)value;
316 return {};
317 }
318
319 template <typename T>
Read()320 T Parcel::Read()
321 {
322 return {};
323 }
324
ParseFrom(uintptr_t data,size_t size)325 bool Parcel::ParseFrom(uintptr_t data, size_t size)
326 {
327 (void)data;
328 (void)size;
329 return {};
330 }
331
ReadBuffer(size_t length)332 const uint8_t *Parcel::ReadBuffer(size_t length)
333 {
334 (void)length;
335 return {};
336 }
337
ReadUnpadBuffer(size_t length)338 const uint8_t *Parcel::ReadUnpadBuffer(size_t length)
339 {
340 (void)length;
341 return {};
342 }
343
SkipBytes(size_t bytes)344 void Parcel::SkipBytes(size_t bytes)
345 {
346 (void)bytes;
347 }
348
GetReadPosition()349 size_t Parcel::GetReadPosition()
350 {
351 return {};
352 }
353
RewindRead(size_t newPosition)354 bool Parcel::RewindRead(size_t newPosition)
355 {
356 (void)newPosition;
357 return {};
358 }
359
GetWritePosition()360 size_t Parcel::GetWritePosition()
361 {
362 return {};
363 }
364
RewindWrite(size_t newPosition)365 bool Parcel::RewindWrite(size_t newPosition)
366 {
367 (void)newPosition;
368 return {};
369 }
370
ReadBool()371 bool Parcel::ReadBool()
372 {
373 int32_t temp = Read<int32_t>();
374 return (temp != 0);
375 }
376
ReadBoolUnaligned()377 bool Parcel::ReadBoolUnaligned()
378 {
379 return Read<bool>();
380 }
381
ReadInt8()382 int8_t Parcel::ReadInt8()
383 {
384 int32_t temp = Read<int32_t>();
385 return static_cast<int8_t>(temp);
386 }
387
ReadInt16()388 int16_t Parcel::ReadInt16()
389 {
390 int32_t temp = Read<int32_t>();
391 return static_cast<int16_t>(temp);
392 }
393
ReadInt32()394 int32_t Parcel::ReadInt32()
395 {
396 return Read<int32_t>();
397 }
398
ReadInt64()399 int64_t Parcel::ReadInt64()
400 {
401 return Read<int64_t>();
402 }
403
ReadUint16()404 uint16_t Parcel::ReadUint16()
405 {
406 uint32_t temp = Read<uint32_t>();
407 return static_cast<uint16_t>(temp);
408 }
409
ReadUint32()410 uint32_t Parcel::ReadUint32()
411 {
412 return Read<uint32_t>();
413 }
414
ReadUint64()415 uint64_t Parcel::ReadUint64()
416 {
417 return Read<uint64_t>();
418 }
419
ReadFloat()420 float Parcel::ReadFloat()
421 {
422 return Read<float>();
423 }
424
ReadDouble()425 double Parcel::ReadDouble()
426 {
427 return Read<double>();
428 }
429
430 template <typename T>
ReadPadded(T & value)431 bool Parcel::ReadPadded(T &value)
432 {
433 (void)value;
434 return {};
435 }
436
ReadBool(bool & value)437 bool Parcel::ReadBool(bool &value)
438 {
439 return ReadPadded<bool>(value);
440 }
441
ReadInt8(int8_t & value)442 bool Parcel::ReadInt8(int8_t &value)
443 {
444 return ReadPadded<int8_t>(value);
445 }
446
ReadInt8Unaligned(int8_t & value)447 bool Parcel::ReadInt8Unaligned(int8_t &value)
448 {
449 return Read<int8_t>(value);
450 }
451
ReadInt16(int16_t & value)452 bool Parcel::ReadInt16(int16_t &value)
453 {
454 return ReadPadded<int16_t>(value);
455 }
456
ReadInt16Unaligned(int16_t & value)457 bool Parcel::ReadInt16Unaligned(int16_t &value)
458 {
459 return Read<int16_t>(value);
460 }
461
ReadInt32(int32_t & value)462 bool Parcel::ReadInt32(int32_t &value)
463 {
464 return Read<int32_t>(value);
465 }
466
ReadInt64(int64_t & value)467 bool Parcel::ReadInt64(int64_t &value)
468 {
469 return Read<int64_t>(value);
470 }
471
ReadUint8(uint8_t & value)472 bool Parcel::ReadUint8(uint8_t &value)
473 {
474 return ReadPadded<uint8_t>(value);
475 }
476
ReadUint8Unaligned(uint8_t & value)477 bool Parcel::ReadUint8Unaligned(uint8_t &value)
478 {
479 return Read<uint8_t>(value);
480 }
481
ReadUint16(uint16_t & value)482 bool Parcel::ReadUint16(uint16_t &value)
483 {
484 return ReadPadded<uint16_t>(value);
485 }
486
ReadUint16Unaligned(uint16_t & value)487 bool Parcel::ReadUint16Unaligned(uint16_t &value)
488 {
489 return Read<uint16_t>(value);
490 }
491
ReadUint32(uint32_t & value)492 bool Parcel::ReadUint32(uint32_t &value)
493 {
494 return Read<uint32_t>(value);
495 }
496
ReadUint64(uint64_t & value)497 bool Parcel::ReadUint64(uint64_t &value)
498 {
499 return Read<uint64_t>(value);
500 }
501
ReadFloat(float & value)502 bool Parcel::ReadFloat(float &value)
503 {
504 return Read<float>(value);
505 }
506
ReadDouble(double & value)507 bool Parcel::ReadDouble(double &value)
508 {
509 return Read<double>(value);
510 }
511
ReadPointer()512 uintptr_t Parcel::ReadPointer()
513 {
514 return Read<binder_uintptr_t>();
515 }
516
ReadCString()517 const char *Parcel::ReadCString()
518 {
519 return {};
520 }
521
ReadString()522 const std::string Parcel::ReadString()
523 {
524 return {};
525 }
526
ReadString(std::string & value)527 bool Parcel::ReadString(std::string &value)
528 {
529 (void)value;
530 return {};
531 }
532
ReadString16()533 const std::u16string Parcel::ReadString16()
534 {
535 return {};
536 }
537
ReadString16(std::u16string & value)538 bool Parcel::ReadString16(std::u16string &value)
539 {
540 (void)value;
541 return {};
542 }
543
ReadString16WithLength(int32_t & readLength)544 const std::u16string Parcel::ReadString16WithLength(int32_t &readLength)
545 {
546 (void)readLength;
547 return {};
548 }
549
ReadString8WithLength(int32_t & readLength)550 const std::string Parcel::ReadString8WithLength(int32_t &readLength)
551 {
552 (void)readLength;
553 return {};
554 }
555
Alloc(size_t size)556 void *DefaultAllocator::Alloc(size_t size)
557 {
558 (void)size;
559 return nullptr;
560 }
561
Dealloc(void * data)562 void DefaultAllocator::Dealloc(void *data)
563 {
564 if (data != nullptr) {
565 free(data);
566 }
567 }
568
Realloc(void * data,size_t newSize)569 void *DefaultAllocator::Realloc(void *data, size_t newSize)
570 {
571 (void)data;
572 (void)newSize;
573 return nullptr;
574 }
575
576 template <typename T1, typename T2>
WriteVector(const std::vector<T1> & val,bool (Parcel::* write)(T2))577 bool Parcel::WriteVector(const std::vector<T1> &val, bool (Parcel::*write)(T2))
578 {
579 (void)val;
580 (void)write;
581 return {};
582 }
583
WriteBoolVector(const std::vector<bool> & val)584 bool Parcel::WriteBoolVector(const std::vector<bool> &val)
585 {
586 return WriteVector(val, &Parcel::WriteBool);
587 }
588
WriteInt8Vector(const std::vector<int8_t> & val)589 bool Parcel::WriteInt8Vector(const std::vector<int8_t> &val)
590 {
591 return WriteVector(val, &Parcel::WriteInt8Unaligned);
592 }
593
WriteInt16Vector(const std::vector<int16_t> & val)594 bool Parcel::WriteInt16Vector(const std::vector<int16_t> &val)
595 {
596 return WriteVector(val, &Parcel::WriteInt16);
597 }
598
WriteInt32Vector(const std::vector<int32_t> & val)599 bool Parcel::WriteInt32Vector(const std::vector<int32_t> &val)
600 {
601 return WriteVector(val, &Parcel::WriteInt32);
602 }
603
WriteInt64Vector(const std::vector<int64_t> & val)604 bool Parcel::WriteInt64Vector(const std::vector<int64_t> &val)
605 {
606 return WriteVector(val, &Parcel::WriteInt64);
607 }
608
WriteUInt8Vector(const std::vector<uint8_t> & val)609 bool Parcel::WriteUInt8Vector(const std::vector<uint8_t> &val)
610 {
611 return WriteVector(val, &Parcel::WriteUint8Unaligned);
612 }
613
WriteUInt16Vector(const std::vector<uint16_t> & val)614 bool Parcel::WriteUInt16Vector(const std::vector<uint16_t> &val)
615 {
616 return WriteVector(val, &Parcel::WriteUint16Unaligned);
617 }
618
WriteUInt32Vector(const std::vector<uint32_t> & val)619 bool Parcel::WriteUInt32Vector(const std::vector<uint32_t> &val)
620 {
621 return WriteVector(val, &Parcel::WriteUint32);
622 }
623
WriteUInt64Vector(const std::vector<uint64_t> & val)624 bool Parcel::WriteUInt64Vector(const std::vector<uint64_t> &val)
625 {
626 return WriteVector(val, &Parcel::WriteUint64);
627 }
628
WriteFloatVector(const std::vector<float> & val)629 bool Parcel::WriteFloatVector(const std::vector<float> &val)
630 {
631 return WriteVector(val, &Parcel::WriteFloat);
632 }
633
WriteDoubleVector(const std::vector<double> & val)634 bool Parcel::WriteDoubleVector(const std::vector<double> &val)
635 {
636 return WriteVector(val, &Parcel::WriteDouble);
637 }
638
WriteStringVector(const std::vector<std::string> & val)639 bool Parcel::WriteStringVector(const std::vector<std::string> &val)
640 {
641 return WriteVector(val, &Parcel::WriteString);
642 }
643
WriteString16Vector(const std::vector<std::u16string> & val)644 bool Parcel::WriteString16Vector(const std::vector<std::u16string> &val)
645 {
646 return WriteVector(val, &Parcel::WriteString16);
647 }
648
649 template <typename T>
ReadVector(std::vector<T> * val,bool (Parcel::* read)(T &))650 bool Parcel::ReadVector(std::vector<T> *val, bool (Parcel::*read)(T &))
651 {
652 (void)val;
653 (void)read;
654 return {};
655 }
656
ReadBoolVector(std::vector<bool> * val)657 bool Parcel::ReadBoolVector(std::vector<bool> *val)
658 {
659 (void)val;
660 return {};
661 }
662
ReadInt8Vector(std::vector<int8_t> * val)663 bool Parcel::ReadInt8Vector(std::vector<int8_t> *val)
664 {
665 return ReadVector(val, &Parcel::ReadInt8Unaligned);
666 }
667
ReadInt16Vector(std::vector<int16_t> * val)668 bool Parcel::ReadInt16Vector(std::vector<int16_t> *val)
669 {
670 return ReadVector(val, &Parcel::ReadInt16);
671 }
672
ReadInt32Vector(std::vector<int32_t> * val)673 bool Parcel::ReadInt32Vector(std::vector<int32_t> *val)
674 {
675 return ReadVector(val, &Parcel::ReadInt32);
676 }
677
ReadInt64Vector(std::vector<int64_t> * val)678 bool Parcel::ReadInt64Vector(std::vector<int64_t> *val)
679 {
680 return ReadVector(val, &Parcel::ReadInt64);
681 }
682
ReadUInt8Vector(std::vector<uint8_t> * val)683 bool Parcel::ReadUInt8Vector(std::vector<uint8_t> *val)
684 {
685 return ReadVector(val, &Parcel::ReadUint8Unaligned);
686 }
687
ReadUInt16Vector(std::vector<uint16_t> * val)688 bool Parcel::ReadUInt16Vector(std::vector<uint16_t> *val)
689 {
690 return ReadVector(val, &Parcel::ReadUint16Unaligned);
691 }
692
ReadUInt32Vector(std::vector<uint32_t> * val)693 bool Parcel::ReadUInt32Vector(std::vector<uint32_t> *val)
694 {
695 return ReadVector(val, &Parcel::ReadUint32);
696 }
697
ReadUInt64Vector(std::vector<uint64_t> * val)698 bool Parcel::ReadUInt64Vector(std::vector<uint64_t> *val)
699 {
700 return ReadVector(val, &Parcel::ReadUint64);
701 }
702
ReadFloatVector(std::vector<float> * val)703 bool Parcel::ReadFloatVector(std::vector<float> *val)
704 {
705 return ReadVector(val, &Parcel::ReadFloat);
706 }
707
ReadDoubleVector(std::vector<double> * val)708 bool Parcel::ReadDoubleVector(std::vector<double> *val)
709 {
710 return ReadVector(val, &Parcel::ReadDouble);
711 }
712
ReadStringVector(std::vector<std::string> * val)713 bool Parcel::ReadStringVector(std::vector<std::string> *val)
714 {
715 (void)val;
716 return {};
717 }
718
ReadString16Vector(std::vector<std::u16string> * val)719 bool Parcel::ReadString16Vector(std::vector<std::u16string> *val)
720 {
721 (void)val;
722 return {};
723 }
724 } // namespace OHOS
725