#include "il2cpp-config.h"
|
|
#include "gc/WriteBarrier.h"
|
#include "icalls/mscorlib/System/ConsoleDriver.h"
|
#include "il2cpp-class-internals.h"
|
#include "os/Console.h"
|
#include "os/File.h"
|
#include "vm/Array.h"
|
#include "vm/Exception.h"
|
#include "utils/StringUtils.h"
|
|
namespace il2cpp
|
{
|
namespace icalls
|
{
|
namespace mscorlib
|
{
|
namespace System
|
{
|
// Used in .NET 2.0 System.Console -> CStreamReader/CStreamWriter -> TermInfoDriver -> ConsoleDriver -> icalls
|
|
bool ConsoleDriver::Isatty(intptr_t handle)
|
{
|
il2cpp::os::FileHandle* fileHandle = (il2cpp::os::FileHandle*)handle;
|
return os::File::Isatty(fileHandle);
|
}
|
|
int32_t ConsoleDriver::InternalKeyAvailable(int32_t ms_timeout)
|
{
|
return il2cpp::os::Console::InternalKeyAvailable(ms_timeout);
|
}
|
|
bool ConsoleDriver::TtySetup(Il2CppString* keypadXmit, Il2CppString* teardown, Il2CppArray** control_characters, int32_t** size)
|
{
|
const std::string keypadXmitString(keypadXmit ? il2cpp::utils::StringUtils::Utf16ToUtf8(keypadXmit->chars) : "");
|
const std::string teardownString(teardown ? il2cpp::utils::StringUtils::Utf16ToUtf8(teardown->chars) : "");
|
|
uint8_t controlChars[17];
|
|
const bool ret = il2cpp::os::Console::TtySetup(keypadXmitString, teardownString, controlChars, size);
|
|
gc::WriteBarrier::GenericStore(control_characters, vm::Array::New(il2cpp_defaults.byte_class, 17));
|
|
if (ret)
|
memcpy(il2cpp_array_addr(*control_characters, uint8_t, 0), controlChars, 17);
|
|
return true;
|
}
|
|
bool ConsoleDriver::SetEcho(bool wantEcho)
|
{
|
return il2cpp::os::Console::SetEcho(wantEcho);
|
}
|
|
bool ConsoleDriver::SetBreak(bool wantBreak)
|
{
|
return il2cpp::os::Console::SetBreak(wantBreak);
|
}
|
} /* namespace System */
|
} /* namespace mscorlib */
|
} /* namespace icalls */
|
} /* namespace il2cpp */
|