graft

April 7, 2026 ยท View on GitHub

{#graftmodule}

graft

Native plugin ABI contract and runtime loading helpers.

Namespaces

NameDescription
graftShared-library plugin contracts and runtime loading helpers.

{#graft}

graft

Shared-library plugin contracts and runtime loading helpers.

Classes

NameDescription
Library
Manifest

Enumerations

NameDescription
RuntimeKind

{#runtimekind}

RuntimeKind

enum RuntimeKind
ValueDescription
Unknown
Native
Worker

Functions

ReturnNameDescription
Graft_APIRuntimeKindparseRuntimeKind
Graft_API const char *runtimeKindName
Graft_API voidvalidateManifest

{#parseruntimekind}

parseRuntimeKind

Graft_APIRuntimeKind parseRuntimeKind(std::string_view runtime) noexcept

{#runtimekindname}

runtimeKindName

Graft_API const char * runtimeKindName(RuntimeKind runtime) noexcept

{#validatemanifest}

validateManifest

Graft_API void validateManifest(const Manifest & manifest, std::string_view path)

Variables

ReturnNameDescription
constexpr std::uint32_tABI_VERSION
constexpr const char *MANIFEST_SYMBOL
constexpr const char *RUNTIME_NATIVE
constexpr const char *RUNTIME_WORKER

{#abi_version}

ABI_VERSION

constexpr std::uint32_t ABI_VERSION = 1

{#manifest_symbol}

MANIFEST_SYMBOL

constexpr const char * MANIFEST_SYMBOL = "icy_graft_manifest"

{#runtime_native}

RUNTIME_NATIVE

constexpr const char * RUNTIME_NATIVE = "native"

{#runtime_worker}

RUNTIME_WORKER

constexpr const char * RUNTIME_WORKER = "worker"

{#library}

Library

#include <icy/graft/graft.h>

Public Methods

ReturnNameDescription
LibraryDefaulted constructor.
LibraryDeleted constructor.
LibraryDeleted constructor.
voidopen
voidclose
boolisOpen const
const std::string &path const
const Manifest &manifest const
void *requireSymbolAddress const
TrequireSymbol const inline
Tentrypoint const inline

{#library-1}

Library

Library() = default

Defaulted constructor.


{#library-2}

Library

Library(const Library &) = delete

Deleted constructor.


{#library-3}

Library

Library(Library &&) = delete

Deleted constructor.


{#open-6}

open

void open(const std::string & path)

{#close-24}

close

void close() noexcept

{#isopen}

isOpen

const

bool isOpen() const noexcept

{#path-3}

path

const

const std::string & path() const noexcept

{#manifest-3}

manifest

const

const Manifest & manifest() const

{#requiresymboladdress}

requireSymbolAddress

const

void * requireSymbolAddress(const char * name) const

{#requiresymbol}

requireSymbol

const inline

template<typename T> inline T requireSymbol(const char * name) const

{#entrypoint-1}

entrypoint

const inline

template<typename T> inline T entrypoint() const

Private Attributes

ReturnNameDescription
SharedLibrary_library
std::string_path
const Manifest *_manifest
bool_open

{#_library}

_library

SharedLibrary _library

{#_path-4}

_path

std::string _path

{#_manifest}

_manifest

const Manifest * _manifest = nullptr

{#_open}

_open

bool _open = false

Private Methods

ReturnNameDescription
voidloadManifest

{#loadmanifest}

loadManifest

void loadManifest()

{#manifest-4}

Manifest

#include <icy/graft/graft.h>

Public Attributes

ReturnNameDescription
std::uint32_tabiVersion
const char *fileName
const char *id
const char *name
const char *version
const char *runtime
const char *entrypoint

{#abiversion-1}

abiVersion

std::uint32_t abiVersion

{#filename-3}

fileName

const char * fileName

{#id-4}

id

const char * id

{#name-8}

name

const char * name

{#version-6}

version

const char * version

{#runtime-1}

runtime

const char * runtime

{#entrypoint-2}

entrypoint

const char * entrypoint