diff options
Diffstat (limited to 'mojo/public/cpp/system/buffer.h')
-rw-r--r-- | mojo/public/cpp/system/buffer.h | 112 |
1 files changed, 0 insertions, 112 deletions
diff --git a/mojo/public/cpp/system/buffer.h b/mojo/public/cpp/system/buffer.h deleted file mode 100644 index 6817297..0000000 --- a/mojo/public/cpp/system/buffer.h +++ /dev/null @@ -1,112 +0,0 @@ -// Copyright 2014 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 MOJO_PUBLIC_CPP_SYSTEM_BUFFER_H_ -#define MOJO_PUBLIC_CPP_SYSTEM_BUFFER_H_ - -#include <assert.h> - -#include "mojo/public/c/system/buffer.h" -#include "mojo/public/cpp/system/handle.h" -#include "mojo/public/cpp/system/macros.h" - -namespace mojo { - -// SharedBufferHandle ---------------------------------------------------------- - -class SharedBufferHandle : public Handle { - public: - SharedBufferHandle() {} - explicit SharedBufferHandle(MojoHandle value) : Handle(value) {} - - // Copying and assignment allowed. -}; - -static_assert(sizeof(SharedBufferHandle) == sizeof(Handle), - "Bad size for C++ SharedBufferHandle"); - -typedef ScopedHandleBase<SharedBufferHandle> ScopedSharedBufferHandle; -static_assert(sizeof(ScopedSharedBufferHandle) == sizeof(SharedBufferHandle), - "Bad size for C++ ScopedSharedBufferHandle"); - -inline MojoResult CreateSharedBuffer( - const MojoCreateSharedBufferOptions* options, - uint64_t num_bytes, - ScopedSharedBufferHandle* shared_buffer) { - assert(shared_buffer); - SharedBufferHandle handle; - MojoResult rv = - MojoCreateSharedBuffer(options, num_bytes, handle.mutable_value()); - // Reset even on failure (reduces the chances that a "stale"/incorrect handle - // will be used). - shared_buffer->reset(handle); - return rv; -} - -// TODO(vtl): This (and also the functions below) are templatized to allow for -// future/other buffer types. A bit "safer" would be to overload this function -// manually. (The template enforces that the in and out handles to be of the -// same type.) -template <class BufferHandleType> -inline MojoResult DuplicateBuffer( - BufferHandleType buffer, - const MojoDuplicateBufferHandleOptions* options, - ScopedHandleBase<BufferHandleType>* new_buffer) { - assert(new_buffer); - BufferHandleType handle; - MojoResult rv = MojoDuplicateBufferHandle( - buffer.value(), options, handle.mutable_value()); - // Reset even on failure (reduces the chances that a "stale"/incorrect handle - // will be used). - new_buffer->reset(handle); - return rv; -} - -template <class BufferHandleType> -inline MojoResult MapBuffer(BufferHandleType buffer, - uint64_t offset, - uint64_t num_bytes, - void** pointer, - MojoMapBufferFlags flags) { - assert(buffer.is_valid()); - return MojoMapBuffer(buffer.value(), offset, num_bytes, pointer, flags); -} - -inline MojoResult UnmapBuffer(void* pointer) { - assert(pointer); - return MojoUnmapBuffer(pointer); -} - -// A wrapper class that automatically creates a shared buffer and owns the -// handle. -class SharedBuffer { - public: - explicit SharedBuffer(uint64_t num_bytes); - SharedBuffer(uint64_t num_bytes, - const MojoCreateSharedBufferOptions& options); - ~SharedBuffer(); - - ScopedSharedBufferHandle handle; -}; - -inline SharedBuffer::SharedBuffer(uint64_t num_bytes) { - MojoResult result = CreateSharedBuffer(nullptr, num_bytes, &handle); - MOJO_ALLOW_UNUSED_LOCAL(result); - assert(result == MOJO_RESULT_OK); -} - -inline SharedBuffer::SharedBuffer( - uint64_t num_bytes, - const MojoCreateSharedBufferOptions& options) { - MojoResult result = CreateSharedBuffer(&options, num_bytes, &handle); - MOJO_ALLOW_UNUSED_LOCAL(result); - assert(result == MOJO_RESULT_OK); -} - -inline SharedBuffer::~SharedBuffer() { -} - -} // namespace mojo - -#endif // MOJO_PUBLIC_CPP_SYSTEM_BUFFER_H_ |