From 3eb7a332f7d0f391be64bb00299bc12926e77622 Mon Sep 17 00:00:00 2001
From: Nicolas Marsic <marsic@temf.tu-darmstadt.de>
Date: Sun, 15 Nov 2020 17:22:44 +0100
Subject: [PATCH] LuaFunctionSpace: add __tostring function

---
 lua/LuaFunctionSpace.cpp | 20 ++++++++++++++++++--
 lua/LuaFunctionSpace.h   |  4 ++++
 2 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/lua/LuaFunctionSpace.cpp b/lua/LuaFunctionSpace.cpp
index 4124b255..920cee66 100644
--- a/lua/LuaFunctionSpace.cpp
+++ b/lua/LuaFunctionSpace.cpp
@@ -20,8 +20,9 @@ const struct luaL_Reg libsf_FunctionSpace_f[] = {
 };
 
 const struct luaL_Reg libsf_FunctionSpace_m[] = {
-  {"__gc", lua_FunctionSpace_delete},
-  {NULL,   NULL}
+  {"__tostring", lua_FunctionSpace_toString},
+  {"__gc",       lua_FunctionSpace_delete},
+  {NULL,         NULL}
 };
 
 extern "C" int luaopen_libsf_functionspace(lua_State *L){
@@ -136,4 +137,19 @@ int lua_FunctionSpace_delete(lua_State *L){
   return 0;
 }
 
+int lua_FunctionSpace_toString(lua_State *L){
+  FunctionSpace **lua =
+    (FunctionSpace**)luaL_checkudata(L, 1, "sf.FunctionSpace");
+  lua_pushstring(L, lua_FunctionSpace_toString(*lua).c_str());
+
+  return 1;
+}
+
+string lua_FunctionSpace_toString(FunctionSpace *fs){
+  stringstream str;
+  str << "Function space: " << fs;
+
+  return str.str();
+}
+
 #endif
diff --git a/lua/LuaFunctionSpace.h b/lua/LuaFunctionSpace.h
index 554d01cf..c2cd420a 100644
--- a/lua/LuaFunctionSpace.h
+++ b/lua/LuaFunctionSpace.h
@@ -4,6 +4,7 @@
 #include "SmallFemConfig.h"
 #ifdef HAVE_LUA
 
+#include "FunctionSpace.h"
 extern "C"{
 #include "lua.h"
 }
@@ -13,5 +14,8 @@ extern "C" int luaopen_libsf_functionspace(lua_State *L);
 int lua_FunctionSpace_new(lua_State *L);
 int lua_FunctionSpace_delete(lua_State *L);
 
+int         lua_FunctionSpace_toString(lua_State *L);
+std::string lua_FunctionSpace_toString(sf::FunctionSpace *fs);
+
 #endif
 #endif
-- 
GitLab