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

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


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]



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*)0);
     }

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

     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*)0);
     }

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

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

     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/9f3cd3dc/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: FormatNavigator.diff
Type: application/octet-stream
Size: 4896 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20120220/9f3cd3dc/attachment.obj>


More information about the lldb-commits mailing list