#include <stdint.h>
#include "tensorflow/lite/core/c/builtin_op_data.h"
#include "tensorflow/lite/core/c/common.h"
#include "tensorflow/lite/kernels/internal/optimized/optimized_ops.h"
#include "tensorflow/lite/kernels/internal/tensor_ctypes.h"
#include "tensorflow/lite/kernels/internal/types.h"
#include "tensorflow/lite/kernels/kernel_util.h"
#include "tensorflow/lite/string_util.h"
namespace tflite {
namespace ops {
namespace builtin {
namespace gather {
constexpr int kInputTensor = …;
constexpr int kInputPositions = …;
constexpr int kOutputTensor = …;
struct OpData { … };
void* Init(TfLiteContext* context, const char* buffer, size_t length) { … }
void Free(TfLiteContext* context, void* buffer) { … }
TfLiteStatus EvalImpl(TfLiteContext* context, TfLiteNode* node);
TfLiteStatus Prepare(TfLiteContext* context, TfLiteNode* node) { … }
template <typename InputT, typename PositionsT>
TfLiteStatus Gather(TfLiteContext* context, const TfLiteGatherParams& params,
const TfLiteTensor* input, const TfLiteTensor* positions,
TfLiteTensor* output) { … }
template <typename PositionT>
TfLiteStatus GatherStrings(TfLiteContext* context, const TfLiteTensor* input,
const TfLiteTensor* positions,
TfLiteTensor* output) { … }
TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) { … }
template <class PosT>
TfLiteStatus DispatchEvalInputType(TfLiteContext* const context,
const TfLiteGatherParams* const params,
const TfLiteTensor* const input,
const TfLiteTensor* const positions,
TfLiteTensor* const output) { … }
TfLiteStatus DispatchEvalPositionType(TfLiteContext* const context,
const TfLiteGatherParams* const params,
const TfLiteTensor* const input,
const TfLiteTensor* const positions,
TfLiteTensor* const output) { … }
TfLiteStatus EvalImpl(TfLiteContext* context, TfLiteNode* node) { … }
}
TfLiteRegistration* Register_GATHER() { … }
}
}
}