diff options
Diffstat (limited to 'libqpdf/QPDFXRefEntry.cc')
-rw-r--r-- | libqpdf/QPDFXRefEntry.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libqpdf/QPDFXRefEntry.cc b/libqpdf/QPDFXRefEntry.cc new file mode 100644 index 0000000..847fc8e --- /dev/null +++ b/libqpdf/QPDFXRefEntry.cc @@ -0,0 +1,61 @@ +#include <qpdf/QPDFXRefEntry.hh> +#include <qpdf/QPDFExc.hh> +#include <qpdf/QUtil.hh> + +QPDFXRefEntry::QPDFXRefEntry() : + type(0), + field1(0), + field2(0) +{ +} + +QPDFXRefEntry::QPDFXRefEntry(int type, qpdf_offset_t field1, int field2) : + type(type), + field1(field1), + field2(field2) +{ + if ((type < 1) || (type > 2)) + { + throw std::logic_error( + "invalid xref type " + QUtil::int_to_string(type)); + } +} + +int +QPDFXRefEntry::getType() const +{ + return this->type; +} + +qpdf_offset_t +QPDFXRefEntry::getOffset() const +{ + if (this->type != 1) + { + throw std::logic_error( + "getOffset called for xref entry of type != 1"); + } + return this->field1; +} + +int +QPDFXRefEntry::getObjStreamNumber() const +{ + if (this->type != 2) + { + throw std::logic_error( + "getObjStreamNumber called for xref entry of type != 2"); + } + return (int) this->field1; +} + +int +QPDFXRefEntry::getObjStreamIndex() const +{ + if (this->type != 2) + { + throw std::logic_error( + "getObjStreamIndex called for xref entry of type != 2"); + } + return this->field2; +} |