root / lab4 / .minix-src / include / lutok / state.ipp @ 14
History | View | Annotate | Download (2.31 KB)
1 |
// Copyright 2011 Google Inc. |
---|---|
2 |
// All rights reserved. |
3 |
// |
4 |
// Redistribution and use in source and binary forms, with or without |
5 |
// modification, are permitted provided that the following conditions are |
6 |
// met: |
7 |
// |
8 |
// * Redistributions of source code must retain the above copyright |
9 |
// notice, this list of conditions and the following disclaimer. |
10 |
// * Redistributions in binary form must reproduce the above copyright |
11 |
// notice, this list of conditions and the following disclaimer in the |
12 |
// documentation and/or other materials provided with the distribution. |
13 |
// * Neither the name of Google Inc. nor the names of its contributors |
14 |
// may be used to endorse or promote products derived from this software |
15 |
// without specific prior written permission. |
16 |
// |
17 |
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
18 |
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
19 |
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
20 |
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
21 |
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
22 |
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
23 |
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
24 |
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
25 |
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
26 |
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
27 |
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
28 |
|
29 |
#if !defined(LUTOK_STATE_IPP) |
30 |
#define LUTOK_STATE_IPP |
31 |
|
32 |
#include <lutok/state.hpp> |
33 |
|
34 |
namespace lutok { |
35 |
|
36 |
|
37 |
/// Wrapper around lua_newuserdata. |
38 |
/// |
39 |
/// This allocates an object as big as the size of the provided Type. |
40 |
/// |
41 |
/// \return The pointer to the allocated userdata object. |
42 |
/// |
43 |
/// \warning Terminates execution if there is not enough memory. |
44 |
template< typename Type > |
45 |
Type* |
46 |
state::new_userdata(void) |
47 |
{ |
48 |
return static_cast< Type* >(new_userdata_voidp(sizeof(Type))); |
49 |
} |
50 |
|
51 |
|
52 |
/// Wrapper around lua_touserdata. |
53 |
/// |
54 |
/// \param index The second parameter to lua_touserdata. |
55 |
/// |
56 |
/// \return The return value of lua_touserdata. |
57 |
template< typename Type > |
58 |
Type* |
59 |
state::to_userdata(const int index) |
60 |
{ |
61 |
return static_cast< Type* >(to_userdata_voidp(index)); |
62 |
} |
63 |
|
64 |
|
65 |
} // namespace lutok |
66 |
|
67 |
#endif // !defined(LUTOK_STATE_IPP) |