3#include "../_decl/decl_context.hpp"
4#include "../_decl/decl_object.hpp"
16 return Internal::DoResCallShareOut<Object>([size](
void *&handle) {
23 return Internal::DoResCallShareOut<Object>([size](
void *&handle) {
29 inline ObjectPtr Object::CreateImpl(
const T &value, PodTag)
31 return Internal::DoResCallShareOut<Object>([&value](
void *&handle) {
32 auto storage =
static_cast<typename Private::IsPod<T>::StorageType
>(value);
38 inline ObjectPtr Object::CreateImpl(
const T &value, HandleTag)
40 return Internal::DoResCallShareOut<Object>([&value](
void *&handle) {
41 auto h = value.Handle();
48 inline ObjectPtr Object::CreateImpl(
const T &value, EnumTag)
51 return Create(
static_cast<int64_t
>(value));
55 inline ObjectPtr Object::CreateImpl(
const T &value, CvbTag)
57 return Internal::DoResCallShareOut<Object>([&value](
void *&handle) {
65 return Internal::DoResCallShareOut<Object>([&value](
void *&handle) {
66 return CVPYSCreateObj(
Context::CreateOrGet()->Handle(), CExports::CVPYSOTY_String, value.c_str(),
74 return Create(std::string(value));
80 CExports::CVPYSObjType type = CExports::CVPYSOTY_String;
82 CVB_CALL_CAPI_CHECKED(CVPYSObjToBuffer(Handle(), type,
nullptr, size));
83 std::vector<char> buffer(size);
84 CVB_CALL_CAPI_CHECKED(CVPYSObjToBuffer(Handle(), type, buffer.data(), size));
85 return std::string(buffer.data());
91 return Internal::DoResCallShareOut<Object>([&value](
void *&handle) {
92 return CVPYSCreateObj(
Context::CreateOrGet()->Handle(), CExports::CVPYSOTY_WString, value.c_str(),
93 (value.size() + 1) *
sizeof(
wchar_t), handle);
99 return Create(std::wstring(value));
105 CExports::CVPYSObjType type = CExports::CVPYSOTY_WString;
107 CVB_CALL_CAPI_CHECKED(CVPYSObjToBuffer(Handle(), type,
nullptr, size));
108 std::vector<wchar_t> buffer(size /
sizeof(
wchar_t));
109 CVB_CALL_CAPI_CHECKED(CVPYSObjToBuffer(Handle(), type, buffer.data(), size));
110 return std::wstring(buffer.data());
static ContextPtr CreateOrGet()
Creates a context.
Definition decl_context.hpp:50
static std::shared_ptr< Object > MakeVoidList(size_t size)
Creates list with a specified size.
Definition detail_object.hpp:21
static std::shared_ptr< Object > Create(const T &value)
Creates a object form any supported type.
Definition decl_object.hpp:642
T As() const
Get an type from this object.
Definition decl_object.hpp:801
void * Handle() const noexcept
Classic API buffer handle.
Definition decl_object.hpp:812
static ObjectPtr MakeVoidTuple(size_t size)
Creates tuple with a specified size.
Definition detail_object.hpp:14
Namespace for the python scripting package.
Definition decl_context.hpp:21
std::shared_ptr< Object > ObjectPtr
Convenience shared pointer for Object.
Definition py_script.hpp:127
Root namespace for the Image Manager interface.
Definition version.hpp:11