| //===-- Language.h ----------------------------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef liblldb_Language_h_ |
| #define liblldb_Language_h_ |
| |
| #include "lldb/lldb-private.h" |
| |
| namespace lldb_private { |
| |
| //---------------------------------------------------------------------- |
| /// @class Language Language.h "lldb/Core/Language.h" |
| /// @brief Encapsulates the programming language for an lldb object. |
| /// |
| /// Languages are represented by an enumeration value. |
| /// |
| /// The enumeration values used when describing the programming language |
| /// are the same values as the latest DWARF specification. |
| //---------------------------------------------------------------------- |
| class Language |
| { |
| public: |
| //------------------------------------------------------------------ |
| /// Construct with optional language enumeration. |
| //------------------------------------------------------------------ |
| Language(lldb::LanguageType language = lldb::eLanguageTypeUnknown); |
| |
| //------------------------------------------------------------------ |
| /// Destructor. |
| /// |
| /// The destructor is virtual in case this class is subclassed. |
| //------------------------------------------------------------------ |
| virtual |
| ~Language(); |
| |
| //------------------------------------------------------------------ |
| /// Get the language value as a NULL termianted C string. |
| /// |
| /// @return |
| /// The C string representation of the language. The returned |
| /// string does not need to be freed as it comes from constant |
| /// strings. NULL can be returned when the language is set to |
| /// a value that doesn't match of of the lldb::LanguageType |
| /// enumerations. |
| //------------------------------------------------------------------ |
| const char * |
| AsCString (lldb::DescriptionLevel level = lldb::eDescriptionLevelBrief) const; |
| |
| void |
| Clear(); |
| |
| void |
| GetDescription (Stream *s, lldb::DescriptionLevel level) const; |
| |
| //------------------------------------------------------------------ |
| /// Dump the language value to the stream \a s. |
| /// |
| /// @param[in] s |
| /// The stream to which to dump the language description. |
| //------------------------------------------------------------------ |
| void |
| Dump(Stream *s) const; |
| |
| //------------------------------------------------------------------ |
| /// Get accessor for the language. |
| /// |
| /// @return |
| /// The enumeration value that describes the programming |
| /// language that an object is associated with. |
| //------------------------------------------------------------------ |
| lldb::LanguageType |
| GetLanguage() const; |
| |
| //------------------------------------------------------------------ |
| /// Set accessor for the language. |
| /// |
| /// @param[in] language |
| /// The new enumeration value that describes the programming |
| /// language that an object is associated with. |
| //------------------------------------------------------------------ |
| void |
| SetLanguage(lldb::LanguageType language); |
| |
| //------------------------------------------------------------------ |
| /// Set accessor for the language. |
| /// |
| /// @param[in] language_cstr |
| /// The language name as a C string. |
| //------------------------------------------------------------------ |
| bool |
| SetLanguageFromCString(const char *language_cstr); |
| |
| |
| protected: |
| //------------------------------------------------------------------ |
| // Member variables |
| //------------------------------------------------------------------ |
| lldb::LanguageType m_language; ///< The programming language enumeration value. |
| ///< The enumeration values are the same as the |
| ///< latest DWARF specification. |
| }; |
| |
| //-------------------------------------------------------------- |
| /// Stream the language enumeration as a string object to a |
| /// Stream. |
| //-------------------------------------------------------------- |
| Stream& operator << (Stream& s, const Language& language); |
| |
| } // namespace lldb_private |
| |
| #endif // liblldb_Language_h_ |