Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(550)

Side by Side Diff: mojo/public/cpp/bindings/lib/fixed_buffer.h

Issue 294833002: Mojo: more idiomatic C++ bindings (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix windows bustage Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_FIXED_BUFFER_H_ 5 #ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_FIXED_BUFFER_H_
6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_FIXED_BUFFER_H_ 6 #define MOJO_PUBLIC_CPP_BINDINGS_LIB_FIXED_BUFFER_H_
7 7
8 #include "mojo/public/cpp/bindings/buffer.h" 8 #include "mojo/public/cpp/bindings/lib/buffer.h"
9 #include "mojo/public/cpp/system/macros.h" 9 #include "mojo/public/cpp/system/macros.h"
10 10
11 namespace mojo { 11 namespace mojo {
12 namespace internal { 12 namespace internal {
13 13
14 // FixedBuffer provides a simple way to allocate objects within a fixed chunk 14 // FixedBuffer provides a simple way to allocate objects within a fixed chunk
15 // of memory. Objects are allocated by calling the |Allocate| method, which 15 // of memory. Objects are allocated by calling the |Allocate| method, which
16 // extends the buffer accordingly. Objects allocated in this way are not freed 16 // extends the buffer accordingly. Objects allocated in this way are not freed
17 // explicitly. Instead, they remain valid so long as the FixedBuffer remains 17 // explicitly. Instead, they remain valid so long as the FixedBuffer remains
18 // valid. The Leak method may be used to steal the underlying memory from the 18 // valid. The Leak method may be used to steal the underlying memory from the
(...skipping 17 matching lines...) Expand all
36 // } 36 // }
37 // 37 //
38 class FixedBuffer : public Buffer { 38 class FixedBuffer : public Buffer {
39 public: 39 public:
40 explicit FixedBuffer(size_t size); 40 explicit FixedBuffer(size_t size);
41 virtual ~FixedBuffer(); 41 virtual ~FixedBuffer();
42 42
43 // Grows the buffer by |num_bytes| and returns a pointer to the start of the 43 // Grows the buffer by |num_bytes| and returns a pointer to the start of the
44 // addition. The resulting address is 8-byte aligned, and the content of the 44 // addition. The resulting address is 8-byte aligned, and the content of the
45 // memory is zero-filled. 45 // memory is zero-filled.
46 virtual void* Allocate(size_t num_bytes, Destructor func = NULL) 46 virtual void* Allocate(size_t num_bytes) MOJO_OVERRIDE;
47 MOJO_OVERRIDE;
48 47
49 size_t size() const { return size_; } 48 size_t size() const { return size_; }
50 49
51 // Returns the internal memory owned by the Buffer to the caller. The Buffer 50 // Returns the internal memory owned by the Buffer to the caller. The Buffer
52 // relinquishes its pointer, effectively resetting the state of the Buffer 51 // relinquishes its pointer, effectively resetting the state of the Buffer
53 // and leaving the caller responsible for freeing the returned memory address 52 // and leaving the caller responsible for freeing the returned memory address
54 // when no longer needed. 53 // when no longer needed.
55 void* Leak(); 54 void* Leak();
56 55
57 private: 56 private:
58 char* ptr_; 57 char* ptr_;
59 size_t cursor_; 58 size_t cursor_;
60 size_t size_; 59 size_t size_;
61 60
62 MOJO_DISALLOW_COPY_AND_ASSIGN(FixedBuffer); 61 MOJO_DISALLOW_COPY_AND_ASSIGN(FixedBuffer);
63 }; 62 };
64 63
65 } // namespace internal 64 } // namespace internal
66 } // namespace mojo 65 } // namespace mojo
67 66
68 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_FIXED_BUFFER_H_ 67 #endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_FIXED_BUFFER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698