mirror of https://github.com/swig/swig
58 lines
1.1 KiB
OpenEdge ABL
58 lines
1.1 KiB
OpenEdge ABL
%module cpp11_shared_ptr_const
|
|
|
|
%{
|
|
|
|
#include <memory>
|
|
#include <vector>
|
|
|
|
class Foo
|
|
{
|
|
int m;
|
|
public:
|
|
Foo(int i) : m(i) {}
|
|
int get_m() { return m;}
|
|
};
|
|
|
|
std::shared_ptr<Foo> foo(Foo v) {
|
|
return std::shared_ptr<Foo>(new Foo(v));
|
|
}
|
|
|
|
std::shared_ptr<const Foo> const_foo(Foo v) {
|
|
return std::shared_ptr<const Foo>(new Foo(v));
|
|
}
|
|
|
|
std::vector<std::shared_ptr<Foo> > foo_vec(Foo v) {
|
|
std::vector<std::shared_ptr<Foo> > result;
|
|
result.push_back( std::shared_ptr<Foo>(new Foo(v)) );
|
|
return result;
|
|
}
|
|
|
|
std::vector<std::shared_ptr<const Foo> > const_foo_vec(Foo v) {
|
|
std::vector<std::shared_ptr<const Foo> > result;
|
|
result.push_back( std::shared_ptr<Foo>(new Foo(v)) );
|
|
return result;
|
|
}
|
|
|
|
%}
|
|
|
|
%include <std_shared_ptr.i>
|
|
%include <std_vector.i>
|
|
|
|
%shared_ptr(Foo);
|
|
|
|
%template (FooVector) std::vector<std::shared_ptr<Foo> >;
|
|
%template (FooConstVector) std::vector<std::shared_ptr<Foo const> >;
|
|
|
|
class Foo
|
|
{
|
|
int m;
|
|
public:
|
|
Foo(int i);
|
|
int get_m();
|
|
};
|
|
std::shared_ptr<Foo> foo(Foo v);
|
|
std::shared_ptr<const Foo> const_foo(Foo v);
|
|
std::vector<std::shared_ptr<Foo> > foo_vec(Foo v) const;
|
|
std::vector<std::shared_ptr<const Foo> > const_foo_vec(Foo v) const;
|
|
|