diff --git a/SDK/src/NDK/LuaAPI_Audio.cpp b/SDK/src/NDK/LuaAPI_Audio.cpp index 07bb9bdec..2865b956a 100644 --- a/SDK/src/NDK/LuaAPI_Audio.cpp +++ b/SDK/src/NDK/LuaAPI_Audio.cpp @@ -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()) diff --git a/SDK/src/NDK/LuaAPI_Core.cpp b/SDK/src/NDK/LuaAPI_Core.cpp index 8e626494a..0725627ee 100644 --- a/SDK/src/NDK/LuaAPI_Core.cpp +++ b/SDK/src/NDK/LuaAPI_Core.cpp @@ -4,10 +4,74 @@ #include #include +#include + namespace Ndk { void LuaAPI::Register_Core(Nz::LuaInstance& instance) { + /******************************** Nz::AbstractHash *******************************/ + Nz::LuaClass 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(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 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 clockClass("Clock");