libragephoto: add opt-in C++17 support

- RagePhoto(A): add jpeg_view() function
- CMakeLists.txt: move C++17 and WebAssembly stuff inside include files
This commit is contained in:
Syping 2023-03-03 03:26:59 +01:00
parent 4ca8ac9297
commit 3c433ca072
8 changed files with 102 additions and 35 deletions

View file

@ -602,6 +602,16 @@ const std::string RagePhoto::jpeg() const
return std::string();
}
#if (RAGEPHOTO_CXX_STD >= 17) && (__cplusplus >= 201703L)
const std::string_view RagePhoto::jpeg_view() const
{
if (m_data->jpeg)
return std::string_view(m_data->jpeg, m_data->jpegSize);
else
return std::string_view();
}
#endif
const char* RagePhoto::jpegData() const
{
return m_data->jpeg;

View file

@ -115,6 +115,9 @@ public:
int32_t error() const; /**< Returns the last error occurred. */
uint32_t format() const; /**< Returns the Photo Format (GTA V or RDR 2). */
const std::string jpeg() const; /**< Returns the Photo JPEG data. */
#if (RAGEPHOTO_CXX_STD >= 17) && (__cplusplus >= 201703L)
const std::string_view jpeg_view() const; /**< Returns the Photo JPEG data. */
#endif
const char* jpegData() const; /**< Returns the Photo JPEG data. */
uint32_t jpegSize() const; /**< Returns the Photo JPEG data size. */
const char* description() const; /**< Returns the Photo description. */

View file

@ -147,8 +147,22 @@ public:
}
/** Returns the Photo JPEG data. */
const std::string jpeg() const {
return std::string(ragephoto_getphotojpeg(instance), ragephoto_getphotosize(instance));
const char *jpegData = ragephoto_getphotojpeg(instance);
if (jpegData)
return std::string(jpegData, ragephoto_getphotosize(instance));
else
return std::string();
}
#if (__cplusplus >= 201703L)
/** Returns the Photo JPEG data. */
const std::string_view jpeg_view() const {
const char *jpegData = ragephoto_getphotojpeg(instance);
if (jpegData)
return std::string_view(jpegData, ragephoto_getphotosize(instance));
else
return std::string_view();
}
#endif
/** Returns the Photo JPEG data. */
const char* jpegData() const {
return ragephoto_getphotojpeg(instance);
@ -308,6 +322,8 @@ public:
private:
ragephoto_t instance;
};
#else
#include "RagePhotoC.h"
#endif // __cplusplus
#endif // RAGEPHOTOA_H

View file

@ -22,6 +22,7 @@
/* CMAKE CONFIG BEGIN */
#define @LIBRAGEPHOTO_API@
#define @LIBRAGEPHOTO_LIBTYPE@
#define RAGEPHOTO_CXX_STD @CMAKE_CXX_STANDARD@
#define RAGEPHOTO_VERSION "@ragephoto_VERSION@"
#define RAGEPHOTO_VERSION_MAJOR @ragephoto_VERSION_MAJOR@
#define RAGEPHOTO_VERSION_MINOR @ragephoto_VERSION_MINOR@