summaryrefslogtreecommitdiffstats
path: root/ppapi/cpp/dev/var_array_buffer_dev.h
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/cpp/dev/var_array_buffer_dev.h')
-rw-r--r--ppapi/cpp/dev/var_array_buffer_dev.h54
1 files changed, 41 insertions, 13 deletions
diff --git a/ppapi/cpp/dev/var_array_buffer_dev.h b/ppapi/cpp/dev/var_array_buffer_dev.h
index 6f8c959..6f7c18a 100644
--- a/ppapi/cpp/dev/var_array_buffer_dev.h
+++ b/ppapi/cpp/dev/var_array_buffer_dev.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 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.
@@ -20,18 +20,37 @@ namespace pp {
class VarArrayBuffer_Dev : public Var {
public:
/// Contruct a VarArrayBuffer_Dev given a var for which is_array_buffer() is
- /// true. This will refer to the same buffer as var, but allows you to access
- /// methods specific to VarArrayBuffer_Dev.
+ /// true. This will refer to the same ArrayBuffer as var, but allows you to
+ /// access methods specific to VarArrayBuffer_Dev.
///
- /// @param[in] var An array buffer Var.
+ /// @param[in] var An ArrayBuffer Var.
explicit VarArrayBuffer_Dev(const Var& var);
+ /// Copy constructor.
VarArrayBuffer_Dev(const VarArrayBuffer_Dev& buffer) : Var(buffer) {}
+ virtual ~VarArrayBuffer_Dev() {}
+
+ /// This function assigns one VarArrayBuffer to another VarArrayBuffer.
+ ///
+ /// @param[in] other The VarArrayBuffer to be assigned.
+ ///
+ /// @return The resulting VarArrayBuffer.
+ VarArrayBuffer_Dev& operator=(const VarArrayBuffer_Dev& other);
+
+ /// This function assigns one VarArrayBuffer to another VarArrayBuffer. Var's
+ /// assignment operator is overloaded here so that we can check for assigning
+ /// a non-ArrayBuffer var to a VarArrayBuffer_Dev.
+ ///
+ /// @param[in] other The VarArrayBuffer to be assigned.
+ ///
+ /// @return The resulting VarArrayBuffer (as a Var&).
+ virtual Var& operator=(const Var& other);
+
/// Construct a new VarArrayBuffer_Dev which is size_in_bytes bytes long and
/// initialized to zero.
///
- /// @param[in] size_in_bytes The size of the constructed array in bytes.
+ /// @param[in] size_in_bytes The size of the constructed ArrayBuffer in bytes.
VarArrayBuffer_Dev(uint32_t size_in_bytes);
/// Return the length of the VarArrayBuffer_Dev in bytes.
@@ -39,17 +58,26 @@ class VarArrayBuffer_Dev : public Var {
/// @return The length of the VarArrayBuffer_Dev in bytes.
uint32_t ByteLength() const;
- /// Return a pointer to the buffer associated with this VarArrayBuffer_Dev.
+ /// Maps the ArrayBuffer in to the module's address space and returns a
+ /// pointer to the internal buffer for this ArrayBuffer.
+ ///
+ /// Note that calling Map() can be a relatively expensive operation. Use care
+ /// when calling it in performance-critical code. For example, you should call
+ /// it only once when looping over an ArrayBuffer:
///
- /// @return A pointer to the buffer associated with this VarArrayBuffer_Dev.
+ /// <code>
+ /// char* data = static_cast<char*>(array_buffer_var.Map());
+ /// uint32_t byte_length = array_buffer_var.ByteLength();
+ /// for (uint32_t i = 0; i < byte_length; ++i)
+ /// data[i] = 'A';
+ /// </code>
+ ///
+ /// @return A pointer to the internal buffer for this ArrayBuffer.
void* Map();
- const void* Map() const;
-
- virtual ~VarArrayBuffer_Dev() {}
- private:
- // We cache the buffer so that repeated calls to Map() are quick.
- void* buffer_;
+ /// Unmaps this ArrayBuffer var from the module address space. Use this if
+ /// you want to save memory but might want to Map the buffer again later.
+ void Unmap();
};
} // namespace pp