[nemiver] Add GDBMIParser::parse_gdbmi_string_result



commit b1ca8a4d27f8bd271871448f1143aca35d6028fc
Author: Dodji Seketeli <dodji redhat com>
Date:   Thu Jul 2 12:45:51 2009 +0200

    Add GDBMIParser::parse_gdbmi_string_result
    
    	* src/dbgengine/nmv-gdbmi-parser.cc,h (GDBMIParser::parse_gdbmi_string_result):
    	New entry point.

 src/dbgengine/nmv-gdbmi-parser.cc |   30 ++++++++++++++++++++++++++++++
 src/dbgengine/nmv-gdbmi-parser.h  |    7 +++++++
 2 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/src/dbgengine/nmv-gdbmi-parser.cc b/src/dbgengine/nmv-gdbmi-parser.cc
index 0c7f134..cde7db4 100644
--- a/src/dbgengine/nmv-gdbmi-parser.cc
+++ b/src/dbgengine/nmv-gdbmi-parser.cc
@@ -1127,6 +1127,36 @@ GDBMIParser::parse_gdbmi_list (UString::size_type a_from,
 }
 
 bool
+GDBMIParser::parse_gdbmi_string_result (UString::size_type a_from,
+                                        UString::size_type &a_to,
+                                        UString &a_variable,
+                                        UString &a_value)
+{
+    LOG_FUNCTION_SCOPE_NORMAL_D (GDBMI_PARSING_DOMAIN);
+    UString::size_type cur = a_from;
+    CHECK_END2 (cur);
+
+    GDBMIResultSafePtr result;
+    if (!parse_gdbmi_result (cur, cur, result) || !result) {
+        LOG_PARSING_ERROR2 (cur);
+        return false;
+    }
+
+    // The value of the RESULT must be a STRING
+    if (!result->value ()
+        || result->value ()->content_type () != GDBMIValue::STRING_TYPE
+        || result->value ()->get_string_content ().empty ()) {
+        LOG_ERROR ("expected a STRING value for the GDBMI variable");
+        return false;
+    }
+
+    a_variable = result->variable ();
+    a_value = result->value ()->get_string_content ();
+    a_to = cur;
+    return true;
+}
+
+bool
 GDBMIParser::parse_stream_record (UString::size_type a_from,
                                   UString::size_type &a_to,
                                   Output::StreamRecord &a_record)
diff --git a/src/dbgengine/nmv-gdbmi-parser.h b/src/dbgengine/nmv-gdbmi-parser.h
index e069129..2eb3b9b 100644
--- a/src/dbgengine/nmv-gdbmi-parser.h
+++ b/src/dbgengine/nmv-gdbmi-parser.h
@@ -424,6 +424,13 @@ public:
                            UString::size_type &a_to,
                            GDBMIListSafePtr &a_list);
 
+    /// Parses a GDB/MI RESULT result=value where value is a string.
+    /// This is a quick helper that uses parse_gdbmi_result.
+    bool parse_gdbmi_string_result (UString::size_type a_from,
+                                    UString::size_type &a_to,
+                                    UString &a_variable,
+                                    UString &a_value);
+
     bool parse_stream_record (UString::size_type a_from,
                               UString::size_type &a_to,
                               Output::StreamRecord &a_record);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]