24#ifndef OCCTL_HPP_CORE_HPP
25#define OCCTL_HPP_CORE_HPP
44class Error :
public std::runtime_error
51 if (anErr !=
nullptr && anErr->status !=
OCCTL_OK)
53 return Error(anErr->status,
54 anErr->message !=
nullptr ? anErr->message :
"",
61 Error(const ::occtl_status_t theCode,
62 std::string theMessage,
63 const std::uint64_t theSourceUidBits,
64 const std::uint32_t theExtended) noexcept
65 : std::runtime_error(std::move(theMessage)),
67 mySourceUidBits(theSourceUidBits),
68 myExtended(theExtended)
74 std::uint64_t source_uid_bits() const noexcept {
return mySourceUidBits; }
76 std::uint32_t extended() const noexcept {
return myExtended; }
80 std::uint64_t mySourceUidBits;
81 std::uint32_t myExtended;
85inline void check(const ::occtl_status_t theStatus)
94inline std::tuple<std::uint32_t, std::uint32_t, std::uint32_t>
version() noexcept
96 std::uint32_t aMajor = 0;
97 std::uint32_t aMinor = 0;
98 std::uint32_t aPatch = 0;
100 return {aMajor, aMinor, aPatch};
106 return ::occtl_runtime_abi_version();
113 return aStr !=
nullptr ? std::string_view{aStr} : std::string_view{};
125inline int32_t
uid_equal(const ::occtl_uid_t theA, const ::occtl_uid_t theB)
noexcept
127 return ::occtl_uid_equal(theA, theB);
142 myInitialised =
true;
146 explicit Runtime(const ::occtl_runtime_init_info_t& theInfo)
149 myInitialised =
true;
167 : myInitialised(theOther.myInitialised)
169 theOther.myInitialised =
false;
174 if (
this != &theOther)
180 myInitialised = theOther.myInitialised;
181 theOther.myInitialised =
false;
187 bool myInitialised =
false;
Exception thrown by the veneer on any non-OK status code.
Definition core.hpp:45
static Error from_last(const ::occtl_status_t theFallback) noexcept
Build from the current thread-local error state.
Definition core.hpp:48
RAII handle for the process-wide runtime.
Definition core.hpp:136
Runtime(const ::occtl_runtime_init_info_t &theInfo)
Initialise with explicit options.
Definition core.hpp:146
~Runtime() noexcept
Shuts down the runtime. Silently swallows any shutdown failure because this is called from destructor...
Definition core.hpp:155
Runtime()
Initialise with defaults.
Definition core.hpp:139
int32_t uid_equal(const ::occtl_uid_t theA, const ::occtl_uid_t theB) noexcept
Tests two UIDs for bitwise equality.
Definition core.hpp:125
std::uint32_t abi_version() noexcept
Returns the runtime ABI version.
Definition core.hpp:104
std::tuple< std::uint32_t, std::uint32_t, std::uint32_t > version() noexcept
Returns the runtime SemVer as a (major, minor, patch) tuple.
Definition core.hpp:94
void check(const ::occtl_status_t theStatus)
Throw on non-OK; otherwise a no-op.
Definition core.hpp:85
std::string_view occt_version() noexcept
Returns the OCCT version OCCT-Light was built against, as a string view.
Definition core.hpp:110
void init_runtime_info(::occtl_runtime_init_info_t *theInfo)
Initialises an occtl_runtime_init_info_t to defaults and throws on a non-OK status (which would mean ...
Definition core.hpp:118
OCCT-Light: core public API.
const char * occtl_status_to_string(occtl_status_t status)
occtl_status_t occtl_runtime_init(const occtl_runtime_init_info_t *info)
const occtl_error_t * occtl_error_last(void)
enum occtl_status occtl_status_t
const char * occtl_runtime_occt_version(void)
@ OCCTL_OK
Definition occtl_core.h:133
void occtl_runtime_shutdown(void)
occtl_status_t occtl_runtime_init_info_init(occtl_runtime_init_info_t *info)
void occtl_runtime_version(uint32_t *out_major, uint32_t *out_minor, uint32_t *out_patch)
Definition occtl_core.h:349