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

#ifndef TONIC_FLOAT32_LIST_H_
#define TONIC_FLOAT32_LIST_H_

#include "dart/runtime/include/dart_api.h"
#include "tonic/dart_converter.h"

namespace tonic {

// A simple wrapper around a Dart Float32List. It uses Dart_TypedDataAcquireData
// to obtain a raw pointer to the data, which is released when this object is
// destroyed.
//
// This is designed to be used with DartConverter only.
class Float32List {
 public:
  explicit Float32List(Dart_Handle list);
  Float32List(Float32List&& other);
  ~Float32List();

  const float* data() const { return data_; }
  intptr_t num_elements() const { return num_elements_; }

 private:
  float* data_;
  intptr_t num_elements_;
  Dart_Handle dart_handle_;

  Float32List(const Float32List& other) = delete;
};

template <>
struct DartConverter<Float32List> {
  static Float32List FromArgumentsWithNullCheck(Dart_NativeArguments args,
                                                int index,
                                                Dart_Handle& exception);
};

} // namespace tonic

#endif  // TONIC_FLOAT32_LIST_H_
