1#include <knowCore/BigNumber.h>
2#include <knowCore/UriList.h>
3#include <knowCore/ValueHash.h>
5#include <knowRuby/ConverterManager.h>
13 template<
typename _T_>
14 struct Type<knowCore::ReturnValue<_T_>>
18 return Type<_T_>::verify();
21 template<
typename _T_>
22 struct To_Ruby<knowCore::ReturnValue<_T_>>
29 return To_Ruby<_T_>().convert(t);
31 throw std::runtime_error(x.message().toStdString());
36 struct Type<knowCore::ReturnVoid>
44 struct To_Ruby<knowCore::ReturnVoid>
52 throw std::runtime_error(x.message().toStdString());
76 return To_Ruby<double>().convert(x.toDouble());
78 return rb_cstr_to_inum(qPrintable(x.toString()), 10, 1);
84 class To_Ruby<knowCore::
BigNumber&> : To_Ruby<knowCore::BigNumber>
92 From_Ruby() =
default;
94 explicit From_Ruby(Arg* arg) : arg_(arg)
97 bool is_convertible(VALUE value)
99 ruby_value_type vt = rb_type(value);
100 return vt == RUBY_T_FLOAT or vt == RUBY_T_FIXNUM or vt == RUBY_T_BIGNUM;
104 if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
110 switch (rb_type(value))
118 auto const& [success, VAL, errorMessage] = knowCore::BigNumber::fromString(From_Ruby<QString>().convert(rb_big2str(value, 10)));
123 throw std::runtime_error(errorMessage.toStdString());
128 throw Exception(rb_eTypeError,
"wrong argument type %s (expected % s)",
129 detail::protect(rb_obj_classname, value),
"number");
153 struct Type<knowCore::Value>
163 auto const& [success, VAL, errorMessage] = knowRuby::ConverterManager::toRubyValue(_value);
168 throw std::runtime_error(errorMessage.toStdString());
173 class To_Ruby<knowCore::Value>
178 return knowCoreValueToVALUE(x);
183 class To_Ruby<knowCore::Value&>
188 return knowCoreValueToVALUE(x);
193 class From_Ruby<knowCore::Value>
196 From_Ruby() =
default;
198 explicit From_Ruby(Arg* arg) : arg_(arg)
204 if (value == Qnil && this->arg_ && this->arg_->hasDefaultValue())
210 auto const& [success, VAL, errorMessage] = knowRuby::ConverterManager::toKnowCoreValue(value);
215 throw std::runtime_error(errorMessage.toStdString());
227 using From_Ruby_Ptr_T::From_Ruby_Ptr;
233 using From_Ruby_Ref_T::From_Ruby_Ref;
246 class To_Ruby<knowCore::
ValueHash> :
public To_Ruby<QHash<QString, knowCore::Value>>{};
250 class From_Ruby<knowCore::
ValueHash> :
public From_Ruby<QHash<QString, knowCore::Value>>{};
254 using From_Ruby_Ptr_T::From_Ruby_Ptr;
260 using From_Ruby_Ref_T::From_Ruby_Ref;
264 struct Type<knowCore::UriList>
273 class To_Ruby<knowCore::UriList> :
public To_Ruby<QList<knowCore::Uri>>{};
277 class From_Ruby<knowCore::UriList> :
public From_Ruby<QList<knowCore::Uri>>{};
281 using From_Ruby_Ptr_T::From_Ruby_Ptr;
287 using From_Ruby_Ref_T::From_Ruby_Ref;
Class that can contains large numeric value.
Definition BigNumber.h:46
bool isFloating() const
Definition BigNumber.cpp:224
Definition ReturnValue.h:85
Definition ReturnValue.h:29
Definition ValueHash.h:13