summaryrefslogtreecommitdiff
path: root/cpp/bindings/swig_perl_typemaps.i
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/bindings/swig_perl_typemaps.i')
-rw-r--r--cpp/bindings/swig_perl_typemaps.i330
1 files changed, 0 insertions, 330 deletions
diff --git a/cpp/bindings/swig_perl_typemaps.i b/cpp/bindings/swig_perl_typemaps.i
deleted file mode 100644
index 831576a7d4..0000000000
--- a/cpp/bindings/swig_perl_typemaps.i
+++ /dev/null
@@ -1,330 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-%wrapper %{
-
-#include <stdarg.h>
-
- SV* MapToPerl(const qpid::types::Variant::Map*);
- SV* ListToPerl(const qpid::types::Variant::List*);
- void PerlToMap(SV*, qpid::types::Variant::Map*);
- void PerlToList(SV*, qpid::types::Variant::List*);
-
- qpid::types::Variant PerlToVariant(SV* value) {
- if (SvROK(value)) {
- if (SvTYPE(SvRV(value)) == SVt_PVHV) {
- qpid::types::Variant::Map map;
- PerlToMap(value, &map);
- return qpid::types::Variant(map);
- }
- else if (SvTYPE(SvRV(value)) == SVt_PVAV) {
- qpid::types::Variant::List list;
- PerlToList(value, &list);
- return qpid::types::Variant(list);
- }
- }
- else {
- if (SvIOK(value)) {
- return qpid::types::Variant((int64_t) SvIV(value));
- }
- else if (SvNOK(value)) {
- return qpid::types::Variant((float)SvNV(value));
- }
- else if (SvPOK(value)) {
- return qpid::types::Variant(std::string(SvPV_nolen(value)));
- }
- }
- return qpid::types::Variant();
- }
-
- SV* VariantToPerl(const qpid::types::Variant* v) {
- SV* result = newSV(0);
- try {
- switch (v->getType()) {
- case qpid::types::VAR_VOID: {
- sv_setiv(result, (IV)0);
- break;
- }
- case qpid::types::VAR_BOOL : {
- result = boolSV(v->asBool());
- break;
- }
- case qpid::types::VAR_UINT8 :
- case qpid::types::VAR_UINT16 :
- case qpid::types::VAR_UINT32 : {
- sv_setuv(result, (UV)v->asUint32());
- break;
- }
- case qpid::types::VAR_UINT64 : {
- sv_setuv(result, (UV)v->asUint64());
- break;
- }
- case qpid::types::VAR_INT8 :
- case qpid::types::VAR_INT16 :
- case qpid::types::VAR_INT32 : {
- sv_setiv(result, (IV)v->asInt32());
- break;
- }
- case qpid::types::VAR_INT64 : {
- sv_setiv(result, (IV)v->asInt64());
- break;
- }
- case qpid::types::VAR_FLOAT : {
- sv_setnv(result, (double)v->asFloat());
- break;
- }
- case qpid::types::VAR_DOUBLE : {
- sv_setnv(result, (double)v->asDouble());
- break;
- }
- case qpid::types::VAR_STRING : {
- const std::string val(v->asString());
- result = newSVpvn(val.c_str(), val.size());
- break;
- }
- case qpid::types::VAR_MAP : {
- result = MapToPerl(&(v->asMap()));
- break;
- }
- case qpid::types::VAR_LIST : {
- result = ListToPerl(&(v->asList()));
- break;
- }
- case qpid::types::VAR_UUID : {
- }
- }
- } catch (qpid::types::Exception& ex) {
- Perl_croak(aTHX_ ex.what());
- }
-
- return result;
- }
-
- SV* MapToPerl(const qpid::types::Variant::Map* map) {
- SV *result = newSV(0);
- HV *hv = (HV *)sv_2mortal((SV *)newHV());
- qpid::types::Variant::Map::const_iterator iter;
- for (iter = map->begin(); iter != map->end(); iter++) {
- const std::string key(iter->first);
- SV* perlval = VariantToPerl(&(iter->second));
- hv_store(hv, key.c_str(), key.size(), perlval, 0);
- }
- SvSetSV(result, newRV_noinc((SV *)hv));
- return result;
- }
-
- SV* ListToPerl(const qpid::types::Variant::List* list) {
- SV* result = newSV(0);
- AV* av = (AV *)sv_2mortal((SV *)newAV());
- qpid::types::Variant::List::const_iterator iter;
- for (iter = list->begin(); iter != list->end(); iter++) {
- SV* perlval = VariantToPerl(&(*iter));
- av_push(av, perlval);
- }
- SvSetSV(result, newRV_noinc((SV *)av));
- return result;
- }
-
- void PerlToMap(SV* hash, qpid::types::Variant::Map* map) {
- map->clear();
- HV* hv = (HV *)SvRV(hash);
- HE* he;
- while((he = hv_iternext(hv)) != NULL) {
- SV* svkey = HeSVKEY_force(he);
- SV* svval = HeVAL(he);
- (*map)[std::string(SvPV_nolen(svkey))] = PerlToVariant(svval);
- }
- }
-
- void PerlToList(SV* ary, qpid::types::Variant::List* list) {
- list->clear();
- AV * av = (AV *)SvRV(ary);
- I32 len = av_len(av) + 1;
- if (len > 0) {
- for (I32 i = 0; i < len; i++) {
- list->push_back(PerlToVariant(*av_fetch(av, i, 0)));
- }
- }
- }
-%}
-
-%typemap (in) void * {
- $1 = (void *)SvIV($input);
-}
-
-%typemap (out) void * {
- sv_setiv($result, (IV)$1);
- argvi++;
-}
-
-%typemap (in) uint16_t, uint32_t, uint64_t {
- if (SvIOK($input)) {
- $1 = ($1_ltype)SvUV($input);
- }
- else {
- SWIG_exception_fail(SWIG_ValueError, "not an integer");
- }
-}
-
-%typemap (out) uint16_t, uint32_t, uint64_t {
- sv_setuv($result, (UV)$1);
- argvi++;
-}
-
-%typemap (in) int32_t, int64_t {
- if (SvIOK($input)) {
- $1 = ($1_ltype)SvIV($input);
- }
- else {
- SWIG_exception_fail(SWIG_ValueError, "not an integer");
- }
-}
-
-%typemap (out) int32_t, int64_t {
- sv_setiv($result, (IV)$1);
- argvi++;
-}
-
-%typemap(in) bool {
- $1 = (bool)SvTRUE($input);
-}
-
-%typemap (out) bool {
- $result = boolSV($1);
- argvi++;
-}
-
-
-%typemap (typecheck, precedence=SWIG_TYPECHECK_UINT64) uint64_t {
- $1 = SvIOK($input) ? 1 : 0;
-}
-
-%typemap (typecheck, precedence=SWIG_TYPECHECK_UINT32) uint32_t {
- $1 = SvIOK($input) ? 1 : 0;
-}
-
-
-/*
- * Variant types: C++ --> Perl
- */
-%typemap(out) qpid::types::Variant::Map {
- $result = MapToPerl(&$1);
- argvi++;
-}
-
-%typemap(out) qpid::types::Variant::Map& {
- $result = MapToPerl($1);
- argvi++;
-}
-
-%typemap(out) qpid::types::Variant::List {
- $result = ListToPerl(&$1);
- argvi++;
-}
-
-%typemap(out) qpid::types::Variant::List& {
- $result = ListToPerl($1);
- argvi++;
-}
-
-%typemap(out) qpid::types::Variant& {
- $result = VariantToPerl($1);
- argvi++;
-}
-
-
-/*
- * Variant types: Perl --> C++
- */
-%typemap(in) qpid::types::Variant& {
- $1 = new qpid::types::Variant(PerlToVariant($input));
-}
-
-%typemap(in) qpid::types::Variant::Map& {
- $1 = new qpid::types::Variant::Map();
- PerlToMap($input, $1);
-
-}
-
-%typemap(in) qpid::types::Variant::List& {
- $1 = new qpid::types::Variant::List();
- PerlToList($input, $1);
-
-}
-
-%typemap(in) const qpid::types::Variant::Map const & {
- $1 = new qpid::types::Variant::Map();
- PerlToMap($input, $1);
-}
-
-%typemap(in) const qpid::types::Variant::List const & {
- $1 = new qpid::types::Variant::List();
- PerlToList($input, $1);
-}
-
-%typemap(freearg) qpid::types::Variant& {
- delete $1;
-}
-
-%typemap(freearg) qpid::types::Variant::Map& {
- delete $1;
-}
-
-%typemap(freearg) qpid::types::Variant::List& {
- delete $1;
-}
-
-
-/*
- * Variant types: typecheck maps
- */
-%typemap(typecheck) qpid::types::Variant::Map& {
- $1 = (SvTYPE(SvRV($input)) == SVt_PVHV) ? 1 : 0;
-}
-
-%typemap(typecheck) qpid::types::Variant::List& {
- $1 = (SvTYPE(SvRV($input)) == SVt_PVAV) ? 1 : 0;
-}
-
-%typemap(typecheck) qpid::types::Variant& {
- $1 = (SvIOK($input) ||
- SvNOK($input) ||
- SvPOK($input) ) ? 1 : 0;
-}
-
-%typemap(typecheck) const qpid::types::Variant::Map const & {
- $1 = (SvTYPE(SvRV($input)) == SVt_PVHV) ? 1 : 0;
-}
-
-%typemap(typecheck) const qpid::types::Variant::List const & {
- $1 = (SvTYPE(SvRV($input)) == SVt_PVAV) ? 1 : 0;
-}
-
-%typemap(typecheck) const qpid::types::Variant const & {
- $1 = (SvIOK($input) ||
- SvNOK($input) ||
- SvPOK($input) ) ? 1 : 0;
-}
-
-/* No boolean type for perl.
- Boolean is simply and integer in perl
-*/
-%typecheck(SWIG_TYPECHECK_BOOL) bool {
- $1 = (SvIOK($input)) ? 1 : 0;
-}