File wkb.cpp
Go to the documentation of this file
// Copyright (c) 2012-2013, IGN France.
// Copyright (c) 2012-2023, Oslandia.
// SPDX-License-Identifier: LGPL-2.0-or-later
#include "SFCGAL/io/wkb.h"
#include "SFCGAL/Exception.h"
#include "SFCGAL/detail/io/WkbReader.h"
#include "SFCGAL/detail/io/WkbWriter.h"
#include "SFCGAL/detail/tools/CharArrayBuffer.h"
using namespace SFCGAL::detail::io;
namespace SFCGAL::io {
auto
readWkb(std::istream &stream, bool asHexString) -> std::unique_ptr<Geometry>
{
  WkbReader wkbReader(stream, asHexString);
  wkbReader.readWkb();
  return wkbReader.geometry();
}
auto
readWkb(const std::string &s, bool asHexString) -> std::unique_ptr<Geometry>
{
  std::istringstream iss(s);
  WkbReader          wkbReader(iss, asHexString);
  wkbReader.readWkb();
  return wkbReader.geometry();
}
auto
readWkb(const char *str, size_t len, bool asHexString)
    -> std::unique_ptr<Geometry>
{
  CharArrayBuffer buf(str, str + len);
  std::istream    istr(&buf);
  return readWkb(istr, asHexString);
}
auto
readEwkb(std::istream &stream, bool asHexString)
    -> std::unique_ptr<PreparedGeometry>
{
  WkbReader wkbReader(stream, asHexString);
  wkbReader.readWkb();
  return wkbReader.preparedGeometry();
}
auto
readEwkb(const std::string &s, bool asHexString)
    -> std::unique_ptr<PreparedGeometry>
{
  std::istringstream iss(s);
  WkbReader          wkbReader(iss, asHexString);
  wkbReader.readWkb();
  return wkbReader.preparedGeometry();
}
auto
readEwkb(const char *str, size_t len, bool asHexString)
    -> std::unique_ptr<PreparedGeometry>
{
  CharArrayBuffer buf(str, str + len);
  std::istream    istr(&buf);
  return readEwkb(istr, asHexString);
}
} // namespace SFCGAL::io