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
|
%module cpp17_std_filesystem
%include <std_string.i>
%include <std_filesystem.i>
%{
#include <filesystem>
%}
%inline %{
/* Test the "out" typemap for std::filesystem::path */
std::filesystem::path makePath(const std::string& s) {
return std::filesystem::path(s);
}
/**
* There is no "out" typemap for a pointer to a path, so
* this should return a wrapped instance of a path
* instead of the native path type for the target language.
*/
std::filesystem::path * makePathPtr(const std::string& s) {
static std::filesystem::path p(s);
return &p;
}
/**
* There is no "out" typemap for a non-const reference to a path, so
* this should return a wrapped instance of a std::filesystem::path instead of
* the native path type for the target language.
*/
std::filesystem::path& makePathRef(const std::string& s) {
static std::filesystem::path p(s);
return p;
}
/**
* There is no "out" typemap for a const reference to a path, so
* this should return a wrapped instance of a std::filesystem::path
* instead of the native path type for the target language.
*/
const std::filesystem::path & makePathConstRef(const std::string & s) {
static std::filesystem::path p(s);
return p;
}
/* Test the "in" typemap for std::filesystem::path */
std::string pathToStr(std::filesystem::path p) {
return p.string();
}
/* Test the "in" typemap for const std::filesystem::path & */
std::string pathConstRefToStr(const std::filesystem::path & p) {
return p.string();
}
/* Test the "in" typemap for const std::filesystem::path * */
std::string pathPtrToStr(const std::filesystem::path * p) {
return p->string();
}
namespace stdfs = std::filesystem;
std::filesystem::path roundTrip(const stdfs::path& p) {
return p;
}
%}
|