1 //===-- MICmdArgValThreadGrp.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 #pragma once 11 12 // In-house headers: 13 #include "MICmdArgValBase.h" 14 15 // Declarations: 16 class CMICmdArgContext; 17 18 //++ 19 //============================================================================ 20 // Details: MI common code class. Command argument class. Arguments object 21 // needing specialization derived from the CMICmdArgValBase class. 22 // An argument knows what type of argument it is and how it is to 23 // interpret the options (context) string to find and validate a 24 // matching 25 // argument and so extract a value from it. Thread group looks like 26 // "i1" in the options text. 27 // Based on the Interpreter pattern. 28 //-- 29 class CMICmdArgValThreadGrp : public CMICmdArgValBaseTemplate<MIuint> { 30 // Methods: 31 public: 32 /* ctor */ CMICmdArgValThreadGrp(); 33 /* ctor */ CMICmdArgValThreadGrp(const CMIUtilString &vrArgName, 34 const bool vbMandatory, 35 const bool vbHandleByCmd); 36 // 37 bool IsArgThreadGrp(const CMIUtilString &vrTxt) const; 38 39 // Overridden: 40 public: 41 // From CMICmdArgValBase 42 /* dtor */ ~CMICmdArgValThreadGrp() override; 43 // From CMICmdArgSet::IArg 44 bool Validate(CMICmdArgContext &vArgContext) override; 45 46 // Methods: 47 private: 48 bool ExtractNumber(const CMIUtilString &vrTxt); 49 MIuint GetNumber() const; 50 51 // Attributes: 52 private: 53 MIuint m_nThreadGrp; 54 }; 55