/*** Copyright (C) 2021 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: Console.hpp Date: 2021-6-9 Author: Reece ***/ #pragma once #include "EAnsiColor.hpp" #include "ConsoleMessage.hpp" namespace Aurora::Logging { struct ILogger; } namespace Aurora::IO::Loop { struct ILoopSource; } namespace Aurora::Console { /** * @brief Returns the untouched ILogger interface of the AuLogXX functions as configured by the Aurora::RuntimeStartInfo structure * @return */ AUKN_SYM AuSPtr GetDefaultLogInterface(); /** * @brief Asynchronous binary read of the underlying stream, unlocalized and potentially being consumed by other users. * Consider using `Hooks::SetCallbackAndDisableCmdProcessing` for asynchronous utf-8 processed line based input * @param buffer * @param length * @return */ AUKN_SYM AuUInt32 ReadStdIn(void *buffer, AuUInt32 length); /** * @brief Asynchronous binary write to the applications stdout stream. Consider using `AuLogInfo` for general purpose messaging * @param buffer * @param length * @return */ AUKN_SYM AuUInt32 WriteStdOut(const void *buffer, AuUInt32 length); /** * @brief Simulates an input line from an internal console interface given a UTF-8 string * Populates ReadStdIn and notifys the hook callback * @param string * @return */ AUKN_SYM bool DispatchRawLine(const AuString &string); AUKN_SYM AuSPtr StdInBufferLoopSource(); AUKN_SYM void OpenLateStd(); AUKN_SYM void OpenLateGUI(); } #include "ConsoleStd/ConsoleStd.hpp" #include "ConsoleTTY/ConsoleTTY.hpp" #include "Commands/Commands.hpp" #include "Hooks/Hooks.hpp"