2
1
mirror of https://github.com/qpdf/qpdf.git synced 2024-05-29 08:20:53 +00:00
qpdf/libqpdf/QPDF_Destroyed.cc
Jay Berkenbilt dba61da1bf Create a special "destroyed" type rather than using null
When a QPDF is destroyed, changing indirect objects to direct nulls
makes them effectively disappear silently when they sneak into other
places. Instead, we should treat this as an error. Adding a destroyed
object type makes this possible.
2022-09-08 10:36:39 -04:00

40 lines
831 B
C++

#include <qpdf/QPDF_Destroyed.hh>
#include <stdexcept>
QPDF_Destroyed::QPDF_Destroyed() :
QPDFValue(::ot_destroyed, "destroyed")
{
}
std::shared_ptr<QPDFValue>
QPDF_Destroyed::getInstance()
{
static std::shared_ptr<QPDFValue> instance(new QPDF_Destroyed());
return instance;
}
std::shared_ptr<QPDFValueProxy>
QPDF_Destroyed::shallowCopy()
{
throw std::logic_error(
"attempted to shallow copy QPDFObjectHandle from destroyed QPDF");
return nullptr;
}
std::string
QPDF_Destroyed::unparse()
{
throw std::logic_error(
"attempted to unparse a QPDFObjectHandle from a destroyed QPDF");
return "";
}
JSON
QPDF_Destroyed::getJSON(int json_version)
{
throw std::logic_error(
"attempted to get JSON from a QPDFObjectHandle from a destroyed QPDF");
return JSON::makeNull();
}