mirror of
https://github.com/eclipse/upm.git
synced 2025-03-15 04:57:30 +03:00
java: converted wrappers for std::vector to inherit from AbstractList<>
Signed-off-by: Bogdan Ichim <bogdan.ichim@rinftech.com> Signed-off-by: Stefan Andritoiu <stefan.andritoiu@gmail.com> Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
parent
65726087bc
commit
ac031ba9a8
12
src/autobox.i
Normal file
12
src/autobox.i
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Java typemaps for autoboxing in return types of generics
|
||||||
|
%define AUTOBOX(CTYPE, JTYPE)
|
||||||
|
%typemap(autobox) CTYPE, const CTYPE&, CTYPE& "JTYPE"
|
||||||
|
%enddef
|
||||||
|
AUTOBOX(double, Double)
|
||||||
|
AUTOBOX(float, Float)
|
||||||
|
AUTOBOX(boolean, Boolean)
|
||||||
|
AUTOBOX(signed char, Byte)
|
||||||
|
AUTOBOX(short, Short)
|
||||||
|
AUTOBOX(int, Integer)
|
||||||
|
AUTOBOX(long, Long)
|
||||||
|
AUTOBOX(SWIGTYPE, $typemap(jstype,$1_basetype))
|
@ -1,10 +1,23 @@
|
|||||||
%module javaupm_bma250e
|
%module javaupm_bma250e
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%include "std_vector.i"
|
%include "../upm_stdvector.i"
|
||||||
|
|
||||||
%ignore getAccelerometer(float *, float *, float *);
|
%ignore getAccelerometer(float *, float *, float *);
|
||||||
|
|
||||||
|
%typemap(javaimports) SWIGTYPE %{
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.lang.Float;
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(javaout) upm::BMA250E {
|
||||||
|
return new $&javaclassname($jnicall, true);
|
||||||
|
}
|
||||||
|
%typemap(javaout) std::vector<float> {
|
||||||
|
return (AbstractList<Float>)(new $&javaclassname($jnicall, true));
|
||||||
|
}
|
||||||
|
%typemap(jstype) std::vector<float> "AbstractList<Float>"
|
||||||
|
|
||||||
%template(floatVector) std::vector<float>;
|
%template(floatVector) std::vector<float>;
|
||||||
|
|
||||||
%include "bma250e_defs.h"
|
%include "bma250e_defs.h"
|
||||||
|
@ -1,10 +1,23 @@
|
|||||||
%module javaupm_bmg160
|
%module javaupm_bmg160
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%include "std_vector.i"
|
%include "../upm_stdvector.i"
|
||||||
|
|
||||||
%ignore getGyroscope(float *, float *, float *);
|
%ignore getGyroscope(float *, float *, float *);
|
||||||
|
|
||||||
|
%typemap(javaimports) SWIGTYPE %{
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.lang.Float;
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(javaout) SWIGTYPE {
|
||||||
|
return new $&javaclassname($jnicall, true);
|
||||||
|
}
|
||||||
|
%typemap(javaout) std::vector<float> {
|
||||||
|
return (AbstractList<Float>)(new $&javaclassname($jnicall, true));
|
||||||
|
}
|
||||||
|
%typemap(jstype) std::vector<float> "AbstractList<Float>"
|
||||||
|
|
||||||
%template(floatVector) std::vector<float>;
|
%template(floatVector) std::vector<float>;
|
||||||
|
|
||||||
%include "bmg160_defs.h"
|
%include "bmg160_defs.h"
|
||||||
|
@ -1,10 +1,23 @@
|
|||||||
%module javaupm_bmm150
|
%module javaupm_bmm150
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%include "std_vector.i"
|
%include "../upm_stdvector.i"
|
||||||
|
|
||||||
%ignore getMagnetometer(float *, float *, float *);
|
%ignore getMagnetometer(float *, float *, float *);
|
||||||
|
|
||||||
|
%typemap(javaimports) SWIGTYPE %{
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.lang.Float;
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(javaout) SWIGTYPE {
|
||||||
|
return new $&javaclassname($jnicall, true);
|
||||||
|
}
|
||||||
|
%typemap(javaout) std::vector<float> {
|
||||||
|
return (AbstractList<Float>)(new $&javaclassname($jnicall, true));
|
||||||
|
}
|
||||||
|
%typemap(jstype) std::vector<float> "AbstractList<Float>"
|
||||||
|
|
||||||
%template(floatVector) std::vector<float>;
|
%template(floatVector) std::vector<float>;
|
||||||
|
|
||||||
%include "bmm150_defs.h"
|
%include "bmm150_defs.h"
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
%include "cpointer.i"
|
%include "cpointer.i"
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%include "std_vector.i"
|
%include "../upm_stdvector.i"
|
||||||
|
|
||||||
%apply int {mraa::Edge};
|
%apply int {mraa::Edge};
|
||||||
|
|
||||||
@ -10,6 +10,19 @@
|
|||||||
%ignore getMagnetometer(float *, float *, float *);
|
%ignore getMagnetometer(float *, float *, float *);
|
||||||
%ignore getGyroscope(float *, float *, float *);
|
%ignore getGyroscope(float *, float *, float *);
|
||||||
|
|
||||||
|
%typemap(javaimports) SWIGTYPE %{
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.lang.Float;
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(javaout) SWIGTYPE {
|
||||||
|
return new $&javaclassname($jnicall, true);
|
||||||
|
}
|
||||||
|
%typemap(javaout) std::vector<float> {
|
||||||
|
return (AbstractList<Float>)(new $&javaclassname($jnicall, true));
|
||||||
|
}
|
||||||
|
%typemap(jstype) std::vector<float> "AbstractList<Float>"
|
||||||
|
|
||||||
%template(floatVector) std::vector<float>;
|
%template(floatVector) std::vector<float>;
|
||||||
|
|
||||||
%include "bmg160_defs.h"
|
%include "bmg160_defs.h"
|
||||||
|
@ -1,11 +1,24 @@
|
|||||||
%module javaupm_lsm303agr
|
%module javaupm_lsm303agr
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%include "std_vector.i"
|
%include "../upm_stdvector.i"
|
||||||
|
|
||||||
%ignore getMagnetometer(float *, float *, float *);
|
%ignore getMagnetometer(float *, float *, float *);
|
||||||
%ignore getAccelerometer(float *, float *, float *);
|
%ignore getAccelerometer(float *, float *, float *);
|
||||||
|
|
||||||
|
%typemap(javaimports) SWIGTYPE %{
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.lang.Float;
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(javaout) SWIGTYPE {
|
||||||
|
return new $&javaclassname($jnicall, true);
|
||||||
|
}
|
||||||
|
%typemap(javaout) std::vector<float> {
|
||||||
|
return (AbstractList<Float>)(new $&javaclassname($jnicall, true));
|
||||||
|
}
|
||||||
|
%typemap(jstype) std::vector<float> "AbstractList<Float>"
|
||||||
|
|
||||||
%template(floatVector) std::vector<float>;
|
%template(floatVector) std::vector<float>;
|
||||||
|
|
||||||
%include "lsm303agr_defs.h"
|
%include "lsm303agr_defs.h"
|
||||||
|
@ -1,11 +1,24 @@
|
|||||||
%module javaupm_lsm303d
|
%module javaupm_lsm303d
|
||||||
%include "../upm.i"
|
%include "../upm.i"
|
||||||
%include "typemaps.i"
|
%include "typemaps.i"
|
||||||
%include "std_vector.i"
|
%include "../upm_stdvector.i"
|
||||||
|
|
||||||
%ignore getMagnetometer(float *, float *, float *);
|
%ignore getMagnetometer(float *, float *, float *);
|
||||||
%ignore getAccelerometer(float *, float *, float *);
|
%ignore getAccelerometer(float *, float *, float *);
|
||||||
|
|
||||||
|
%typemap(javaimports) SWIGTYPE %{
|
||||||
|
import java.util.AbstractList;
|
||||||
|
import java.lang.Float;
|
||||||
|
%}
|
||||||
|
|
||||||
|
%typemap(javaout) SWIGTYPE {
|
||||||
|
return new $&javaclassname($jnicall, true);
|
||||||
|
}
|
||||||
|
%typemap(javaout) std::vector<float> {
|
||||||
|
return (AbstractList<Float>)(new $&javaclassname($jnicall, true));
|
||||||
|
}
|
||||||
|
%typemap(jstype) std::vector<float> "AbstractList<Float>"
|
||||||
|
|
||||||
%template(floatVector) std::vector<float>;
|
%template(floatVector) std::vector<float>;
|
||||||
|
|
||||||
%include "lsm303d_defs.h"
|
%include "lsm303d_defs.h"
|
||||||
|
61
src/upm_stdvector.i
Normal file
61
src/upm_stdvector.i
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
%include "autobox.i"
|
||||||
|
|
||||||
|
%{
|
||||||
|
#include <vector>
|
||||||
|
#include <stdexcept>
|
||||||
|
%}
|
||||||
|
|
||||||
|
%include <stdint.i>
|
||||||
|
%include <std_except.i>
|
||||||
|
|
||||||
|
namespace std {
|
||||||
|
|
||||||
|
template<class T> class vector {
|
||||||
|
public:
|
||||||
|
typedef size_t size_type;
|
||||||
|
typedef T value_type;
|
||||||
|
typedef const value_type& const_reference;
|
||||||
|
vector();
|
||||||
|
vector(size_type n);
|
||||||
|
vector(const vector& o);
|
||||||
|
size_type capacity() const;
|
||||||
|
void reserve(size_type n);
|
||||||
|
%rename(isEmpty) empty;
|
||||||
|
bool empty() const;
|
||||||
|
void clear();
|
||||||
|
void push_back(const value_type& x);
|
||||||
|
%extend {
|
||||||
|
const_reference get_impl(int i) throw (std::out_of_range) {
|
||||||
|
// at will throw if needed, swig will handle
|
||||||
|
return self->at(i);
|
||||||
|
}
|
||||||
|
value_type set(int i, const value_type& VECTOR_VALUE_IN) throw (std::out_of_range) {
|
||||||
|
const T old = $self->at(i);
|
||||||
|
$self->at(i) = VECTOR_VALUE_IN;
|
||||||
|
return old;
|
||||||
|
}
|
||||||
|
int32_t size() const {
|
||||||
|
return $self->size();
|
||||||
|
}
|
||||||
|
void removeRange(int32_t from, int32_t to) {
|
||||||
|
$self->erase($self->begin()+from, $self->begin()+to);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
%typemap(javabase) std::vector "java.util.AbstractList<$typemap(autobox,$1_basetype::value_type)>"
|
||||||
|
%typemap(javainterface) std::vector "java.util.RandomAccess"
|
||||||
|
%typemap(jstype) std::vector set "$typemap(autobox,$1_basetype)"
|
||||||
|
%typemap(jstype) std::vector &VECTOR_VALUE_IN "$typemap(autobox,$1_basetype)"
|
||||||
|
%typemap(javacode) std::vector %{
|
||||||
|
$javaclassname(java.util.Collection<$typemap(autobox,$1_basetype::value_type)> e) {
|
||||||
|
this.reserve(e.size());
|
||||||
|
for($typemap(autobox,$1_basetype::value_type) value : e) {
|
||||||
|
this.push_back(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public $typemap(autobox,$1_basetype::value_type) get(int idx) {
|
||||||
|
return get_impl(idx);
|
||||||
|
}
|
||||||
|
%}
|
Loading…
x
Reference in New Issue
Block a user