MezzanineEngine 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
scripting.h
1 // © Copyright 2010 - 2014 BlackTopp Studios Inc.
2 /* This file is part of The Mezzanine Engine.
3 
4  The Mezzanine Engine is free software: you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation, either version 3 of the License, or
7  (at your option) any later version.
8 
9  The Mezzanine Engine is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with The Mezzanine Engine. If not, see <http://www.gnu.org/licenses/>.
16 */
17 /* The original authors have included a copy of the license specified above in the
18  'Docs' folder. See 'gpl.txt'
19 */
20 /* We welcome the use of the Mezzanine engine to anyone, including companies who wish to
21  Build professional software and charge for their product.
22 
23  However there are some practical restrictions, so if your project involves
24  any of the following you should contact us and we will try to work something
25  out:
26  - DRM or Copy Protection of any kind(except Copyrights)
27  - Software Patents You Do Not Wish to Freely License
28  - Any Kind of Linking to Non-GPL licensed Works
29  - Are Currently In Violation of Another Copyright Holder's GPL License
30  - If You want to change our code and not add a few hundred MB of stuff to
31  your distribution
32 
33  These and other limitations could cause serious legal problems if you ignore
34  them, so it is best to simply contact us or the Free Software Foundation, if
35  you have any questions.
36 
37  Joseph Toppi - toppij@gmail.com
38  John Blackwood - makoenergy02@gmail.com
39 */
40 #ifndef _scripting_h
41 #define _scripting_h
42 
43 #ifdef MEZZLUA51
44  #define LINKLUAMANUAL /// - @ref LuaManual
45 #else
46  #define LINKLUAMANUAL /// - Lua Not Compiled in this build - @ref LuaManual
47 #endif
48 
49 namespace Mezzanine
50 {
51  /// @namespace Mezzanine::Scripting
52  /// @brief This namespace is for all the classes belonging to the Scripting Subsystem.
53  /// @details The system for integrating scripting languages into the engine.
54  /// @n @n
55  /// In general each languages Interpretter/Engine/Compiler/VM is locating in its own
56  /// subnamespace in the associated manager. Here is a list of Languages compiled in
57  /// this build.
58  /// @n @n
59  /// - @ref ScriptingManual
60  ///
61  LINKLUAMANUAL
62 
63 
64 
65  namespace Scripting
66  {}
67 }
68 
69 /// @page ScriptingManual
70 /// The scripting system is included the Mezzanine::Scripting namespace. It is primarily
71 /// composed of four interface classes, four abstract classes. An implementation of a
72 /// scripting system should implement these four classes in a sub-namespacef
73 /// - Mezzanine::Scripting::iScript
74 /// - Mezzanine::Scripting::iScriptArgument
75 /// - Mezzanine::Scripting::iScriptingManager
76 /// - Mezzanine::Scripting::iScriptWorkUnit
77 ///
78 /// Many scripting languages suitable for being embedded in games have a number of
79 /// similar traits. All have some kind of runtime that mustbe initialized, this
80 /// runtime accepts strings of script source and performs the steps the source
81 /// desribe. Some keep internal track of the source other expect the the caller to
82 /// do so. Most allow passing arguments into scripts and accepting return values.
83 /// Some allow the script to be compiled to a byte and others do not. A scripting manager is
84 /// @n @n
85 /// Whether or
86 /// not this is updated can be controlled by the Mezz_SWIG CMake Flag. When this flag
87 /// is enabled a SWIG_Mezzanine build target is added to the project. To satisfy
88 /// build systems this target/project compiles src/blank.cpp as the only files.
89 /// During the build steps in that target it attempt to Swig from the command line.
90 /// @n @n
91 /// This can be run manually by invoking that target specifically. For example:
92 /// @code
93 /// $make SWIG_Mezzanine
94 /// ninja SWIG_Mezzanine
95 /// @endcode
96 
97 #include "Scripting/script.h"
101 
102 
103 // Each one of these sections should have a complete implementation of a scripting and
104 // appropriate bindings for the mezzanine engine.
105 #ifdef MEZZLUA51
106  #include "Scripting/Lua51/lua51script.h"
107  #include "Scripting/Lua51/lua51scriptargument.h"
108  #include "Scripting/Lua51/lua51scriptingengine.h"
109  #include "Scripting/Lua51/lua51workunit.h"
110 #endif
111 
112 
113 #endif // \_scripting_h