1 //===-- MICmdCmdThread.h ----------------------------------------*- C++ -*-===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 10 // Overview: CMICmdCmdThreadInfo interface. 11 // 12 // To implement new MI commands derive a new command class from the 13 // command base 14 // class. To enable the new command for interpretation add the new 15 // command class 16 // to the command factory. The files of relevance are: 17 // MICmdCommands.cpp 18 // MICmdBase.h / .cpp 19 // MICmdCmd.h / .cpp 20 // For an introduction to adding a new command see 21 // CMICmdCmdSupportInfoMiCmdQuery 22 // command class as an example. 23 24 #pragma once 25 26 // In-house headers: 27 #include "MICmdBase.h" 28 #include "MICmnMIValueList.h" 29 #include "MICmnMIValueTuple.h" 30 31 //++ 32 //============================================================================ 33 // Details: MI command class. MI commands derived from the command base class. 34 // *this class implements MI command "thread-info". 35 //-- 36 class CMICmdCmdThreadInfo : public CMICmdBase { 37 // Statics: 38 public: 39 // Required by the CMICmdFactory when registering *this command 40 static CMICmdBase *CreateSelf(); 41 42 // Methods: 43 public: 44 /* ctor */ CMICmdCmdThreadInfo(); 45 46 // Overridden: 47 public: 48 // From CMICmdInvoker::ICmd 49 bool Execute() override; 50 bool Acknowledge() override; 51 bool ParseArgs() override; 52 // From CMICmnBase 53 /* dtor */ ~CMICmdCmdThreadInfo() override; 54 55 // Typedefs: 56 private: 57 typedef std::vector<CMICmnMIValueTuple> VecMIValueTuple_t; 58 59 // Attributes: 60 private: 61 CMICmnMIValueTuple m_miValueTupleThread; 62 bool m_bSingleThread; // True = yes single thread, false = multiple threads 63 bool m_bThreadInvalid; // True = invalid, false = ok 64 VecMIValueTuple_t m_vecMIValueTuple; 65 const CMIUtilString m_constStrArgNamedThreadId; 66 67 // mi value of current-thread-id if multiple threads are requested 68 bool m_bHasCurrentThread; 69 CMICmnMIValue m_miValueCurrThreadId; 70 }; 71