summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/angle/src/libANGLE/BinaryStream.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/angle/src/libANGLE/BinaryStream.h')
-rw-r--r--src/3rdparty/angle/src/libANGLE/BinaryStream.h261
1 files changed, 0 insertions, 261 deletions
diff --git a/src/3rdparty/angle/src/libANGLE/BinaryStream.h b/src/3rdparty/angle/src/libANGLE/BinaryStream.h
deleted file mode 100644
index 3e4c0934cf..0000000000
--- a/src/3rdparty/angle/src/libANGLE/BinaryStream.h
+++ /dev/null
@@ -1,261 +0,0 @@
-//
-// Copyright (c) 2012 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-// BinaryStream.h: Provides binary serialization of simple types.
-
-#ifndef LIBANGLE_BINARYSTREAM_H_
-#define LIBANGLE_BINARYSTREAM_H_
-
-#include <cstddef>
-#include <string>
-#include <vector>
-#include <stdint.h>
-
-#include "common/angleutils.h"
-#include "common/mathutil.h"
-
-namespace gl
-{
-
-class BinaryInputStream : angle::NonCopyable
-{
- public:
- BinaryInputStream(const void *data, size_t length)
- {
- mError = false;
- mOffset = 0;
- mData = static_cast<const uint8_t*>(data);
- mLength = length;
- }
-
- // readInt will generate an error for bool types
- template <class IntT>
- IntT readInt()
- {
- int value = 0;
- read(&value);
- return static_cast<IntT>(value);
- }
-
- template <class IntT>
- void readInt(IntT *outValue)
- {
- *outValue = readInt<IntT>();
- }
-
- template <class IntT, class VectorElementT>
- void readIntVector(std::vector<VectorElementT> *param)
- {
- unsigned int size = readInt<unsigned int>();
- for (unsigned int index = 0; index < size; ++index)
- {
- param->push_back(readInt<IntT>());
- }
- }
-
- bool readBool()
- {
- int value = 0;
- read(&value);
- return (value > 0);
- }
-
- void readBool(bool *outValue)
- {
- *outValue = readBool();
- }
-
- void readBytes(unsigned char outArray[], size_t count)
- {
- read<unsigned char>(outArray, count);
- }
-
- std::string readString()
- {
- std::string outString;
- readString(&outString);
- return outString;
- }
-
- void readString(std::string *v)
- {
- size_t length;
- readInt(&length);
-
- if (mError)
- {
- return;
- }
-
- angle::CheckedNumeric<size_t> checkedOffset(mOffset);
- checkedOffset += length;
-
- if (!checkedOffset.IsValid() || mOffset + length > mLength)
- {
- mError = true;
- return;
- }
-
- v->assign(reinterpret_cast<const char *>(mData) + mOffset, length);
- mOffset = checkedOffset.ValueOrDie();
- }
-
- void skip(size_t length)
- {
- angle::CheckedNumeric<size_t> checkedOffset(mOffset);
- checkedOffset += length;
-
- if (!checkedOffset.IsValid() || mOffset + length > mLength)
- {
- mError = true;
- return;
- }
-
- mOffset = checkedOffset.ValueOrDie();
- }
-
- size_t offset() const
- {
- return mOffset;
- }
-
- bool error() const
- {
- return mError;
- }
-
- bool endOfStream() const
- {
- return mOffset == mLength;
- }
-
- const uint8_t *data()
- {
- return mData;
- }
-
- private:
- bool mError;
- size_t mOffset;
- const uint8_t *mData;
- size_t mLength;
-
- template <typename T>
- void read(T *v, size_t num)
- {
- static_assert(std::is_fundamental<T>::value, "T must be a fundamental type.");
-
- angle::CheckedNumeric<size_t> checkedLength(num);
- checkedLength *= sizeof(T);
- if (!checkedLength.IsValid())
- {
- mError = true;
- return;
- }
-
- angle::CheckedNumeric<size_t> checkedOffset(mOffset);
- checkedOffset += checkedLength;
-
- if (!checkedOffset.IsValid() || checkedOffset.ValueOrDie() > mLength)
- {
- mError = true;
- return;
- }
-
- memcpy(v, mData + mOffset, checkedLength.ValueOrDie());
- mOffset = checkedOffset.ValueOrDie();
- }
-
- template <typename T>
- void read(T *v)
- {
- read(v, 1);
- }
-
-};
-
-class BinaryOutputStream : angle::NonCopyable
-{
- public:
- BinaryOutputStream();
- ~BinaryOutputStream();
-
- // writeInt also handles bool types
- template <class IntT>
- void writeInt(IntT param)
- {
- ASSERT(angle::IsValueInRangeForNumericType<int>(param));
- int intValue = static_cast<int>(param);
- write(&intValue, 1);
- }
-
- // Specialized writeInt for values that can also be exactly -1.
- template <class UintT>
- void writeIntOrNegOne(UintT param)
- {
- if (param == static_cast<UintT>(-1))
- {
- writeInt(-1);
- }
- else
- {
- writeInt(param);
- }
- }
-
- template <class IntT>
- void writeIntVector(std::vector<IntT> param)
- {
- writeInt(param.size());
- for (IntT element : param)
- {
- writeIntOrNegOne(element);
- }
- }
-
- void writeString(const std::string &v)
- {
- writeInt(v.length());
- write(v.c_str(), v.length());
- }
-
- void writeBytes(const unsigned char *bytes, size_t count)
- {
- write(bytes, count);
- }
-
- size_t length() const
- {
- return mData.size();
- }
-
- const void* data() const
- {
- return mData.size() ? &mData[0] : nullptr;
- }
-
- private:
- std::vector<char> mData;
-
- template <typename T>
- void write(const T *v, size_t num)
- {
- static_assert(std::is_fundamental<T>::value, "T must be a fundamental type.");
- const char *asBytes = reinterpret_cast<const char*>(v);
- mData.insert(mData.end(), asBytes, asBytes + num * sizeof(T));
- }
-
-};
-
-inline BinaryOutputStream::BinaryOutputStream()
-{
-}
-
-inline BinaryOutputStream::~BinaryOutputStream() = default;
-
-} // namespace gl
-
-#endif // LIBANGLE_BINARYSTREAM_H_