//===-- MICmnStreamStdin.h --------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #pragma once // In-house headers: #include "MICmnBase.h" #include "MIUtilSingletonBase.h" #include "MIUtilString.h" #include "MIUtilThreadBaseStd.h" //++ //============================================================================ // Details: MI common code class. Used to handle stream data from Stdin. // Singleton class using the Visitor pattern. A driver using the // interface // provide can receive callbacks when a new line of data is received. // Each line is determined by a carriage return. // A singleton class. //-- class CMICmnStreamStdin : public CMICmnBase, public MI::ISingleton { // Give singleton access to private constructors friend MI::ISingleton; // Methods: public: bool Initialize() override; bool Shutdown() override; // const CMIUtilString &GetPrompt() const; bool SetPrompt(const CMIUtilString &vNewPrompt); void SetEnablePrompt(const bool vbYes); bool GetEnablePrompt() const; const char *ReadLine(CMIUtilString &vwErrMsg); // Methods: private: /* ctor */ CMICmnStreamStdin(); /* ctor */ CMICmnStreamStdin(const CMICmnStreamStdin &); void operator=(const CMICmnStreamStdin &); // Overridden: private: // From CMICmnBase /* dtor */ ~CMICmnStreamStdin() override; // Attributes: private: CMIUtilString m_strPromptCurrent; // Command line prompt as shown to the user bool m_bShowPrompt; // True = Yes prompt is shown/output to the user (stdout), // false = no prompt static const int m_constBufferSize = 2048; char *m_pCmdBuffer; };