Lua Binding

- Added Lua binding for Nz::MD5Hash & Nz::AbstractHash to LuaAPI_Core
(to be tested)
- Fixed a comment in LuaAPI_Audio


Former-commit-id: d80eec6616b7dad31e2fbbbe4ff6f5d1d28b67e4
This commit is contained in:
GigAnon 2016-01-20 17:05:57 +01:00
parent 7dec6e10a6
commit 83b365f139
2 changed files with 65 additions and 1 deletions

View File

@ -108,7 +108,7 @@ namespace Ndk
soundClass.SetMethod("LoadFromFile", &Nz::Sound::LoadFromFile, Nz::SoundBufferParams());
soundClass.SetMethod("SetPlayingOffset", &Nz::Sound::SetPlayingOffset);
// Nz::Clock::__tostring (Manual)
// Nz::Sound::__tostring (Manual)
soundClass.SetMethod("__tostring", [] (Nz::LuaInstance& lua, Nz::Sound& sound) -> int {
Nz::StringStream stream("Sound(");
if (const Nz::SoundBuffer* buffer = sound.GetBuffer())

View File

@ -4,10 +4,74 @@
#include <Nazara/Core.hpp>
#include <Nazara/Lua/LuaClass.hpp>
#include <Nazara/Core/Hash/MD5.hpp>
namespace Ndk
{
void LuaAPI::Register_Core(Nz::LuaInstance& instance)
{
/******************************** Nz::AbstractHash *******************************/
Nz::LuaClass<Nz::AbstractHash> abstractHashClass("AbstractHash");
abstractHashClass.SetMethod("__tostring",
[](Nz::LuaInstance& lua, Nz::AbstractHash& hash) -> int
{
Nz::StringStream strStrm("Nz::AbstractHash(");
strStrm << "Hash type: " << hash.GetHashName() << ", ";
strStrm << "Digest size: " << hash.GetDigestLength() << ")";
lua.PushString(strStrm);
return 1;
});
abstractHashClass.SetMethod("Append",
[](Nz::LuaInstance& lua, Nz::AbstractHash& hash) -> int
{
size_t dataLength = 0;
const Nz::UInt8* data = reinterpret_cast<const Nz::UInt8*>(lua.CheckString(1, &dataLength));
hash.Append(data, dataLength);
return 0;
});
abstractHashClass.SetMethod("Begin", &Nz::AbstractHash::Begin);
abstractHashClass.SetMethod("End",
[](Nz::LuaInstance& lua, Nz::AbstractHash& hash) -> int
{
Nz::ByteArray data(hash.End()); // Exceptions? What's the expected behavior of that method?
lua.PushString(data.ToString());
return 1;
});
abstractHashClass.SetMethod("GetDigestLength", &Nz::AbstractHash::GetDigestLength);
abstractHashClass.SetMethod("GetHashName",
[](Nz::LuaInstance& lua, Nz::AbstractHash& hash) -> int
{
Nz::String hashName(hash.GetHashName());
lua.PushString(hashName);
return 1;
});
abstractHashClass.Register(instance);
/********************************** Nz::HashMD5 **********************************/
Nz::LuaClass<Nz::HashMD5> hashMD5Class("HashMD5");
hashMD5Class.Inherit(abstractHashClass);
hashMD5Class.SetConstructor(
[](Nz::LuaInstance& lua) -> Nz::HashMD5*
{
if(std::min(lua.GetStackTop(), 1U) == 0)
return new Nz::HashMD5();
return nullptr;
});
hashMD5Class.Register(instance);
/*********************************** Nz::Clock **********************************/
Nz::LuaClass<Nz::Clock> clockClass("Clock");