mirror of
https://github.com/qpdf/qpdf.git
synced 2025-01-03 15:17:29 +00:00
Mark non-ABI symbols in exported class with QPDF_DLL_PRIVATE
This commit is contained in:
parent
5525c93124
commit
5f4675bb24
24
TODO
24
TODO
@ -30,31 +30,17 @@ Misc
|
|||||||
encryption dictionary normally.
|
encryption dictionary normally.
|
||||||
* Have a warn in QPDF that passes its variable arguments onto QPDFExc
|
* Have a warn in QPDF that passes its variable arguments onto QPDFExc
|
||||||
so you don't have to do warn(QPDFExc(...))
|
so you don't have to do warn(QPDFExc(...))
|
||||||
|
* Nice to have:
|
||||||
|
* Split qpdf.test into multiple tests
|
||||||
|
* Rework tests so that nothing is written into the source directory.
|
||||||
|
* Ideally then the entire build could be done with a read-only
|
||||||
|
source tree.
|
||||||
|
|
||||||
Soon: Break ground on "Document-level work"
|
Soon: Break ground on "Document-level work"
|
||||||
|
|
||||||
cmake
|
cmake
|
||||||
=====
|
=====
|
||||||
|
|
||||||
* DLL.h
|
|
||||||
* The effect of QPDF_DLL_CLASS is to export everything in the class,
|
|
||||||
not just the vtable. On MSVC, we don't need this as the vtable
|
|
||||||
gets exported automatically when needed. With gcc, we need it to
|
|
||||||
export typeinfo and vtable. Whenever QPDF_DLL_CLASS is defined,
|
|
||||||
also define QPDF_DLL_LOCAL to __attribute__
|
|
||||||
((visibility("hidden"))). Then add QPDF_DLL_LOCAL to everything in
|
|
||||||
QPDF_DLL_CLASS that is not marked with QPDF_DLL. The effect is
|
|
||||||
that, with MSVC, only methods are marked QPDF_DLL are public
|
|
||||||
because QPDF_DLL_CLASS is empty. For gcc, only methods marked
|
|
||||||
QPDF_DLL are public because QPDF_DLL_LOCAL makes the other things
|
|
||||||
private. See https://gcc.gnu.org/wiki/Visibility. Make sure this
|
|
||||||
is documented.
|
|
||||||
* Update "CODING RULES" in "README-maintainer" - search for QPDF_DLL
|
|
||||||
* Nice to have:
|
|
||||||
* Split qpdf.test into multiple tests
|
|
||||||
* Rework tests so that nothing is written into the source directory.
|
|
||||||
* Ideally then the entire build could be done with a read-only
|
|
||||||
source tree.
|
|
||||||
* pikepdf
|
* pikepdf
|
||||||
* https://github.com/pikepdf/pikepdf/pull/315 -- setup.py + docs
|
* https://github.com/pikepdf/pikepdf/pull/315 -- setup.py + docs
|
||||||
* https://github.com/pikepdf/pikepdf/pull/316 -- setup.py only
|
* https://github.com/pikepdf/pikepdf/pull/316 -- setup.py only
|
||||||
|
@ -68,7 +68,9 @@ class QPDF_DLL_CLASS ClosedFileInputSource: public InputSource
|
|||||||
ClosedFileInputSource(ClosedFileInputSource const&) = delete;
|
ClosedFileInputSource(ClosedFileInputSource const&) = delete;
|
||||||
ClosedFileInputSource& operator=(ClosedFileInputSource const&) = delete;
|
ClosedFileInputSource& operator=(ClosedFileInputSource const&) = delete;
|
||||||
|
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void before();
|
void before();
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void after();
|
void after();
|
||||||
|
|
||||||
class QPDF_DLL_PRIVATE Members
|
class QPDF_DLL_PRIVATE Members
|
||||||
|
@ -104,7 +104,7 @@ class QPDF_DLL_CLASS InputSource
|
|||||||
qpdf_offset_t last_offset;
|
qpdf_offset_t last_offset;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class Members
|
class QPDF_DLL_PRIVATE Members
|
||||||
{
|
{
|
||||||
friend class InputSource;
|
friend class InputSource;
|
||||||
|
|
||||||
|
@ -70,7 +70,9 @@ class QPDF_DLL_CLASS Pl_DCT: public Pipeline
|
|||||||
virtual void finish();
|
virtual void finish();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void compress(void* cinfo, Buffer*);
|
void compress(void* cinfo, Buffer*);
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void decompress(void* cinfo, Buffer*);
|
void decompress(void* cinfo, Buffer*);
|
||||||
|
|
||||||
enum action_e { a_compress, a_decompress };
|
enum action_e { a_compress, a_decompress };
|
||||||
|
@ -30,7 +30,6 @@ class QPDF_DLL_CLASS Pl_Flate: public Pipeline
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static unsigned int const def_bufsize = 65536;
|
static unsigned int const def_bufsize = 65536;
|
||||||
static int compression_level;
|
|
||||||
|
|
||||||
enum action_e { a_inflate, a_deflate };
|
enum action_e { a_inflate, a_deflate };
|
||||||
|
|
||||||
@ -61,10 +60,16 @@ class QPDF_DLL_CLASS Pl_Flate: public Pipeline
|
|||||||
void setWarnCallback(std::function<void(char const*, int)> callback);
|
void setWarnCallback(std::function<void(char const*, int)> callback);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void handleData(unsigned char* data, size_t len, int flush);
|
void handleData(unsigned char* data, size_t len, int flush);
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void checkError(char const* prefix, int error_code);
|
void checkError(char const* prefix, int error_code);
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void warn(char const*, int error_code);
|
void warn(char const*, int error_code);
|
||||||
|
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
|
static int compression_level;
|
||||||
|
|
||||||
class QPDF_DLL_PRIVATE Members
|
class QPDF_DLL_PRIVATE Members
|
||||||
{
|
{
|
||||||
friend class Pl_Flate;
|
friend class Pl_Flate;
|
||||||
|
@ -40,8 +40,11 @@ class QPDF_DLL_CLASS Pl_RunLength: public Pipeline
|
|||||||
virtual void finish();
|
virtual void finish();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void encode(unsigned char* data, size_t len);
|
void encode(unsigned char* data, size_t len);
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void decode(unsigned char* data, size_t len);
|
void decode(unsigned char* data, size_t len);
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void flush_encode();
|
void flush_encode();
|
||||||
|
|
||||||
enum state_e { st_top, st_copying, st_run };
|
enum state_e { st_top, st_copying, st_run };
|
||||||
|
@ -66,6 +66,7 @@ class QPDF_DLL_CLASS QPDFExc: public std::runtime_error
|
|||||||
std::string const& getMessageDetail() const;
|
std::string const& getMessageDetail() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
static std::string createWhat(
|
static std::string createWhat(
|
||||||
std::string const& filename,
|
std::string const& filename,
|
||||||
std::string const& object,
|
std::string const& object,
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
class QPDF;
|
class QPDF;
|
||||||
class QPDFObjectHandle;
|
class QPDFObjectHandle;
|
||||||
|
|
||||||
class QPDF_DLL_CLASS QPDFObject
|
class QPDFObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QPDFObject();
|
QPDFObject();
|
||||||
|
@ -204,6 +204,7 @@ class QPDFObjectHandle
|
|||||||
void writeToken(QPDFTokenizer::Token const&);
|
void writeToken(QPDFTokenizer::Token const&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
void setPipeline(Pipeline*);
|
void setPipeline(Pipeline*);
|
||||||
|
|
||||||
Pipeline* pipeline;
|
Pipeline* pipeline;
|
||||||
|
@ -47,6 +47,7 @@ class QPDF_DLL_CLASS QPDFSystemError: public std::runtime_error
|
|||||||
int getErrno() const;
|
int getErrno() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
QPDF_DLL_PRIVATE
|
||||||
static std::string
|
static std::string
|
||||||
createWhat(std::string const& description, int system_errno);
|
createWhat(std::string const& description, int system_errno);
|
||||||
|
|
||||||
|
@ -34,9 +34,8 @@ class QPDF_DLL_CLASS RandomDataProvider
|
|||||||
virtual void provideRandomData(unsigned char* data, size_t len) = 0;
|
virtual void provideRandomData(unsigned char* data, size_t len) = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
RandomDataProvider()
|
QPDF_DLL_PRIVATE
|
||||||
{
|
RandomDataProvider() = default;
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
RandomDataProvider(RandomDataProvider const&) = delete;
|
RandomDataProvider(RandomDataProvider const&) = delete;
|
||||||
|
@ -33,7 +33,6 @@
|
|||||||
#include <qpdf/QPDFNameTreeObjectHelper.hh>
|
#include <qpdf/QPDFNameTreeObjectHelper.hh>
|
||||||
#include <qpdf/QPDFNumberTreeObjectHelper.hh>
|
#include <qpdf/QPDFNumberTreeObjectHelper.hh>
|
||||||
#include <qpdf/QPDFObjGen.hh>
|
#include <qpdf/QPDFObjGen.hh>
|
||||||
#include <qpdf/QPDFObject.hh>
|
|
||||||
#include <qpdf/QPDFObjectHandle.hh>
|
#include <qpdf/QPDFObjectHandle.hh>
|
||||||
#include <qpdf/QPDFOutlineDocumentHelper.hh>
|
#include <qpdf/QPDFOutlineDocumentHelper.hh>
|
||||||
#include <qpdf/QPDFOutlineObjectHelper.hh>
|
#include <qpdf/QPDFOutlineObjectHelper.hh>
|
||||||
@ -50,10 +49,6 @@
|
|||||||
#define ignore_class(cls)
|
#define ignore_class(cls)
|
||||||
#define print_size(cls) std::cout << #cls << " " << sizeof(cls) << std::endl
|
#define print_size(cls) std::cout << #cls << " " << sizeof(cls) << std::endl
|
||||||
|
|
||||||
// This is public because of QPDF_DLL_CLASS on InputSource
|
|
||||||
// -------
|
|
||||||
ignore_class(InputSource::Members);
|
|
||||||
|
|
||||||
// These are not classes
|
// These are not classes
|
||||||
// -------
|
// -------
|
||||||
ignore_class(QUtil);
|
ignore_class(QUtil);
|
||||||
@ -105,7 +100,6 @@ main()
|
|||||||
print_size(QPDFNumberTreeObjectHelper);
|
print_size(QPDFNumberTreeObjectHelper);
|
||||||
print_size(QPDFNumberTreeObjectHelper::iterator);
|
print_size(QPDFNumberTreeObjectHelper::iterator);
|
||||||
print_size(QPDFObjGen);
|
print_size(QPDFObjGen);
|
||||||
print_size(QPDFObject);
|
|
||||||
print_size(QPDFObjectHandle);
|
print_size(QPDFObjectHandle);
|
||||||
print_size(QPDFObjectHandle::ParserCallbacks);
|
print_size(QPDFObjectHandle::ParserCallbacks);
|
||||||
print_size(QPDFObjectHandle::QPDFArrayItems);
|
print_size(QPDFObjectHandle::QPDFArrayItems);
|
||||||
|
Loading…
Reference in New Issue
Block a user