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

Enrico Granata granata.enrico at gmail.com
Mon Feb 20 15:15:10 PST 2012


Hi,

I have committed your patch with a slight change:

> Author: enrico
> Date: Mon Feb 20 17:06:07 2012
> New Revision: 150997
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=150997&view=rev
> Log:
> committing a patch from Dmitry Vyukov that solves compilation issues with FormatNavigator.h

I have changed the final varargs (…) with a pointer of the correct type for an exact match. Hopefully this still solves your issue with compiling FormatNavigator.h. Having a vararg there seemed like a potential source for future maintenance issues. This looks cleaner and should get the job done anyway :-)

If you still have issues, please let us know.

- Enrico Granata

On Feb 20, 2012, at 5:27 AM, Dmitry Vyukov wrote:

> 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);
> 
>  
> <FormatNavigator.diff>_______________________________________________
> lldb-commits mailing list
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20120220/5fa1accd/attachment.html>


More information about the lldb-commits mailing list