| #include <android/aidl/loggable/Data.h> |
| |
| namespace android { |
| |
| namespace aidl { |
| |
| namespace loggable { |
| |
| ::android::status_t Data::readFromParcel(const ::android::Parcel* _aidl_parcel) { |
| ::android::status_t _aidl_ret_status = ::android::OK; |
| [[maybe_unused]] size_t _aidl_start_pos = _aidl_parcel->dataPosition(); |
| int32_t _aidl_parcelable_raw_size = _aidl_parcel->readInt32(); |
| if (_aidl_parcelable_raw_size < 0) return ::android::BAD_VALUE; |
| [[maybe_unused]] size_t _aidl_parcelable_size = static_cast<size_t>(_aidl_parcelable_raw_size); |
| if (_aidl_start_pos > SIZE_MAX - _aidl_parcelable_size) return ::android::BAD_VALUE; |
| if (_aidl_parcel->dataPosition() - _aidl_start_pos >= _aidl_parcelable_size) { |
| _aidl_parcel->setDataPosition(_aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->readInt32(&num); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| if (_aidl_parcel->dataPosition() - _aidl_start_pos >= _aidl_parcelable_size) { |
| _aidl_parcel->setDataPosition(_aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->readUtf8FromUtf16(&str); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| if (_aidl_parcel->dataPosition() - _aidl_start_pos >= _aidl_parcelable_size) { |
| _aidl_parcel->setDataPosition(_aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->readParcelable(&nestedUnion); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| if (_aidl_parcel->dataPosition() - _aidl_start_pos >= _aidl_parcelable_size) { |
| _aidl_parcel->setDataPosition(_aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->readByte(reinterpret_cast<int8_t *>(&nestedEnum)); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| _aidl_parcel->setDataPosition(_aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| |
| ::android::status_t Data::writeToParcel(::android::Parcel* _aidl_parcel) const { |
| ::android::status_t _aidl_ret_status = ::android::OK; |
| auto _aidl_start_pos = _aidl_parcel->dataPosition(); |
| _aidl_parcel->writeInt32(0); |
| _aidl_ret_status = _aidl_parcel->writeInt32(num); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->writeUtf8AsUtf16(str); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->writeParcelable(nestedUnion); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = _aidl_parcel->writeByte(static_cast<int8_t>(nestedEnum)); |
| if (((_aidl_ret_status) != (::android::OK))) { |
| return _aidl_ret_status; |
| } |
| auto _aidl_end_pos = _aidl_parcel->dataPosition(); |
| _aidl_parcel->setDataPosition(_aidl_start_pos); |
| _aidl_parcel->writeInt32(_aidl_end_pos - _aidl_start_pos); |
| _aidl_parcel->setDataPosition(_aidl_end_pos); |
| return _aidl_ret_status; |
| } |
| |
| } // namespace loggable |
| |
| } // namespace aidl |
| |
| } // namespace android |