1323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)// found in the LICENSE file. 4323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 5323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "config.h" 6323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "wtf/ArrayPiece.h" 7323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 8323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "wtf/ArrayBuffer.h" 9323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "wtf/ArrayBufferView.h" 10323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "wtf/Assertions.h" 11323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 12323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)namespace WTF { 13323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 14323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)ArrayPiece::ArrayPiece() 15323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 16323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) initNull(); 17323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 18323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 19323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)ArrayPiece::ArrayPiece(void* data, unsigned byteLength) 20323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 21323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) initWithData(data, byteLength); 22323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 23323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 24323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)ArrayPiece::ArrayPiece(ArrayBuffer* buffer) 25323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 26323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) if (buffer) { 27323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) initWithData(buffer->data(), buffer->byteLength()); 28323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } else { 29323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) initNull(); 30323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } 31323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 32323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 33323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)ArrayPiece::ArrayPiece(ArrayBufferView* buffer) 34323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 35323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) if (buffer) { 36323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) initWithData(buffer->baseAddress(), buffer->byteLength()); 37323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } else { 38323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) initNull(); 39323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) } 40323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 41323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 42323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)bool ArrayPiece::isNull() const 43323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 44323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) return m_isNull; 45323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 46323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 47323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void* ArrayPiece::data() const 48323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 49323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) ASSERT(!isNull()); 50323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) return m_data; 51323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 52323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 53323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)unsigned char* ArrayPiece::bytes() const 54323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 55323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) return static_cast<unsigned char*>(data()); 56323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 57323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 58323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)unsigned ArrayPiece::byteLength() const 59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 60323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) ASSERT(!isNull()); 61323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) return m_byteLength; 62323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 63323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 64323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void ArrayPiece::initWithData(void* data, unsigned byteLength) 65323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 66323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_byteLength = byteLength; 67323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_data = data; 68323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_isNull = false; 69323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 70323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 71323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)void ArrayPiece::initNull() 72323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles){ 73323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_byteLength = 0; 74323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_data = 0; 75323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_isNull = true; 76323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} 77323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 78323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)} // namespace WTF 79