// Copyright 2014 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.

#ifndef SKY_ENGINE_WTF_ARRAYPIECE_H_
#define SKY_ENGINE_WTF_ARRAYPIECE_H_

#include "sky/engine/wtf/Forward.h"
#include "sky/engine/wtf/WTFExport.h"

namespace WTF {

// This class is for passing around un-owned bytes as a pointer + length.
// It supports implicit conversion from several other data types.
//
// ArrayPiece has the concept of being "null". This is different from an empty
// byte range. It is invalid to call methods other than isNull() on such
// instances.
//
// IMPORTANT: The data contained by ArrayPiece is NOT OWNED, so caution must be
//            taken to ensure it is kept alive.
class WTF_EXPORT ArrayPiece {
public:
    // Constructs a "null" ArrayPiece object.
    ArrayPiece();

    ArrayPiece(void* data, unsigned byteLength);

    // Constructs an ArrayPiece from the given ArrayBuffer. If the input is a
    // nullptr, then the constructed instance will be isNull().
    ArrayPiece(ArrayBuffer*);
    ArrayPiece(ArrayBufferView*);

    bool isNull() const;
    void* data() const;
    unsigned char* bytes() const;
    unsigned byteLength() const;

private:
    void initWithData(void* data, unsigned byteLength);
    void initNull();

    void* m_data;
    unsigned m_byteLength;
    bool m_isNull;
};

} // namespace WTF

using WTF::ArrayPiece;

#endif  // SKY_ENGINE_WTF_ARRAYPIECE_H_
