summaryrefslogtreecommitdiff
path: root/qpid/cpp/bindings/qmf/ruby/ruby.i
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/bindings/qmf/ruby/ruby.i')
-rw-r--r--qpid/cpp/bindings/qmf/ruby/ruby.i42
1 files changed, 37 insertions, 5 deletions
diff --git a/qpid/cpp/bindings/qmf/ruby/ruby.i b/qpid/cpp/bindings/qmf/ruby/ruby.i
index a8a2a87a97..b7fed403bd 100644
--- a/qpid/cpp/bindings/qmf/ruby/ruby.i
+++ b/qpid/cpp/bindings/qmf/ruby/ruby.i
@@ -38,17 +38,33 @@
%typemap (out) uint16_t
{
- $result = UINT2NUM((unsigned short) $1);
+ $result = UINT2NUM((uint16_t) $1);
}
%typemap (in) uint32_t
{
- $1 = NUM2UINT ($input);
+ if (TYPE($input) == T_BIGNUM)
+ $1 = NUM2UINT($input);
+ else
+ $1 = FIX2UINT($input);
}
%typemap (out) uint32_t
{
- $result = UINT2NUM((unsigned int) $1);
+ $result = UINT2NUM((uint32_t) $1);
+}
+
+%typemap (in) int32_t
+{
+ if (TYPE($input) == T_BIGNUM)
+ $1 = NUM2INT($input);
+ else
+ $1 = FIX2INT($input);
+}
+
+%typemap (out) int32_t
+{
+ $result = INT2NUM((int32_t) $1);
}
%typemap (typecheck, precedence=SWIG_TYPECHECK_INTEGER) uint32_t {
@@ -57,12 +73,28 @@
%typemap (in) uint64_t
{
- $1 = NUM2ULONG ($input);
+ if (TYPE($input) == T_BIGNUM)
+ $1 = NUM2ULL($input);
+ else
+ $1 = (uint64_t) FIX2LONG($input);
}
%typemap (out) uint64_t
{
- $result = ULONG2NUM((unsigned long) $1);
+ $result = ULL2NUM((uint64_t) $1);
+}
+
+%typemap (in) int64_t
+{
+ if (TYPE($input) == T_BIGNUM)
+ $1 = NUM2LL($input);
+ else
+ $1 = (int64_t) FIX2LONG($input);
+}
+
+%typemap (out) int64_t
+{
+ $result = LL2NUM((int64_t) $1);
}
%typemap (typecheck, precedence=SWIG_TYPECHECK_INTEGER) uint64_t {