[haiku-commits] r42353 - haiku/trunk/src/apps/debugger/value/value_nodes

  • From: anevilyak@xxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Fri, 1 Jul 2011 03:54:59 +0200 (CEST)

Author: anevilyak
Date: 2011-07-01 03:54:58 +0200 (Fri, 01 Jul 2011)
New Revision: 42353
Changeset: https://dev.haiku-os.org/changeset/42353

Modified:
   haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
   haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.h
Log:
Cleanups to simplify handling of pointer vs value types.



Modified: haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp
===================================================================
--- haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp       
2011-07-01 00:05:29 UTC (rev 42352)
+++ haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.cpp       
2011-07-01 01:54:58 UTC (rev 42353)
@@ -64,9 +64,7 @@
        {
                ValueLocation* parentLocation = fParent->Location();
                ValueLocation* location;
-               CompoundType* type = 
dynamic_cast<CompoundType*>(fParent->GetType());
-               if (type == NULL)
-                       return B_BAD_VALUE;
+               CompoundType* type = fParent->GetMessageType();
 
                status_t error = type->ResolveDataMemberLocation(fMember,
                        *parentLocation, location);
@@ -93,6 +91,7 @@
        :
        ValueNode(nodeChild),
        fType(type),
+       fMessageType(NULL),
        fMessage()
 {
        fType->AcquireReference();
@@ -154,6 +153,7 @@
                pieceLocation.SetToMemory(address.ToUInt64());
                location->SetPieceAt(0, pieceLocation);
        }
+       fMessageType = baseType;
 
        _location = location;
        _value = NULL;
@@ -300,16 +300,15 @@
        if (!fChildren.IsEmpty())
                return B_OK;
 
-       CompoundType* baseType = dynamic_cast<CompoundType*>(
-               fType->ResolveRawType(false));
-       if (baseType == NULL)
-               return B_OK;
+       if (fMessageType == NULL)
+               return B_BAD_VALUE;
 
+
        DataMember* member = NULL;
        Type* whatType = NULL;
 
-       for (int32 i = 0; i < baseType->CountDataMembers(); i++) {
-               member = baseType->DataMemberAt(i);
+       for (int32 i = 0; i < fMessageType->CountDataMembers(); i++) {
+               member = fMessageType->DataMemberAt(i);
                if (strcmp(member->Name(), "what") == 0) {
                        whatType = member->GetType();
                        break;

Modified: haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.h
===================================================================
--- haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.h 
2011-07-01 00:05:29 UTC (rev 42352)
+++ haiku/trunk/src/apps/debugger/value/value_nodes/BMessageValueNode.h 
2011-07-01 01:54:58 UTC (rev 42353)
@@ -11,6 +11,9 @@
 #include "ValueNode.h"
 
 
+class CompoundType;
+
+
 class BMessageValueNode : public ValueNode {
 public:
                                                                        
BMessageValueNode(ValueNodeChild* nodeChild,
@@ -18,7 +21,6 @@
        virtual                                                 
~BMessageValueNode();
 
        virtual Type*                                   GetType() const;
-
        virtual status_t                                
ResolvedLocationAndValue(
                                                                                
ValueLoader* valueLoader,
                                                                                
ValueLocation*& _location,
@@ -30,6 +32,9 @@
        virtual int32                                   CountChildren() const;
        virtual ValueNodeChild*                 ChildAt(int32 index) const;
 
+                       CompoundType*                   GetMessageType() const
+                                                                               
{ return fMessageType; }
+
 private:
                        class BMessageFieldHeaderNode;
                        class BMessageFieldHeaderNodeChild;
@@ -42,6 +47,7 @@
 
 private:
                        Type*                                   fType;
+                       CompoundType*                   fMessageType;
                        BMessage                                fMessage;
                        ChildNodeList                   fChildren;
 };


Other related posts:

  • » [haiku-commits] r42353 - haiku/trunk/src/apps/debugger/value/value_nodes - anevilyak