Loading [MathJax]/extensions/tex2jax.js
ug4
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
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
39extern "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
49namespace ug
50{
51namespace bridge
52{
53namespace lua
54{
55
57
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;}
70};
71
76
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:296
Definition smart_pointer.h:108
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