//===-- MICmnMIResultRecord.cpp ---------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// // Third Party Headers: #include // In-house headers: #include "MICmnMIResultRecord.h" #include "MICmnResources.h" //++ //------------------------------------------------------------------------------------ // Details: Map a result class to the corresponding string. // Args: veType - (R) A MI result class enumeration. // Return: const char* - The string corresponding to the result class. // Throws: None. //-- static const char * MapResultClassToResultClassText(CMICmnMIResultRecord::ResultClass_e veType) { switch (veType) { case CMICmnMIResultRecord::eResultClass_Done: return "done"; case CMICmnMIResultRecord::eResultClass_Running: return "running"; case CMICmnMIResultRecord::eResultClass_Connected: return "connected"; case CMICmnMIResultRecord::eResultClass_Error: return "error"; case CMICmnMIResultRecord::eResultClass_Exit: return "exit"; } assert(false && "unknown CMICmnMIResultRecord::ResultClass_e"); return NULL; } //++ //------------------------------------------------------------------------------------ // Details: Build the result record's mandatory data part. The part up to the // first // (additional) result i.e. result-record ==> [ token ] "^" // result-class. // Args: vrToken - (R) The command's transaction ID or token. // veType - (R) A MI result class enumeration. // Return: CMIUtilString & - MI result record mandatory data // Throws: None. //-- static const CMIUtilString BuildResultRecord(const CMIUtilString &vrToken, CMICmnMIResultRecord::ResultClass_e veType) { const char *pStrResultRecord = MapResultClassToResultClassText(veType); return CMIUtilString::Format("%s^%s", vrToken.c_str(), pStrResultRecord); } //++ //------------------------------------------------------------------------------------ // Details: CMICmnMIResultRecord constructor. // Type: Method. // Args: None. // Return: None. // Throws: None. //-- CMICmnMIResultRecord::CMICmnMIResultRecord() : m_strResultRecord(MIRSRC(IDS_CMD_ERR_CMD_RUN_BUT_NO_ACTION)) {} //++ //------------------------------------------------------------------------------------ // Details: CMICmnMIResultRecord constructor. // Type: Method. // Args: vrToken - (R) The command's transaction ID or token. // veType - (R) A MI result class enumeration. // Return: None. // Throws: None. //-- CMICmnMIResultRecord::CMICmnMIResultRecord(const CMIUtilString &vrToken, ResultClass_e veType) : m_strResultRecord(BuildResultRecord(vrToken, veType)) {} //++ //------------------------------------------------------------------------------------ // Details: CMICmnMIResultRecord constructor. // Type: Method. // Args: vrToken - (R) The command's transaction ID or token. // veType - (R) A MI result class enumeration. // vMIResult - (R) A MI result object. // Return: None. // Throws: None. //-- CMICmnMIResultRecord::CMICmnMIResultRecord(const CMIUtilString &vrToken, ResultClass_e veType, const CMICmnMIValueResult &vValue) : m_strResultRecord(BuildResultRecord(vrToken, veType)) { Add(vValue); } //++ //------------------------------------------------------------------------------------ // Details: CMICmnMIResultRecord destructor. // Type: Overrideable. // Args: None. // Return: None. // Throws: None. //-- CMICmnMIResultRecord::~CMICmnMIResultRecord() {} //++ //------------------------------------------------------------------------------------ // Details: Return the MI result record as a string. The string is a direct // result of // work done on *this result record so if not enough data is added then // it is // possible to return a malformed result record. If nothing has been // set or // added to *this MI result record object then text "" will be // returned. // Type: Method. // Args: None. // Return: CMIUtilString & - MI output text. // Throws: None. //-- const CMIUtilString &CMICmnMIResultRecord::GetString() const { return m_strResultRecord; } //++ //------------------------------------------------------------------------------------ // Details: Add to *this result record additional information. // Type: Method. // Args: vMIValue - (R) A MI value derived object. // Return: None. // Throws: None. //-- void CMICmnMIResultRecord::Add(const CMICmnMIValue &vMIValue) { m_strResultRecord += ","; m_strResultRecord += vMIValue.GetString(); }