60 lines
1.8 KiB
C++
60 lines
1.8 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// This source file is part of the LuaPlus source distribution and is Copyright
|
|
// 2001-2011 by Joshua C. Jensen (jjensen@workspacewhiz.com).
|
|
//
|
|
// The latest version may be obtained from http://luaplus.org/.
|
|
//
|
|
// The code presented in this file may be used in any environment it is
|
|
// acceptable to use Lua.
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
#ifndef LUAPLUS__LUASTACKTABLEITERATOR_H
|
|
#define LUAPLUS__LUASTACKTABLEITERATOR_H
|
|
|
|
#include "LuaStackObject.h"
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// namespace LuaPlus
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
namespace LuaPlus
|
|
{
|
|
|
|
/**
|
|
The LuaStackTableIterator class provides a far simpler, safer, and more natural
|
|
looking table iteration method. The iterator is not STL compliant,
|
|
although it could easily be made so.
|
|
**/
|
|
class LuaStackTableIterator
|
|
{
|
|
public:
|
|
LuaStackTableIterator(LuaStackObject& tableObj, bool doReset = true, bool autoStackManagement = true);
|
|
~LuaStackTableIterator();
|
|
void Reset();
|
|
void Invalidate();
|
|
bool Next();
|
|
bool IsValid() const;
|
|
LuaStackTableIterator& operator++();
|
|
operator bool() const;
|
|
LuaStackObject GetKey();
|
|
LuaStackObject GetValue();
|
|
|
|
protected:
|
|
|
|
private:
|
|
/**
|
|
Don't allow copies. The stack will get screwed.
|
|
**/
|
|
LuaStackTableIterator& operator=(const LuaStackTableIterator& iter);
|
|
LuaStackTableIterator(const LuaStackTableIterator& iter);
|
|
|
|
lua_State* L;
|
|
int stackIndex;
|
|
int startStackIndex; ///< The current starting stack index or -1 if the iterator is invalid.
|
|
bool autoStackManagement; ///< Auto stack management enabled or not?
|
|
};
|
|
|
|
} // namespace LuaPlus
|
|
|
|
#include "LuaStackTableIterator.inl"
|
|
|
|
#endif // LUAPLUS__LUASTACKTABLEITERATOR_H
|