/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef ANDROID_VEHICLE_NETWORK_PROTO_UTIL_H #define ANDROID_VEHICLE_NETWORK_PROTO_UTIL_H #include #include #include #include #include #include #include #include #include #include #include #include namespace android { class VehicleNetworkProtoUtil { public: static status_t toVehiclePropValue(const vehicle_prop_value_t& in, VehiclePropValue& out, bool inPlace = false); static status_t fromVehiclePropValue(const VehiclePropValue& in, vehicle_prop_value_t& out, bool inPlace = false, bool canIgnoreNoData = false); static status_t toVehiclePropValues(const List& in, VehiclePropValues& out); static status_t fromVehiclePropValues(const VehiclePropValues& in, List& out); static status_t toVehiclePropConfig(const vehicle_prop_config& in, VehiclePropConfig& out); static status_t fromVehiclePropConfig(const VehiclePropConfig& in, vehicle_prop_config& out); static status_t toVehiclePropConfigs(List &in, VehiclePropConfigs& out); static status_t fromVehiclePropConfigs(const VehiclePropConfigs& in, List& out); }; // ---------------------------------------------------------------------------- class WritableBlobHolder { public: Parcel::WritableBlob* blob; WritableBlobHolder(Parcel::WritableBlob* aBlob) : blob(aBlob) { } ~WritableBlobHolder() { if (blob != NULL) { blob->release(); delete blob; } } }; // ---------------------------------------------------------------------------- // duplicated here is Blob is not public. class ReadableBlobHolder { public: Parcel::ReadableBlob* blob; ReadableBlobHolder(Parcel::ReadableBlob* aBlob) : blob(aBlob) { } ~ReadableBlobHolder() { if (blob != NULL) { blob->release(); delete blob; } } }; class VehiclePropValueBinderUtil { public: static status_t writeToParcel(Parcel& parcel, const vehicle_prop_value_t& value); static status_t readFromParcel(const Parcel& parcel, vehicle_prop_value_t* value, bool deleteMembers = true, bool canIgnoreNoData = false); }; }; // namespace android #endif /* ANDROID_VEHICLE_NETWORK_PROTO_UTIL_H */