[Lldb-commits] Fix for include/lldb/Core/FormatNavigator.h

Dmitry Vyukov dvyukov at google.com
Mon Feb 20 05:27:27 PST 2012


On Mon, Feb 20, 2012 at 5:10 PM, Dmitry Vyukov <dvyukov at google.com> wrote:

> Hi,
>
> I would like to ask you to review and land this patch. Currently I get the
> following error messages:
>
> lldb/source/API/../../include/lldb/Core/FormatNavigator.h: In member
> function ‘bool lldb_private::FormatNavigator<KeyType,
> ValueType>::GetExact(lldb_private::ConstString, typename
> lldb_private::FormatMap<KeyType, ValueType>::MapType::mapped_type&) [with
> KeyType = std::tr1::shared_ptr<lldb_private::RegularExpression>, ValueType
> = lldb_private::TypeFilterImpl]’:
> SBTypeCategory.cpp:159:   instantiated from here
> lldb/source/API/../../include/lldb/Core/FormatNavigator.h:318: error: call
> of overloaded ‘GetExact_Impl(lldb_private::ConstString&,
> std::tr1::shared_ptr<lldb_private::SyntheticChildren>&,
> lldb_private::FormatNavigator<std::tr1::shared_ptr<lldb_private::RegularExpression>,
> lldb_private::TypeFilterImpl>::Types<std::tr1::shared_ptr<lldb_private::RegularExpression>,
> lldb_private::TypeFilterImpl>)’ is ambiguous
> lldb/source/API/../../include/lldb/Core/FormatNavigator.h:411: note:
> candidates are: bool lldb_private::FormatNavigator<KeyType,
> ValueType>::GetExact_Impl(lldb_private::ConstString, typename
> lldb_private::FormatMap<KeyType, ValueType>::MapType::mapped_type&,
> lldb_private::FormatNavigator<KeyType, ValueType>::Types<K, V>) [with K =
> std::tr1::shared_ptr<lldb_private::RegularExpression>, V =
> lldb_private::TypeFilterImpl, KeyType =
> std::tr1::shared_ptr<lldb_private::RegularExpression>, ValueType =
> lldb_private::TypeFilterImpl]
> lldb/source/API/../../include/lldb/Core/FormatNavigator.h:458: note:
>           bool lldb_private::FormatNavigator<KeyType,
> ValueType>::GetExact_Impl(lldb_private::ConstString, typename
> lldb_private::FormatMap<KeyType, ValueType>::MapType::mapped_type&,
> lldb_private::FormatNavigator<KeyType,
> ValueType>::Types<std::tr1::shared_ptr<lldb_private::RegularExpression>,
> V>) [with V = lldb_private::TypeFilterImpl, KeyType =
> std::tr1::shared_ptr<lldb_private::RegularExpression>, ValueType =
> lldb_private::TypeFilterImpl]
>



Sorry, I see that you are using NULL's instead of 0's. Here is an updated
patch:


Index: include/lldb/Core/FormatNavigator.h
===================================================================
--- include/lldb/Core/FormatNavigator.h (revision 150956)
+++ include/lldb/Core/FormatNavigator.h (working copy)
@@ -254,9 +254,6 @@
 protected:
     typedef FormatMap<KeyType,ValueType> BackEndType;

-    template<typename, typename>
-    struct Types { };
-
 public:
     typedef typename BackEndType::MapType MapType;
     typedef typename MapType::iterator MapIterator;
@@ -279,13 +276,13 @@
     void
     Add (const MapKeyType &type, const MapValueType& entry)
     {
-        Add_Impl(type, entry, Types<KeyType,ValueType>());
+        Add_Impl(type, entry, (KeyType*)NULL);
     }

     bool
     Delete (ConstString type)
     {
-        return Delete_Impl(type, Types<KeyType, ValueType>());
+        return Delete_Impl(type, (KeyType*)NULL);
     }

     bool
@@ -309,13 +306,13 @@
     bool
     Get (ConstString type, MapValueType& entry)
     {
-        return Get_Impl(type, entry, Types<KeyType,ValueType>());
+        return Get_Impl(type, entry, (KeyType*)NULL);
     }

     bool
     GetExact (ConstString type, MapValueType& entry)
     {
-        return GetExact_Impl(type, entry, Types<KeyType,ValueType>());
+        return GetExact_Impl(type, entry, (KeyType*)NULL);
     }

     MapValueType
