Added support for Sun C++ compiler
git-svn-id: http://pugixml.googlecode.com/svn/trunk@452 99668b35-9821-0410-8761-19e4c4f06640
This commit is contained in:
parent
1a1cc6f7f4
commit
cd9bc5fa83
@ -4516,6 +4516,22 @@ namespace std
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC)
|
||||
namespace std
|
||||
{
|
||||
// Workarounds for (non-standard) iterator category detection
|
||||
std::bidirectional_iterator_tag __iterator_category(const pugi::xml_node_iterator&)
|
||||
{
|
||||
return std::bidirectional_iterator_tag();
|
||||
}
|
||||
|
||||
std::bidirectional_iterator_tag __iterator_category(const pugi::xml_attribute_iterator&)
|
||||
{
|
||||
return std::bidirectional_iterator_tag();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Copyright (c) 2006-2010 Arseny Kapoulkine
|
||||
*
|
||||
|
||||
@ -21,12 +21,21 @@ namespace std
|
||||
{
|
||||
struct bidirectional_iterator_tag;
|
||||
|
||||
#ifdef __SUNPRO_CC
|
||||
// Sun C++ compiler has a bug which forces template argument names in forward declarations to be the same as in actual definitions
|
||||
template <class _T> class allocator;
|
||||
template <class _charT> struct char_traits;
|
||||
template <class _charT, class _Traits> class basic_istream;
|
||||
template <class _charT, class _Traits> class basic_ostream;
|
||||
template <class _charT, class _Traits, class _Allocator> class basic_string;
|
||||
#else
|
||||
// Borland C++ compiler has a bug which forces template argument names in forward declarations to be the same as in actual definitions
|
||||
template <class _Ty> class allocator;
|
||||
template <class _Ty> struct char_traits;
|
||||
template <class _Elem, class _Traits> class basic_istream;
|
||||
template <class _Elem, class _Traits> class basic_ostream;
|
||||
template <class _Elem, class _Traits, class _Ax> class basic_string;
|
||||
#endif
|
||||
|
||||
// Digital Mars compiler has a bug which requires a forward declaration for explicit instantiation (otherwise type selection is messed up later, producing link errors)
|
||||
// Also note that we have to declare char_traits as a class here, since it's defined that way
|
||||
@ -2330,6 +2339,15 @@ namespace std
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(PUGIXML_NO_STL) && defined(__SUNPRO_CC)
|
||||
namespace std
|
||||
{
|
||||
// Workarounds for (non-standard) iterator category detection
|
||||
std::bidirectional_iterator_tag __iterator_category(const pugi::xml_node_iterator&);
|
||||
std::bidirectional_iterator_tag __iterator_category(const pugi::xml_attribute_iterator&);
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
@ -768,7 +768,7 @@ namespace pugi
|
||||
{
|
||||
if (begin == end) return;
|
||||
|
||||
size_t count = std::distance(begin, end);
|
||||
size_t count = end - begin;
|
||||
size_t size = m_end - m_begin;
|
||||
size_t capacity = m_eos - m_begin;
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user