| #include "aidl/android/aidl/tests/FixedSize.h" |
| |
| #include <android/binder_parcel_utils.h> |
| |
| namespace aidl { |
| namespace android { |
| namespace aidl { |
| namespace tests { |
| const char* FixedSize::descriptor = "android.aidl.tests.FixedSize"; |
| |
| binder_status_t FixedSize::readFromParcel(const AParcel* _aidl_parcel) { |
| binder_status_t _aidl_ret_status = STATUS_OK; |
| int32_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel); |
| int32_t _aidl_parcelable_size = 0; |
| _aidl_ret_status = AParcel_readInt32(_aidl_parcel, &_aidl_parcelable_size); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (_aidl_parcelable_size < 4) return STATUS_BAD_VALUE; |
| if (_aidl_start_pos > INT32_MAX - _aidl_parcelable_size) return STATUS_BAD_VALUE; |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| binder_status_t FixedSize::writeToParcel(AParcel* _aidl_parcel) const { |
| binder_status_t _aidl_ret_status; |
| size_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel); |
| _aidl_ret_status = AParcel_writeInt32(_aidl_parcel, 0); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| size_t _aidl_end_pos = AParcel_getDataPosition(_aidl_parcel); |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos); |
| AParcel_writeInt32(_aidl_parcel, _aidl_end_pos - _aidl_start_pos); |
| AParcel_setDataPosition(_aidl_parcel, _aidl_end_pos); |
| return _aidl_ret_status; |
| } |
| |
| } // namespace tests |
| } // namespace aidl |
| } // namespace android |
| } // namespace aidl |
| namespace aidl { |
| namespace android { |
| namespace aidl { |
| namespace tests { |
| const char* FixedSize::FixedParcelable::descriptor = "android.aidl.tests.FixedSize.FixedParcelable"; |
| |
| binder_status_t FixedSize::FixedParcelable::readFromParcel(const AParcel* _aidl_parcel) { |
| binder_status_t _aidl_ret_status = STATUS_OK; |
| int32_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel); |
| int32_t _aidl_parcelable_size = 0; |
| _aidl_ret_status = AParcel_readInt32(_aidl_parcel, &_aidl_parcelable_size); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (_aidl_parcelable_size < 4) return STATUS_BAD_VALUE; |
| if (_aidl_start_pos > INT32_MAX - _aidl_parcelable_size) return STATUS_BAD_VALUE; |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &booleanValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &byteValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &charValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &intValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &longValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &floatValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &doubleValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &enumValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| if (AParcel_getDataPosition(_aidl_parcel) - _aidl_start_pos >= _aidl_parcelable_size) { |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| _aidl_ret_status = ::ndk::AParcel_readData(_aidl_parcel, &parcelableValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos + _aidl_parcelable_size); |
| return _aidl_ret_status; |
| } |
| binder_status_t FixedSize::FixedParcelable::writeToParcel(AParcel* _aidl_parcel) const { |
| binder_status_t _aidl_ret_status; |
| size_t _aidl_start_pos = AParcel_getDataPosition(_aidl_parcel); |
| _aidl_ret_status = AParcel_writeInt32(_aidl_parcel, 0); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, booleanValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, byteValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, charValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, intValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, longValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, floatValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, doubleValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, enumValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| _aidl_ret_status = ::ndk::AParcel_writeData(_aidl_parcel, parcelableValue); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| |
| size_t _aidl_end_pos = AParcel_getDataPosition(_aidl_parcel); |
| AParcel_setDataPosition(_aidl_parcel, _aidl_start_pos); |
| AParcel_writeInt32(_aidl_parcel, _aidl_end_pos - _aidl_start_pos); |
| AParcel_setDataPosition(_aidl_parcel, _aidl_end_pos); |
| return _aidl_ret_status; |
| } |
| |
| } // namespace tests |
| } // namespace aidl |
| } // namespace android |
| } // namespace aidl |
| namespace aidl { |
| namespace android { |
| namespace aidl { |
| namespace tests { |
| const char* FixedSize::FixedUnion::descriptor = "android.aidl.tests.FixedSize.FixedUnion"; |
| |
| binder_status_t FixedSize::FixedUnion::readFromParcel(const AParcel* _parcel) { |
| binder_status_t _aidl_ret_status; |
| int32_t _aidl_tag; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_tag)) != STATUS_OK) return _aidl_ret_status; |
| switch (static_cast<Tag>(_aidl_tag)) { |
| case booleanValue: { |
| bool _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<bool>) { |
| set<booleanValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<booleanValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case byteValue: { |
| int8_t _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<int8_t>) { |
| set<byteValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<byteValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case charValue: { |
| char16_t _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<char16_t>) { |
| set<charValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<charValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case intValue: { |
| int32_t _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<int32_t>) { |
| set<intValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<intValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case longValue: { |
| int64_t _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<int64_t>) { |
| set<longValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<longValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case floatValue: { |
| float _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<float>) { |
| set<floatValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<floatValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case doubleValue: { |
| double _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<double>) { |
| set<doubleValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<doubleValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| case enumValue: { |
| ::aidl::android::aidl::tests::LongEnum _aidl_value; |
| if ((_aidl_ret_status = ::ndk::AParcel_readData(_parcel, &_aidl_value)) != STATUS_OK) return _aidl_ret_status; |
| if constexpr (std::is_trivially_copyable_v<::aidl::android::aidl::tests::LongEnum>) { |
| set<enumValue>(_aidl_value); |
| } else { |
| // NOLINTNEXTLINE(performance-move-const-arg) |
| set<enumValue>(std::move(_aidl_value)); |
| } |
| return STATUS_OK; } |
| } |
| return STATUS_BAD_VALUE; |
| } |
| binder_status_t FixedSize::FixedUnion::writeToParcel(AParcel* _parcel) const { |
| binder_status_t _aidl_ret_status = ::ndk::AParcel_writeData(_parcel, static_cast<int32_t>(getTag())); |
| if (_aidl_ret_status != STATUS_OK) return _aidl_ret_status; |
| switch (getTag()) { |
| case booleanValue: return ::ndk::AParcel_writeData(_parcel, get<booleanValue>()); |
| case byteValue: return ::ndk::AParcel_writeData(_parcel, get<byteValue>()); |
| case charValue: return ::ndk::AParcel_writeData(_parcel, get<charValue>()); |
| case intValue: return ::ndk::AParcel_writeData(_parcel, get<intValue>()); |
| case longValue: return ::ndk::AParcel_writeData(_parcel, get<longValue>()); |
| case floatValue: return ::ndk::AParcel_writeData(_parcel, get<floatValue>()); |
| case doubleValue: return ::ndk::AParcel_writeData(_parcel, get<doubleValue>()); |
| case enumValue: return ::ndk::AParcel_writeData(_parcel, get<enumValue>()); |
| } |
| __assert2(__FILE__, __LINE__, __PRETTY_FUNCTION__, "can't reach here"); |
| } |
| |
| } // namespace tests |
| } // namespace aidl |
| } // namespace android |
| } // namespace aidl |