@@ -327,7 +324,7 @@
     lldb::TypeNameSpecifierImplSP
     GetTypeNameSpecifierAtIndex (uint32_t index)
     {
-        return GetTypeNameSpecifierAtIndex_Impl(index,
Types<KeyType,ValueType>());
+        return GetTypeNameSpecifierAtIndex_Impl(index, (KeyType*)NULL);
     }

     void
@@ -358,29 +355,25 @@

     ConstString m_id_cs;

-    template<typename K, typename V>
     void
-    Add_Impl (const MapKeyType &type, const MapValueType& entry,
Types<K,V>)
+    Add_Impl (const MapKeyType &type, const MapValueType& entry, ...)
     {
        m_format_map.Add(type,entry);
     }

-    template<typename V>
-    void Add_Impl (const ConstString &type, const MapValueType& entry,
Types<ConstString,V>)
+    void Add_Impl (const ConstString &type, const MapValueType& entry,
ConstString *dummy)
     {
        m_format_map.Add(GetValidTypeName_Impl(type), entry);
     }

-    template<typename K, typename V>
     bool
-    Delete_Impl (ConstString type, Types<K,V>)
+    Delete_Impl (ConstString type, ...)
     {
        return m_format_map.Delete(type);
     }

-    template<typename V>
     bool
-    Delete_Impl (ConstString type, Types<lldb::RegularExpressionSP,V>)
+    Delete_Impl (ConstString type, lldb::RegularExpressionSP *dummy)
     {
        Mutex& x_mutex = m_format_map.mutex();
         lldb_private::Mutex::Locker locker(x_mutex);
@@ -399,23 +392,20 @@
        return false;
     }

-    template<typename K, typename V>
     bool
-    Get_Impl (ConstString type, MapValueType& entry, Types<K,V>)
+    Get_Impl (ConstString type, MapValueType& entry, ...)
     {
        return m_format_map.Get(type, entry);
     }

-    template<typename K, typename V>
     bool
-    GetExact_Impl (ConstString type, MapValueType& entry, Types<K,V> dummy)
+    GetExact_Impl (ConstString type, MapValueType& entry, ...)
     {
-        return Get_Impl(type,entry,dummy);
+        return Get_Impl(type,entry, (KeyType*)0);
     }

-    template<typename K, typename V>
     lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierAtIndex_Impl (uint32_t index, Types<K,V> dummy)
+    GetTypeNameSpecifierAtIndex_Impl (uint32_t index, ...)
     {
         ConstString key = m_format_map.GetKeyAtIndex(index);
         if (key)
@@ -425,9 +415,8 @@
             return lldb::TypeNameSpecifierImplSP();
     }

-    template<typename V>
     lldb::TypeNameSpecifierImplSP
-    GetTypeNameSpecifierAtIndex_Impl (uint32_t index,
Types<lldb::RegularExpressionSP,V> dummy)
+    GetTypeNameSpecifierAtIndex_Impl (uint32_t index,
lldb::RegularExpressionSP *dummy)
     {
         lldb::RegularExpressionSP regex =
m_format_map.GetKeyAtIndex(index);
         if (regex.get() == NULL)
@@ -436,9 +425,8 @@

true));
     }

-    template<typename V>
     bool
-    Get_Impl (ConstString key, MapValueType& value,
Types<lldb::RegularExpressionSP,V>)
+    Get_Impl (ConstString key, MapValueType& value,
lldb::RegularExpressionSP *dummy)
     {
        Mutex& x_mutex = m_format_map.mutex();
        lldb_private::Mutex::Locker locker(x_mutex);
@@ -455,9 +443,8 @@
        return false;
     }

-    template<typename V>
     bool
-    GetExact_Impl (ConstString key, MapValueType& value,
Types<lldb::RegularExpressionSP,V>)
+    GetExact_Impl (ConstString key, MapValueType& value,
lldb::RegularExpressionSP *dummy)
     {
         Mutex& x_mutex = m_format_map.mutex();
         lldb_private::Mutex::Locker locker(x_mutex);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20120220/03f0fbb9/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FormatNavigator.diff
Type: application/octet-stream
Size: 4911 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20120220/03f0fbb9/attachment.obj>


More information about the lldb-commits mailing list