File uid_info.h
File List > builtin > uid_info.h
Go to the documentation of this file
#pragma once
#include <uipc/common/dllexport.h>
#include <uipc/common/type_define.h>
#include <uipc/common/string.h>
#include <uipc/common/json.h>
#include <uipc/common/list.h>
#include <functional>
namespace uipc::builtin
{
struct UIPC_CORE_API UIDInfo
{
static constexpr U64 OfficialBuiltinUIDStart = 0;
static constexpr U64 UserDefinedUIDStart = 1ull << 32;
U64 uid = 0;
string name;
string type;
string author;
string email;
string website;
string description;
Json extras;
bool is_official_builtin_uid(U64 uid) const noexcept;
bool is_user_defined_uid(U64 uid) const noexcept;
Json to_json() const noexcept;
};
class UIPC_CORE_API UIDInfoCreator
{
public:
UIDInfoCreator(std::function<list<UIDInfo>()> creator, std::string_view file, int line) noexcept;
list<UIDInfo> operator()() const;
std::string_view file() const noexcept;
int line() const noexcept;
private:
std::function<list<UIDInfo>()> m_creator;
std::string m_file;
int m_line = 0;
};
} // namespace uipc::builtin