diff --git a/README-maintainer.md b/README-maintainer.md index c8fb847..73c5efd 100644 --- a/README-maintainer.md +++ b/README-maintainer.md @@ -200,7 +200,15 @@ Building docs from pull requests is also enabled. * Test code: #include first. * Debug code: #include first and use - qpdf_assert_debug instead of assert. + qpdf_assert_debug instead of assert. Note that + includes assert_debug.h. Include this instead if 'At most one + qpdf/assert header ...' errors are encounted, especially when + using assert in private header files. + * Use 'qpdf_expect', 'qpdf_static_expect', 'qpdf_ensures' and + 'qpdf_ionvariant' to document pre/post-conditions and ivariants. + This requires inclusion of 'assert_debug.h' or 'Util.hh'. Remember + that these (except for 'qpdf_static_expect') are only checked in + debug builds. These rules are enforced by the check-assert test. This practices serves to diff --git a/libqpdf/Pl_Base64.cc b/libqpdf/Pl_Base64.cc index 68d3fa3..0d48c7b 100644 --- a/libqpdf/Pl_Base64.cc +++ b/libqpdf/Pl_Base64.cc @@ -1,9 +1,6 @@ -#include - #include #include -#include #include #include diff --git a/libqpdf/QPDFObjectHandle.cc b/libqpdf/QPDFObjectHandle.cc index f3d909d..0b40d5b 100644 --- a/libqpdf/QPDFObjectHandle.cc +++ b/libqpdf/QPDFObjectHandle.cc @@ -1,5 +1,3 @@ -#include - #include #include diff --git a/libqpdf/QPDFWriter.cc b/libqpdf/QPDFWriter.cc index 29bb95c..7e8971d 100644 --- a/libqpdf/QPDFWriter.cc +++ b/libqpdf/QPDFWriter.cc @@ -1,5 +1,3 @@ -#include - #include // include early for large file support #include diff --git a/libqpdf/QPDF_encryption.cc b/libqpdf/QPDF_encryption.cc index 5a7839d..5e25d72 100644 --- a/libqpdf/QPDF_encryption.cc +++ b/libqpdf/QPDF_encryption.cc @@ -1,7 +1,4 @@ -// This file implements methods from the QPDF class that involve -// encryption. - -#include +// This file implements methods from the QPDF class that involve encryption. #include diff --git a/libqpdf/QPDF_optimization.cc b/libqpdf/QPDF_optimization.cc index e773737..e0cb73f 100644 --- a/libqpdf/QPDF_optimization.cc +++ b/libqpdf/QPDF_optimization.cc @@ -1,7 +1,5 @@ // See the "Optimization" section of the manual. -#include - #include #include diff --git a/libqpdf/qpdf/InputSource_private.hh b/libqpdf/qpdf/InputSource_private.hh index 7732ea1..944ee54 100644 --- a/libqpdf/qpdf/InputSource_private.hh +++ b/libqpdf/qpdf/InputSource_private.hh @@ -3,6 +3,7 @@ #include #include +#include #include #include diff --git a/libqpdf/qpdf/Pipeline_private.hh b/libqpdf/qpdf/Pipeline_private.hh index eecae0c..5de7501 100644 --- a/libqpdf/qpdf/Pipeline_private.hh +++ b/libqpdf/qpdf/Pipeline_private.hh @@ -1,10 +1,12 @@ #ifndef PIPELINE_PRIVATE_HH #define PIPELINE_PRIVATE_HH +#include + #include #include -#include +#include namespace qpdf::pl { diff --git a/libqpdf/qpdf/Util.hh b/libqpdf/qpdf/Util.hh index 55b1767..d641e9c 100644 --- a/libqpdf/qpdf/Util.hh +++ b/libqpdf/qpdf/Util.hh @@ -1,13 +1,16 @@ #ifndef UTIL_HH #define UTIL_HH +#include + #include +#include namespace qpdf::util { - // This is a collection of useful utility functions for qpdf internal use. They include inline - // functions, some of which are exposed as regular functions in QUtil. Implementations are in - // QUtil.cc. + // qpdf::util is a collection of useful utility functions for qpdf internal use. It includes + // inline functions, some of which are exposed as regular functions in QUtil. Implementations + // are in QUtil.cc. inline constexpr char hex_decode_char(char digit) diff --git a/libqpdf/qpdf/assert_debug.h b/libqpdf/qpdf/assert_debug.h index 0543d8f..0b3f699 100644 --- a/libqpdf/qpdf/assert_debug.h +++ b/libqpdf/qpdf/assert_debug.h @@ -12,7 +12,15 @@ #else # define QPDF_ASSERT_H -# include +# include # define qpdf_assert_debug assert +// Alias for assert. Pre-condition is only enforced in debug builds. +# define qpdf_expect assert +// Alias for assert. Post-condition is only enforced in debug builds. +# define qpdf_ensures assert +// Alias for assert. Invariant is only enforced in debug builds. +# define qpdf_invariant assert +// Alias for static_assert. +# define qpdf_static_expect static_assert #endif /* QPDF_ASSERT_H */