ug4
bindings_lua.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2010-2014: G-CSC, Goethe University Frankfurt
3  * Author: Sebastian Reiter
4  *
5  * This file is part of UG4.
6  *
7  * UG4 is free software: you can redistribute it and/or modify it under the
8  * terms of the GNU Lesser General Public License version 3 (as published by the
9  * Free Software Foundation) with the following additional attribution
10  * requirements (according to LGPL/GPL v3 §7):
11  *
12  * (1) The following notice must be displayed in the Appropriate Legal Notices
13  * of covered and combined works: "Based on UG4 (www.ug4.org/license)".
14  *
15  * (2) The following notice must be displayed at a prominent place in the
16  * terminal output of covered works: "Based on UG4 (www.ug4.org/license)".
17  *
18  * (3) The following bibliography is recommended for citation and must be
19  * preserved in all covered files:
20  * "Reiter, S., Vogel, A., Heppner, I., Rupp, M., and Wittum, G. A massively
21  * parallel geometric multigrid solver on hierarchically distributed grids.
22  * Computing and visualization in science 16, 4 (2013), 151-164"
23  * "Vogel, A., Reiter, S., Rupp, M., Nägel, A., and Wittum, G. UG4 -- a novel
24  * flexible software system for simulating pde based models on high performance
25  * computers. Computing and visualization in science 16, 4 (2013), 165-179"
26  *
27  * This program is distributed in the hope that it will be useful,
28  * but WITHOUT ANY WARRANTY; without even the implied warranty of
29  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
30  * GNU Lesser General Public License for more details.
31  */
32 
33 #ifndef __H__UG__INTERFACE__BINDINGS_LUA__
34 #define __H__UG__INTERFACE__BINDINGS_LUA__
35 
36 #include <vector>
37 #include <string>
38 
39 extern "C" {
40 #include "externals/lua/lua.h"
41 #include "externals/lua/lauxlib.h"
42 #include "externals/lua/lualib.h"
43 }
44 
45 
46 #include "common/common.h"
47 #include "registry/registry.h"
48 
49 namespace ug
50 {
51 namespace bridge
52 {
53 namespace lua
54 {
55 
56 extern const bool IMLPICIT_SMART_PTR_TO_PTR_CONVERSION;
57 
60  SMART_POINTER = 1 << 1,
61  IS_CONST = 1 << 2
62 };
63 
65  byte type;
66 
67  bool is_const() {return (type & IS_CONST) == IS_CONST;}
68  bool is_raw_ptr() {return (type & RAW_POINTER) == RAW_POINTER;}
69  bool is_smart_ptr() {return (type & SMART_POINTER) == SMART_POINTER;}
70 };
71 
73 {
75 };
76 
78 {
80 };
81 
83 {
84  void* obj;
85  void (*deleteFunc)(const void*);
86 };
87 
88 
90 
92 
94  const char* metatableName);
95 
97  const char* metatableName);
98 
100  const char* metatableName,
101  void (*deleteFunc)(const void*),
102  bool is_const);
103 
104 
105 }// end of namespace
106 }// end of namespace
107 }// end of namespace
108 
109 #endif
Definition: smart_pointer.h:650
Definition: smart_pointer.h:525
Registry for functions and classes that are exported to scripts and visualizations.
Definition: registry.h:138
struct lua_State lua_State
Definition: lua_table_handle.h:40
const bool IMLPICIT_SMART_PTR_TO_PTR_CONVERSION
Definition: bindings_lua.cpp:129
SmartUserDataWrapper * CreateNewUserData(lua_State *L, const SmartPtr< void > &ptr, const char *metatableName)
creates a new UserDataWrapper and associates it with ptr in luas registry
Definition: bindings_lua.cpp:174
UserDataWrapperTypes
Definition: bindings_lua.h:58
@ RAW_POINTER
Definition: bindings_lua.h:59
@ SMART_POINTER
Definition: bindings_lua.h:60
@ IS_CONST
Definition: bindings_lua.h:61
bool CreateBindings_LUA(lua_State *L, Registry &reg)
creates bindings for ug_interface and a given lua-state.
Definition: bindings_lua.cpp:1058
the ug namespace
Definition: bindings_lua.h:78
ConstSmartPtr< void > smartPtr
Definition: bindings_lua.h:79
Definition: bindings_lua.h:83
void * obj
Definition: bindings_lua.h:84
void(* deleteFunc)(const void *)
Definition: bindings_lua.h:85
Definition: bindings_lua.h:73
SmartPtr< void > smartPtr
Definition: bindings_lua.h:74
Definition: bindings_lua.h:64
byte type
Definition: bindings_lua.h:65
bool is_const()
Definition: bindings_lua.h:67
bool is_raw_ptr()
Definition: bindings_lua.h:68
bool is_smart_ptr()
Definition: bindings_lua.h:69