feat: update cbindgen
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
#define WFASSOCPP_H_
|
#define WFASSOCPP_H_
|
||||||
|
|
||||||
#include "wfassoc.h"
|
#include "wfassoc.h"
|
||||||
#include <memory>
|
#include <optional>
|
||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
@@ -143,7 +143,7 @@ public:
|
|||||||
std::string GetName() {
|
std::string GetName() {
|
||||||
const char* name = nullptr;
|
const char* name = nullptr;
|
||||||
_Check(wfassoc::WFExtStatusGetName(_token, &name));
|
_Check(wfassoc::WFExtStatusGetName(_token, &name));
|
||||||
return name ? std::string(name) : std::string();
|
return std::string(name);
|
||||||
}
|
}
|
||||||
|
|
||||||
HICON GetIcon() {
|
HICON GetIcon() {
|
||||||
@@ -156,21 +156,21 @@ private:
|
|||||||
Token _token;
|
Token _token;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Ext {
|
class SelfExtStatus {
|
||||||
public:
|
public:
|
||||||
explicit Ext(Token token) : _token(token) {}
|
explicit SelfExtStatus(Token token) : _token(token) {}
|
||||||
~Ext() {
|
~SelfExtStatus() {
|
||||||
if (_token != _INVALID_TOKEN()) {
|
if (_token != _INVALID_TOKEN()) {
|
||||||
wfassoc::WFExtDestroy(_token);
|
wfassoc::WFSelfExtStatusDestroy(_token);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ext(const Ext&) = delete;
|
SelfExtStatus(const SelfExtStatus&) = delete;
|
||||||
Ext& operator=(const Ext&) = delete;
|
SelfExtStatus& operator=(const SelfExtStatus&) = delete;
|
||||||
Ext(Ext&& other) noexcept : _token(other._token) { other._token = _INVALID_TOKEN(); }
|
SelfExtStatus(SelfExtStatus&& other) noexcept : _token(other._token) { other._token = _INVALID_TOKEN(); }
|
||||||
Ext& operator=(Ext&& other) noexcept {
|
SelfExtStatus& operator=(SelfExtStatus&& other) noexcept {
|
||||||
if (this != &other) {
|
if (this != &other) {
|
||||||
if (_token != _INVALID_TOKEN()) {
|
if (_token != _INVALID_TOKEN()) {
|
||||||
wfassoc::WFExtDestroy(_token);
|
wfassoc::WFSelfExtStatusDestroy(_token);
|
||||||
}
|
}
|
||||||
_token = other._token;
|
_token = other._token;
|
||||||
other._token = _INVALID_TOKEN();
|
other._token = _INVALID_TOKEN();
|
||||||
@@ -178,15 +178,27 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetInner() {
|
std::string GetName() {
|
||||||
|
const char* name = nullptr;
|
||||||
|
_Check(wfassoc::WFSelfExtStatusGetName(_token, &name));
|
||||||
|
return std::string(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
HICON GetIcon() {
|
||||||
|
HICON icon = nullptr;
|
||||||
|
_Check(wfassoc::WFSelfExtStatusGetIcon(_token, &icon));
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string GetExt() {
|
||||||
const char* inner = nullptr;
|
const char* inner = nullptr;
|
||||||
_Check(wfassoc::WFExtGetInner(_token, &inner));
|
_Check(wfassoc::WFSelfExtStatusGetExt(_token, &inner));
|
||||||
return std::string(inner);
|
return std::string(inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string GetDottedInner() {
|
std::string GetDottedExt() {
|
||||||
const char* inner = nullptr;
|
const char* inner = nullptr;
|
||||||
_Check(wfassoc::WFExtGetDottedInner(_token, &inner));
|
_Check(wfassoc::WFSelfExtStatusGetDottedExt(_token, &inner));
|
||||||
return std::string(inner);
|
return std::string(inner);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -196,8 +208,8 @@ private:
|
|||||||
|
|
||||||
class Program {
|
class Program {
|
||||||
public:
|
public:
|
||||||
explicit Program(std::unique_ptr<Schema>&& schema) {
|
explicit Program(Schema&& schema) {
|
||||||
_Check(wfassoc::WFProgramCreate(schema->Release(), &_token));
|
_Check(wfassoc::WFProgramCreate(schema.Release(), &_token));
|
||||||
}
|
}
|
||||||
~Program() {
|
~Program() {
|
||||||
if (_token != _INVALID_TOKEN()) {
|
if (_token != _INVALID_TOKEN()) {
|
||||||
@@ -218,19 +230,23 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string ResolveName() {
|
std::optional<std::string> ResolveName() {
|
||||||
const char* name = nullptr;
|
const char* name = nullptr;
|
||||||
_Check(wfassoc::WFProgramResolveName(_token, &name));
|
_Check(wfassoc::WFProgramResolveName(_token, &name));
|
||||||
return name ? std::string(name) : std::string();
|
if (name == nullptr) {
|
||||||
|
return std::nullopt;
|
||||||
|
} else {
|
||||||
|
return std::string(name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<IconRc> ResolveIcon() {
|
std::optional<IconRc> ResolveIcon() {
|
||||||
Token token = _INVALID_TOKEN();
|
Token token = _INVALID_TOKEN();
|
||||||
_Check(wfassoc::WFProgramResolveIcon(_token, &token));
|
_Check(wfassoc::WFProgramResolveIcon(_token, &token));
|
||||||
if (token == _INVALID_TOKEN()) {
|
if (token == _INVALID_TOKEN()) {
|
||||||
return nullptr;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
return std::make_unique<IconRc>(token);
|
return IconRc(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t ExtsLen() {
|
size_t ExtsLen() {
|
||||||
@@ -239,18 +255,18 @@ public:
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<Ext> GetExt(size_t index) {
|
|
||||||
Token token = _INVALID_TOKEN();
|
|
||||||
_Check(wfassoc::WFProgramGetExt(_token, index, &token));
|
|
||||||
return std::make_unique<Ext>(token);
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t FindExt(const char* body) {
|
size_t FindExt(const char* body) {
|
||||||
size_t index = INVALID_INDEX;
|
size_t index = INVALID_INDEX;
|
||||||
_Check(wfassoc::WFProgramFindExt(_token, body, &index));
|
_Check(wfassoc::WFProgramFindExt(_token, body, &index));
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SelfExtStatus ResolveExt(size_t index) {
|
||||||
|
Token token = _INVALID_TOKEN();
|
||||||
|
_Check(wfassoc::WFProgramResolveExt(_token, index, &token));
|
||||||
|
return SelfExtStatus(token);
|
||||||
|
}
|
||||||
|
|
||||||
void Register(Scope scope) { _Check(wfassoc::WFProgramRegister(_token, scope)); }
|
void Register(Scope scope) { _Check(wfassoc::WFProgramRegister(_token, scope)); }
|
||||||
void Unregister(Scope scope) { _Check(wfassoc::WFProgramUnregister(_token, scope)); }
|
void Unregister(Scope scope) { _Check(wfassoc::WFProgramUnregister(_token, scope)); }
|
||||||
|
|
||||||
@@ -263,13 +279,13 @@ public:
|
|||||||
void LinkExt(Scope scope, size_t index) { _Check(wfassoc::WFProgramLinkExt(_token, scope, index)); }
|
void LinkExt(Scope scope, size_t index) { _Check(wfassoc::WFProgramLinkExt(_token, scope, index)); }
|
||||||
void UnlinkExt(Scope scope, size_t index) { _Check(wfassoc::WFProgramUnlinkExt(_token, scope, index)); }
|
void UnlinkExt(Scope scope, size_t index) { _Check(wfassoc::WFProgramUnlinkExt(_token, scope, index)); }
|
||||||
|
|
||||||
std::unique_ptr<ExtStatus> QueryExt(View view, size_t index) {
|
std::optional<ExtStatus> QueryExt(View view, size_t index) {
|
||||||
Token token = _INVALID_TOKEN();
|
Token token = _INVALID_TOKEN();
|
||||||
_Check(wfassoc::WFProgramQueryExt(_token, view, index, &token));
|
_Check(wfassoc::WFProgramQueryExt(_token, view, index, &token));
|
||||||
if (token == _INVALID_TOKEN()) {
|
if (token == _INVALID_TOKEN()) {
|
||||||
return nullptr;
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
return std::make_unique<ExtStatus>(token);
|
return ExtStatus(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -36,6 +36,15 @@ using CStyleString = const char*;
|
|||||||
* And we expose this type as an opaque handle for visiting your created object.
|
* And we expose this type as an opaque handle for visiting your created object.
|
||||||
*/
|
*/
|
||||||
using Token = uint64_t;
|
using Token = uint64_t;
|
||||||
|
#else // __cplusplus
|
||||||
|
typedef const char *CStyleString;
|
||||||
|
typedef uint64_t Token;
|
||||||
|
#endif // __cplusplus
|
||||||
|
|
||||||
|
|
||||||
|
// Special treat for ICON because it may be defined by Windows header.
|
||||||
|
#ifndef _WINDEF_
|
||||||
|
#ifdef __cplusplus
|
||||||
/**
|
/**
|
||||||
* @brief Type representing an icon handle (opaque pointer)
|
* @brief Type representing an icon handle (opaque pointer)
|
||||||
*
|
*
|
||||||
@@ -43,10 +52,9 @@ using Token = uint64_t;
|
|||||||
*/
|
*/
|
||||||
using HICON = void*;
|
using HICON = void*;
|
||||||
#else // __cplusplus
|
#else // __cplusplus
|
||||||
typedef const char *CStyleString;
|
|
||||||
typedef uint64_t Token;
|
|
||||||
typedef void *HICON;
|
typedef void *HICON;
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
@@ -136,6 +144,9 @@ bool WFShutdown(void);
|
|||||||
*
|
*
|
||||||
* The execution of this function do not need to be wrapped by WFStartup() and WFShutdown().
|
* The execution of this function do not need to be wrapped by WFStartup() and WFShutdown().
|
||||||
*
|
*
|
||||||
|
* The string this function return use different buffer with function return string value.
|
||||||
|
* So you don't worry about that calling this function may invalidate function function return string value.
|
||||||
|
*
|
||||||
* @return Null-terminated UTF-8 string containing the error message.
|
* @return Null-terminated UTF-8 string containing the error message.
|
||||||
* If no error has occurred, the string is empty.
|
* If no error has occurred, the string is empty.
|
||||||
* There is no possibility of a NULL return value.
|
* There is no possibility of a NULL return value.
|
||||||
@@ -315,6 +326,9 @@ bool WFSchemaAddExt(Token in_schema,
|
|||||||
* It means that the Schema object cannot be used after this call.
|
* It means that the Schema object cannot be used after this call.
|
||||||
* And you do not need to call WFSchemaDestroy() for this Schema object after this call.
|
* And you do not need to call WFSchemaDestroy() for this Schema object after this call.
|
||||||
*
|
*
|
||||||
|
* Please note that the given Schema object will always be consumed,
|
||||||
|
* no matter this function return success or failure.
|
||||||
|
*
|
||||||
* @param[in] in_schema Schema token (will be consumed)
|
* @param[in] in_schema Schema token (will be consumed)
|
||||||
* @param[out] out_program Pointer to receive the Program token.
|
* @param[out] out_program Pointer to receive the Program token.
|
||||||
* The receiver take the ownership of this Program object.
|
* The receiver take the ownership of this Program object.
|
||||||
@@ -363,18 +377,6 @@ bool WFProgramResolveIcon(Token in_program, Token *out_icon_rc);
|
|||||||
*/
|
*/
|
||||||
bool WFProgramExtsLen(Token in_program, size_t *out_len);
|
bool WFProgramExtsLen(Token in_program, size_t *out_len);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get a file extension by index
|
|
||||||
*
|
|
||||||
* @param[in] in_program Program token
|
|
||||||
* @param[in] in_index Index of the extension to retrieve
|
|
||||||
* @param[out] out_ext Pointer to receive the file extension token.
|
|
||||||
* The caller take the ownership of created file extension object.
|
|
||||||
* And it should be freed by calling WFExtDestroy() when it is no longer needed.
|
|
||||||
* @return true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool WFProgramGetExt(Token in_program, size_t in_index, Token *out_ext);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Find a file extension by its body (extension string)
|
* @brief Find a file extension by its body (extension string)
|
||||||
*
|
*
|
||||||
@@ -385,6 +387,18 @@ bool WFProgramGetExt(Token in_program, size_t in_index, Token *out_ext);
|
|||||||
*/
|
*/
|
||||||
bool WFProgramFindExt(Token in_program, CStyleString in_body, size_t *out_index);
|
bool WFProgramFindExt(Token in_program, CStyleString in_body, size_t *out_index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Resolve this program provided extension's details by index
|
||||||
|
*
|
||||||
|
* @param[in] in_program Program token
|
||||||
|
* @param[in] in_index Index of the extension to resolve
|
||||||
|
* @param[out] out_self_ext_status Pointer to receive the self extension status token.
|
||||||
|
* The caller take the ownership of created self extension status object.
|
||||||
|
* And it should be freed by calling WFSelfExtStatusDestroy() when it is no longer needed.
|
||||||
|
* @return true on success, false on failure
|
||||||
|
*/
|
||||||
|
bool WFProgramResolveExt(Token in_program, size_t in_index, Token *out_self_ext_status);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Register the Program in the specified scope
|
* @brief Register the Program in the specified scope
|
||||||
*
|
*
|
||||||
@@ -479,6 +493,58 @@ bool WFExtStatusGetName(Token in_ext_status, CStyleString *out_name);
|
|||||||
*/
|
*/
|
||||||
bool WFExtStatusGetIcon(Token in_ext_status, HICON *out_icon);
|
bool WFExtStatusGetIcon(Token in_ext_status, HICON *out_icon);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Destroy a self extension status object
|
||||||
|
*
|
||||||
|
* @param[in] in_self_ext_status Self extension status token to destroy
|
||||||
|
* @return true on success, false on failure
|
||||||
|
*/
|
||||||
|
bool WFSelfExtStatusDestroy(Token in_self_ext_status);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the display name from a self extension status object
|
||||||
|
*
|
||||||
|
* @param[in] in_self_ext_status Self extension status token
|
||||||
|
* @param[out] out_name Pointer to receive the name string.
|
||||||
|
* There is no possibility that this value is NULL.
|
||||||
|
* This string will be freed at the next API call. Please make a copy immediately if you need to use it longer.
|
||||||
|
* @return true on success, false on failure
|
||||||
|
*/
|
||||||
|
bool WFSelfExtStatusGetName(Token in_self_ext_status, CStyleString *out_name);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the icon from a self extension status object
|
||||||
|
*
|
||||||
|
* @param[in] in_self_ext_status Self extension status token
|
||||||
|
* @param[out] out_icon Pointer to receive the icon handle, or INVALID_HICON if not available.
|
||||||
|
* This icon handle will be freed once this self extension status object is destroyed.
|
||||||
|
* Please make a copy immediately if you need to use it longer.
|
||||||
|
* @return true on success, false on failure
|
||||||
|
*/
|
||||||
|
bool WFSelfExtStatusGetIcon(Token in_self_ext_status, HICON *out_icon);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the extension string (without leading dot) from a self extension status object
|
||||||
|
*
|
||||||
|
* @param[in] in_self_ext_status Self extension status token
|
||||||
|
* @param[out] out_inner Pointer to receive the file extension name (without leading dot).
|
||||||
|
* There is no possibility that this value is NULL.
|
||||||
|
* This string will be freed at the next API call. Please make a copy immediately if you need to use it longer.
|
||||||
|
* @return true on success, false on failure
|
||||||
|
*/
|
||||||
|
bool WFSelfExtStatusGetExt(Token in_self_ext_status, CStyleString *out_inner);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the dotted extension string (with leading dot) from a self extension status object
|
||||||
|
*
|
||||||
|
* @param[in] in_self_ext_status Self extension status token
|
||||||
|
* @param[out] out_inner Pointer to receive the file extension string (with leading dot).
|
||||||
|
* There is no possibility that this value is NULL.
|
||||||
|
* This string will be freed at the next API call. Please make a copy immediately if you need to use it longer.
|
||||||
|
* @return true on success, false on failure
|
||||||
|
*/
|
||||||
|
bool WFSelfExtStatusGetDottedExt(Token in_self_ext_status, CStyleString *out_inner);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Destroy an icon resource object
|
* @brief Destroy an icon resource object
|
||||||
*
|
*
|
||||||
@@ -499,36 +565,6 @@ bool WFIconRcDestroy(Token in_icon_rc);
|
|||||||
*/
|
*/
|
||||||
bool WFIconRcGetIcon(Token in_icon_rc, HICON *out_icon);
|
bool WFIconRcGetIcon(Token in_icon_rc, HICON *out_icon);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Destroy a file extension object
|
|
||||||
*
|
|
||||||
* @param[in] in_ext Extension token to destroy
|
|
||||||
* @return true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool WFExtDestroy(Token in_ext);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get the inner extension string without dot
|
|
||||||
*
|
|
||||||
* @param[in] in_ext Extension token
|
|
||||||
* @param[out] out_inner Pointer to receive the file extension name (without leading dot).
|
|
||||||
* There is no possibility that this value is NULL.
|
|
||||||
* This string will be freed at the next API call. Please make a copy immediately if you need to use it longer.
|
|
||||||
* @return true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool WFExtGetInner(Token in_ext, CStyleString *out_inner);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Get the inner extension string with dot prefix
|
|
||||||
*
|
|
||||||
* @param[in] in_ext Extension token
|
|
||||||
* @param[out] out_inner Pointer to receive the file extension string (with leading dot).
|
|
||||||
* There is no possibility that this value is NULL.
|
|
||||||
* This string will be freed at the next API call. Please make a copy immediately if you need to use it longer.
|
|
||||||
* @return true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool WFExtGetDottedInner(Token in_ext, CStyleString *out_inner);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
} // extern "C"
|
} // extern "C"
|
||||||
#endif // __cplusplus
|
#endif // __cplusplus
|
||||||
Reference in New Issue
Block a user