Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / third_party / WebKit / Source / wtf / ArrayPiece.h
blob7c7c7f1619fe4a81ae1b66f455746549184dcf09
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
3 // found in the LICENSE file.
5 #ifndef ArrayPiece_h
6 #define ArrayPiece_h
8 #include "wtf/Forward.h"
9 #include "wtf/WTFExport.h"
11 namespace WTF {
13 // This class is for passing around un-owned bytes as a pointer + length.
14 // It supports implicit conversion from several other data types.
16 // ArrayPiece has the concept of being "null". This is different from an empty
17 // byte range. It is invalid to call methods other than isNull() on such
18 // instances.
20 // IMPORTANT: The data contained by ArrayPiece is NOT OWNED, so caution must be
21 // taken to ensure it is kept alive.
22 class WTF_EXPORT ArrayPiece {
23 public:
24 // Constructs a "null" ArrayPiece object.
25 ArrayPiece();
27 ArrayPiece(void* data, unsigned byteLength);
29 // Constructs an ArrayPiece from the given ArrayBuffer. If the input is a
30 // nullptr, then the constructed instance will be isNull().
31 ArrayPiece(ArrayBuffer*);
32 ArrayPiece(ArrayBufferView*);
34 bool isNull() const;
35 void* data() const;
36 unsigned char* bytes() const;
37 unsigned byteLength() const;
39 protected:
40 void initWithData(void* data, unsigned byteLength);
42 private:
43 void initNull();
45 void* m_data;
46 unsigned m_byteLength;
47 bool m_isNull;
50 } // namespace WTF
52 using WTF::ArrayPiece;
54 #endif // ArrayPiece_h