21 #ifndef LUNCHBOX_PLUGIN_H
22 #define LUNCHBOX_PLUGIN_H
25 #include <lunchbox/dso.h>
26 #include <lunchbox/visitorResult.h>
31 namespace detail {
class Plugin; }
38 LUNCHBOX_API
Plugin(
const std::string& libraryName );
45 typedef size_t ( *GetNumCompressors_t ) ();
46 typedef void* ( *NewCompressor_t ) (
const unsigned );
47 typedef void ( *DeleteCompressor_t ) (
void* const );
48 typedef void* ( *NewDecompressor_t ) (
const unsigned );
49 typedef void ( *DeleteDecompressor_t ) (
void* const );
50 typedef void ( *Compress_t ) (
void*
const,
const unsigned,
51 void*
const,
const uint64_t*,
53 typedef unsigned ( *GetNumResults_t ) (
void*
const,
const unsigned );
54 typedef void ( *GetResult_t ) (
void*
const,
const unsigned,
55 const unsigned,
void**
const,
57 typedef void ( *Decompress_t ) (
void*
const,
const unsigned,
59 const uint64_t*
const,
60 const unsigned,
void*
const,
63 typedef bool ( *IsCompatible_t ) (
const unsigned,
const GLEWContext* );
64 typedef void ( *Download_t )(
void*
const,
const unsigned,
65 const GLEWContext*,
const uint64_t*,
66 const unsigned,
const uint64_t,
68 typedef void ( *StartDownload_t )(
void*
const,
const unsigned,
69 const GLEWContext*,
const uint64_t*,
70 const unsigned,
const uint64_t );
71 typedef void ( *FinishDownload_t )(
void*
const,
const unsigned,
72 const GLEWContext*,
const uint64_t*,
73 const uint64_t, uint64_t*,
void** );
74 typedef void ( *Upload_t )(
void*
const,
const unsigned,
75 const GLEWContext*,
const void*,
77 const uint64_t,
const uint64_t*,
84 LUNCHBOX_API
bool isGood()
const;
93 bool implementsType(
const uint32_t name )
const;
99 LUNCHBOX_API
const CompressorInfos& getInfos()
const;
148 detail::Plugin*
const impl_;
151 #endif //LUNCHBOX_PLUGIN_H