Sdk/LuAPI: Bind Nz::Stream class

Former-commit-id: 286ecbd79b25b30d17055640e1c792906f434525
This commit is contained in:
Lynix 2016-01-21 13:07:37 +01:00
parent 642f139da9
commit 1ef85ae806
1 changed files with 46 additions and 22 deletions

View File

@ -29,7 +29,7 @@ namespace Ndk
clockClass.SetMethod("__tostring", [] (Nz::LuaInstance& lua, Nz::Clock& clock) -> int {
Nz::StringStream stream("Clock(Elapsed: ");
stream << clock.GetSeconds();
stream << ", Paused: ";
stream << "s, Paused: ";
stream << clock.IsPaused();
stream << ')';
@ -97,8 +97,53 @@ namespace Ndk
directoryClass.Register(instance);
/*********************************** Nz::Stream ***********************************/
Nz::LuaClass<Nz::Stream> streamClass("Stream");
streamClass.SetMethod("EnableTextMode", &Nz::Stream::EnableTextMode);
streamClass.SetMethod("Flush", &Nz::Stream::Flush);
streamClass.SetMethod("GetCursorPos", &Nz::Stream::GetCursorPos);
streamClass.SetMethod("GetDirectory", &Nz::Stream::GetDirectory);
streamClass.SetMethod("GetPath", &Nz::Stream::GetPath);
streamClass.SetMethod("GetOpenMode", &Nz::Stream::GetOpenMode);
streamClass.SetMethod("GetStreamOptions", &Nz::Stream::GetStreamOptions);
streamClass.SetMethod("GetSize", &Nz::Stream::GetSize);
streamClass.SetMethod("ReadLine", &Nz::Stream::ReadLine, 0U);
streamClass.SetMethod("IsReadable", &Nz::Stream::IsReadable);
streamClass.SetMethod("IsSequential", &Nz::Stream::IsSequential);
streamClass.SetMethod("IsTextModeEnabled", &Nz::Stream::IsTextModeEnabled);
streamClass.SetMethod("IsWritable", &Nz::Stream::IsWritable);
streamClass.SetMethod("SetCursorPos", &Nz::Stream::SetCursorPos);
streamClass.SetMethod("Read", [] (Nz::LuaInstance& lua, Nz::Stream& stream) -> int {
int length = lua.CheckInteger(1);
lua.ArgCheck(length > 0, 1, "length must be positive");
std::unique_ptr<char[]> buffer(new char[length]);
std::size_t readLength = stream.Read(buffer.get(), length);
lua.PushString(Nz::String(buffer.get(), readLength));
return 1;
});
streamClass.SetMethod("Write", [] (Nz::LuaInstance& lua, Nz::Stream& stream) -> int {
int index = 1;
std::size_t bufferSize = 0;
const char* buffer = lua.CheckString(index, &bufferSize);
if (stream.IsTextModeEnabled())
lua.Push(stream.Write(Nz::String(buffer, bufferSize)));
else
lua.Push(stream.Write(buffer, bufferSize));
return 1;
});
streamClass.Register(instance);
/*********************************** Nz::File ***********************************/
Nz::LuaClass<Nz::File> fileClass("File");
fileClass.Inherit(streamClass);
// Constructeur
fileClass.SetConstructor([](Nz::LuaInstance& lua) -> Nz::File* {
@ -223,26 +268,6 @@ namespace Ndk
return 0;
});
// Nz::File::Read (Manual)
fileClass.SetMethod("Read", [] (Nz::LuaInstance& lua, Nz::File& file) -> int {
int length = lua.CheckInteger(1);
lua.ArgCheck(length > 0, 1, "length must be positive");
std::unique_ptr<char[]> buffer(new char[length]);
std::size_t readLength = file.Read(buffer.get(), length);
lua.PushString(Nz::String(buffer.get(), readLength));
return 1;
});
// Nz::File::ReadLine (Manual)
fileClass.SetMethod("ReadLine", [] (Nz::LuaInstance& lua, Nz::File& file) -> int {
int length = lua.CheckInteger(1, 0);
lua.PushString(file.ReadLine(length));
return 1;
});
// Nz::File::__tostring (Manual)
fileClass.SetMethod("__tostring", [] (Nz::LuaInstance& lua, Nz::File& file) -> int {
Nz::StringStream stream("File(");
if (file.IsOpen())
@ -254,7 +279,6 @@ namespace Ndk
return 1;
});
fileClass.Register(instance);
// Énumérations de la classe Nz::File