%module li_std_deque

%include "std_deque.i"

%{
#include <algorithm>
#include <functional>
#include <numeric>
%}

namespace std {
    %template(IntDeque) deque<int>;
}

%template(DoubleDeque) std::deque<double>;

%inline %{
typedef float Real;
%}

namespace std {
    %template(RealDeque) deque<Real>;
}

%inline %{

double average(std::deque<int> v) {
    return std::accumulate(v.begin(),v.end(),0.0)/v.size();
}

std::deque<float> half(const std::deque<float>& v) {
    std::deque<float> w(v);
    for (unsigned int i=0; i<w.size(); i++)
        w[i] /= 2.0;
    return w;
}

void halve_in_place(std::deque<double>& v) {
    for (std::deque<double>::iterator it = v.begin(); it != v.end(); ++it)
        *it /= 2.0;
}

%}




