// Copyright 2020 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This is the boilerplate implementation of the IAllocator HAL interface,
// generated by the hidl-gen tool and then modified for use on Chrome OS.
// Modifications include:
// - Removal of non boiler plate client and server related code.
// - Reformatting to meet the Chrome OS coding standards.
//
// Originally generated with the command:
// $ hidl-gen -o output -L c++-adapter -r android.hardware:hardware/interfaces \
//   android.hardware.neuralnetworks@1.2

#include <android/hardware/neuralnetworks/1.2/AExecutionCallback.h>
#include <android/hardware/neuralnetworks/1.0/AExecutionCallback.h>
#include <android/hardware/neuralnetworks/1.2/IExecutionCallback.h>
#include <hidladapter/HidlBinderAdapter.h>

namespace android {
namespace hardware {
namespace neuralnetworks {
namespace V1_2 {

AExecutionCallback::AExecutionCallback(
    const ::android::sp<
        ::android::hardware::neuralnetworks::V1_2::IExecutionCallback>& impl)
    : mImpl(impl) {
}  // Methods from ::android::hardware::neuralnetworks::V1_0::IExecutionCallback
   // follow.
::android::hardware::Return<void> AExecutionCallback::notify(
    ::android::hardware::neuralnetworks::V1_0::ErrorStatus status) {
  auto _hidl_out = mImpl->notify(status);
  return _hidl_out;
}

// Methods from ::android::hardware::neuralnetworks::V1_2::IExecutionCallback
// follow.
::android::hardware::Return<void> AExecutionCallback::notify_1_2(
    ::android::hardware::neuralnetworks::V1_0::ErrorStatus status,
    const ::android::hardware::hidl_vec<
        ::android::hardware::neuralnetworks::V1_2::OutputShape>& outputShapes,
    const ::android::hardware::neuralnetworks::V1_2::Timing& timing) {
  auto _hidl_out = mImpl->notify_1_2(status, outputShapes, timing);
  return _hidl_out;
}

// Methods from ::android::hidl::base::V1_0::IBase follow.

}  // namespace V1_2
}  // namespace neuralnetworks
}  // namespace hardware
}  // namespace android
