| /* ----------------------------------------------------------------------------- |
| * std_string_view.i |
| * |
| * std::string_view typemaps for LUA |
| * ----------------------------------------------------------------------------- */ |
| |
| %{ |
| #include <string_view> |
| %} |
| |
| namespace std { |
| |
| %naturalvar string_view; |
| |
| %typemap(in,checkfn="lua_isstring") string_view |
| { |
| size_t len; |
| const char *ptr = lua_tolstring(L, $input, &len); |
| $1 = std::string_view(ptr, len); |
| } |
| |
| %typemap(out) string_view |
| %{ lua_pushlstring(L,$1.data(),$1.size()); SWIG_arg++;%} |
| |
| %typemap(in,checkfn="lua_isstring") const string_view& ($*1_ltype temp) |
| { |
| size_t len; |
| const char *ptr = lua_tolstring(L, $input, &len); |
| temp = std::string_view(ptr, len); |
| $1=&temp; |
| } |
| |
| %typemap(out) const string_view& |
| %{ lua_pushlstring(L,$1->data(),$1->size()); SWIG_arg++;%} |
| |
| // for throwing of any kind of string_view, string_view ref's and string_view pointers |
| // we convert all to lua strings |
| %typemap(throws) string_view, string_view&, const string_view& |
| %{ lua_pushlstring(L,$1.data(),$1.size()); SWIG_fail;%} |
| |
| %typemap(throws) string_view*, const string_view* |
| %{ lua_pushlstring(L,$1->data(),$1->size()); SWIG_fail;%} |
| |
| %typecheck(SWIG_TYPECHECK_STRINGVIEW) string_view, const string_view& { |
| $1 = lua_isstring(L,$input); |
| } |
| |
| class string_view; |
| |
| } |