Lua Utils
Biblioteca utilitária para facilitar a integração de Lua com C++
luaLightUserdata.h
Go to the documentation of this file.
1 /************************************************************************
2 **
3 ** Copyright (C) 2009 K2FS Sistemas e Projetos Ltd.
4 ** All rights reserved.
5 **
6 ************************************************************************/
7 
18 #ifndef _LUA_LIGHTUSERDATA_H_
19 #define _LUA_LIGHTUSERDATA_H_
20 
21 #include "luaConfig.h"
22 #include <QVariant>
23 
24 class LuaEnv;
25 
30 class LUAUTILS_API_EXPORT LuaLightUserdata
31 {
32 public:
33 
36  LuaLightUserdata(LuaEnv* env, void* data);
37  LuaLightUserdata(LuaEnv* env, int index);
38 
39  void push();
40  QVariant toVariant() const;
41 
43  bool isNull() const { return _data == NULL; }
44 
46  template <class T> T* value() { return (T*)_data; }
47 
48 private:
50  void* _data;
51 };
52 
55 
56 
62 template <class T> T* LuaLightUserdataValue(QVariant val)
63 {
64  if(val.isNull() || !val.canConvert<LuaLightUserdata>())
65  return NULL;
67  return ud.value<T>();
68 }
69 
70 #endif
71 
bool canConvert(int targetTypeId) const const
LuaEnv * _lua
Ambiente Lua associado.
Definition: luaLightUserdata.h:49
T * LuaLightUserdataValue(QVariant val)
Recebe um QVariant contendo um LuaLightUserdata que armazena um valor do tipo T e retorna seu valor.
Definition: luaLightUserdata.h:62
bool isNull() const
Retorna true se o dado armazenado for nulo.
Definition: luaLightUserdata.h:43
T value() const const
T * value()
Retorna o valor armazenado convertido para um T*.
Definition: luaLightUserdata.h:46
Classe responsável por prover uma camada mínima sobre um light userdata de maneira que o mesmo possa ...
Definition: luaLightUserdata.h:30
bool isNull() const const
Classe para interface com ambientes Lua.
Definition: luaEnv.h:34
Declaration of usefull configuration definitions and some compatibility options fro compiling with se...
Q_DECLARE_METATYPE(LuaLightUserdata)
Cadastra tipo para este poder ser utilizado em um QVariant.
void * _data
Dado armazenado.
Definition: luaLightUserdata.h:50