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. 4 5 #include "config.h" 6 #include "wtf/ArrayPiece.h" 7 8 #include "wtf/ArrayBuffer.h" 9 #include "wtf/ArrayBufferView.h" 10 #include "wtf/Assertions.h" 11 12 namespace WTF { 13 ArrayPiece()14ArrayPiece::ArrayPiece() 15 { 16 initNull(); 17 } 18 ArrayPiece(void * data,unsigned byteLength)19ArrayPiece::ArrayPiece(void* data, unsigned byteLength) 20 { 21 initWithData(data, byteLength); 22 } 23 ArrayPiece(ArrayBuffer * buffer)24ArrayPiece::ArrayPiece(ArrayBuffer* buffer) 25 { 26 if (buffer) { 27 initWithData(buffer->data(), buffer->byteLength()); 28 } else { 29 initNull(); 30 } 31 } 32 ArrayPiece(ArrayBufferView * buffer)33ArrayPiece::ArrayPiece(ArrayBufferView* buffer) 34 { 35 if (buffer) { 36 initWithData(buffer->baseAddress(), buffer->byteLength()); 37 } else { 38 initNull(); 39 } 40 } 41 isNull() const42bool ArrayPiece::isNull() const 43 { 44 return m_isNull; 45 } 46 data() const47void* ArrayPiece::data() const 48 { 49 ASSERT(!isNull()); 50 return m_data; 51 } 52 bytes() const53unsigned char* ArrayPiece::bytes() const 54 { 55 return static_cast<unsigned char*>(data()); 56 } 57 byteLength() const58unsigned ArrayPiece::byteLength() const 59 { 60 ASSERT(!isNull()); 61 return m_byteLength; 62 } 63 initWithData(void * data,unsigned byteLength)64void ArrayPiece::initWithData(void* data, unsigned byteLength) 65 { 66 m_byteLength = byteLength; 67 m_data = data; 68 m_isNull = false; 69 } 70 initNull()71void ArrayPiece::initNull() 72 { 73 m_byteLength = 0; 74 m_data = 0; 75 m_isNull = true; 76 } 77 78 } // namespace WTF 79