mirror of
https://github.com/azerothcore/mod-ale
synced 2025-11-29 15:38:17 +08:00
169 lines
4.5 KiB
C++
169 lines
4.5 KiB
C++
/*
|
|
* Copyright (C) 2010 - 2014 Eluna Lua Engine <http://emudevs.com/>
|
|
* This program is free software licensed under GPL version 3
|
|
* Please see the included DOCS/LICENSE.md for more information
|
|
*/
|
|
|
|
#ifndef QUERYMETHODS_H
|
|
#define QUERYMETHODS_H
|
|
|
|
#ifndef TRINITY
|
|
#define RESULT result
|
|
#else
|
|
#define RESULT (*result)
|
|
#endif
|
|
namespace LuaQuery
|
|
{
|
|
/* BOOLEAN */
|
|
int IsNull(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
#ifndef TRINITY
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].IsNULL());
|
|
#else
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].IsNull());
|
|
#endif
|
|
return 1;
|
|
}
|
|
|
|
/* GETTERS */
|
|
int GetColumnCount(lua_State* L, QueryResult* result)
|
|
{
|
|
Eluna::Push(L, RESULT->GetFieldCount());
|
|
return 1;
|
|
}
|
|
|
|
int GetRowCount(lua_State* L, QueryResult* result)
|
|
{
|
|
if (RESULT->GetRowCount() > (uint32)-1)
|
|
Eluna::Push(L, (uint32)-1);
|
|
else
|
|
Eluna::Push(L, RESULT->GetRowCount());
|
|
return 1;
|
|
}
|
|
|
|
int GetBool(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetBool());
|
|
return 1;
|
|
}
|
|
|
|
int GetUInt8(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetUInt8());
|
|
return 1;
|
|
}
|
|
|
|
int GetUInt16(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetUInt16());
|
|
return 1;
|
|
}
|
|
|
|
int GetUInt32(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetUInt32());
|
|
return 1;
|
|
}
|
|
|
|
int GetUInt64(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetUInt64());
|
|
return 1;
|
|
}
|
|
|
|
int GetInt8(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetInt8());
|
|
return 1;
|
|
}
|
|
|
|
int GetInt16(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetInt16());
|
|
return 1;
|
|
}
|
|
|
|
int GetInt32(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetInt32());
|
|
return 1;
|
|
}
|
|
|
|
int GetInt64(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetInt64());
|
|
return 1;
|
|
}
|
|
|
|
int GetFloat(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetFloat());
|
|
return 1;
|
|
}
|
|
|
|
int GetDouble(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetDouble());
|
|
return 1;
|
|
}
|
|
|
|
int GetString(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
#ifndef TRINITY
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetCppString());
|
|
#else
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetString());
|
|
#endif
|
|
return 1;
|
|
}
|
|
|
|
int GetCString(lua_State* L, QueryResult* result)
|
|
{
|
|
uint32 col = Eluna::CHECKVAL<uint32>(L, 2);
|
|
if (col < RESULT->GetFieldCount())
|
|
#ifndef TRINITY
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetString());
|
|
#else
|
|
Eluna::Push(L, RESULT->Fetch()[col].GetCString());
|
|
#endif
|
|
return 1;
|
|
}
|
|
|
|
/* OTHER */
|
|
int NextRow(lua_State* L, QueryResult* result)
|
|
{
|
|
Eluna::Push(L, RESULT->NextRow());
|
|
return 1;
|
|
}
|
|
};
|
|
#undef RESULT
|
|
|
|
#endif
|