Sha256: 8bcfd748938691c99e1f22cf52c75240b27c52972b7097bbf42906409f959915

Contents?: true

Size: 1.25 KB

Versions: 72

Compression:

Stored size: 1.25 KB

Contents

// Copyright 2021 the V8 project 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 INCLUDE_V8_MEMORY_SPAN_H_
#define INCLUDE_V8_MEMORY_SPAN_H_

#include <stddef.h>

#include "v8config.h"  // NOLINT(build/include_directory)

namespace v8 {

/**
 * Points to an unowned continous buffer holding a known number of elements.
 *
 * This is similar to std::span (under consideration for C++20), but does not
 * require advanced C++ support. In the (far) future, this may be replaced with
 * or aliased to std::span.
 *
 * To facilitate future migration, this class exposes a subset of the interface
 * implemented by std::span.
 */
template <typename T>
class V8_EXPORT MemorySpan {
 public:
  /** The default constructor creates an empty span. */
  constexpr MemorySpan() = default;

  constexpr MemorySpan(T* data, size_t size) : data_(data), size_(size) {}

  /** Returns a pointer to the beginning of the buffer. */
  constexpr T* data() const { return data_; }
  /** Returns the number of elements that the buffer holds. */
  constexpr size_t size() const { return size_; }

 private:
  T* data_ = nullptr;
  size_t size_ = 0;
};

}  // namespace v8
#endif  // INCLUDE_V8_MEMORY_SPAN_H_

Version data entries

72 entries across 72 versions & 1 rubygems

Version Path
libv8-node-21.7.2.0-x86_64-linux vendor/v8/include/v8-memory-span.h
libv8-node-21.7.2.0-x86_64-linux-musl vendor/v8/include/v8-memory-span.h
libv8-node-21.7.2.0-x86_64-darwin vendor/v8/include/v8-memory-span.h
libv8-node-21.7.2.0-arm64-darwin vendor/v8/include/v8-memory-span.h
libv8-node-21.7.2.0-aarch64-linux vendor/v8/include/v8-memory-span.h
libv8-node-21.7.2.0-aarch64-linux-musl vendor/v8/include/v8-memory-span.h
libv8-node-20.12.1.0-x86_64-linux vendor/v8/include/v8-memory-span.h
libv8-node-20.12.1.0-x86_64-linux-musl vendor/v8/include/v8-memory-span.h
libv8-node-20.12.1.0-x86_64-darwin vendor/v8/include/v8-memory-span.h
libv8-node-20.12.1.0-arm64-darwin vendor/v8/include/v8-memory-span.h
libv8-node-20.12.1.0-aarch64-linux vendor/v8/include/v8-memory-span.h
libv8-node-20.12.1.0-aarch64-linux-musl vendor/v8/include/v8-memory-span.h
libv8-node-18.19.1.0-x86_64-linux vendor/v8/include/v8-memory-span.h
libv8-node-18.19.1.0-x86_64-linux-musl vendor/v8/include/v8-memory-span.h
libv8-node-18.19.1.0-x86_64-darwin vendor/v8/include/v8-memory-span.h
libv8-node-18.19.1.0-arm64-darwin vendor/v8/include/v8-memory-span.h
libv8-node-18.19.1.0-aarch64-linux vendor/v8/include/v8-memory-span.h
libv8-node-18.19.1.0-aarch64-linux-musl vendor/v8/include/v8-memory-span.h
libv8-node-18.19.0.0-x86_64-linux vendor/v8/include/v8-memory-span.h
libv8-node-18.19.0.0-x86_64-linux-musl vendor/v8/include/v8-memory-span.h