1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/*
Copyright (C) 2000, 2001, 2002, 2003 RiskMap srl
This file is part of QuantLib, a free-software/open-source library
for financial quantitative analysts and developers - http://quantlib.org/
QuantLib is free software: you can redistribute it and/or modify it under the
terms of the QuantLib license. You should have received a copy of the
license along with this program; if not, please email quantlib-dev@lists.sf.net
The license is also available online at http://quantlib.org/html/license.html
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the license for more details.
*/
#ifndef quantlib_common_i
#define quantlib_common_i
%include stl.i
%include exception.i
%{
// generally useful classes
using QuantLib::Error;
using QuantLib::Handle;
%}
namespace boost {
template <class T>
class shared_ptr {
#if defined(SWIGRUBY) || defined(SWIGMZSCHEME) || defined(SWIGGUILE)
%rename("null?") isNull;
#endif
public:
T* operator->();
#if defined(SWIGPYTHON)
%extend {
bool __nonzero__() {
return !!(*self);
}
}
#else
%extend {
bool isNull() {
return !(*self);
}
}
#endif
};
}
template <class T>
class Handle {
#if defined(SWIGRUBY)
%rename("null?") isNull;
%rename("empty?") empty;
%rename("linkTo!") linkTo;
#elif defined(SWIGMZSCHEME) || defined(SWIGGUILE)
%rename("null?") isNull;
%rename("empty?") empty;
%rename("link-to!") linkTo;
#endif
public:
Handle(const boost::shared_ptr<T>& = boost::shared_ptr<T>());
boost::shared_ptr<T> operator->();
void linkTo(const boost::shared_ptr<T>&);
#if defined(SWIGPYTHON)
%extend {
bool __nonzero__() {
return !self->empty();
}
}
#else
bool empty();
#endif
};
%define swigr_list_converter(ContainerRType,
ContainerCType, ElemCType)
#if defined(SWIGR)
%Rruntime %{
setMethod('print', 'ContainerCType',
function(x) print(as(x, "ElemCType")))
setAs("ContainerCType", "ElemCType",
function(from) {if (from$size()) from[1:from$size()] else NULL} )
setAs("ElemCType", "ContainerCType",
function(from) { a <- ContainerRType(length(from));
sapply(1:length(from), function(n) {
a[n] <- from[n] } )
a
})
%}
#endif
%enddef
#endif
|