Exploiting a user-defined |operator->()| when the result is a pointer to a primitive type is problematic for the OS/2 VisualAge compiler. Eliminate such uses in the new string facilities. r=waterson
git-svn-id: svn://10.0.0.236/trunk@71249 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -121,17 +121,22 @@ class nsReadingIterator
|
||||
// nsReadingIterator( const nsReadingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsReadingIterator<CharT>& operator=( const nsReadingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
CharT
|
||||
operator*() const
|
||||
{
|
||||
return *mPosition;
|
||||
return *get();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
return mPosition;
|
||||
return get();
|
||||
}
|
||||
|
||||
nsReadingIterator<CharT>&
|
||||
@@ -441,7 +446,7 @@ inline
|
||||
PRBool
|
||||
operator==( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() == rhs.operator->();
|
||||
return lhs.get() == rhs.get();
|
||||
}
|
||||
|
||||
template <class CharT>
|
||||
@@ -449,7 +454,7 @@ inline
|
||||
PRBool
|
||||
operator!=( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() != rhs.operator->();
|
||||
return lhs.get() != rhs.get();
|
||||
}
|
||||
|
||||
|
||||
@@ -576,7 +581,7 @@ basic_nsAReadableString<CharT>::CountChar( CharT c ) const
|
||||
for (;;)
|
||||
{
|
||||
PRInt32 lengthToExamineInThisFragment = iter.size_forward();
|
||||
result += PRUint32(NS_COUNT(iter.operator->(), iter.operator->()+lengthToExamineInThisFragment, c));
|
||||
result += PRUint32(NS_COUNT(iter.get(), iter.get()+lengthToExamineInThisFragment, c));
|
||||
if ( !(lengthToExamine -= lengthToExamineInThisFragment) )
|
||||
return result;
|
||||
iter += lengthToExamineInThisFragment;
|
||||
@@ -1112,7 +1117,7 @@ Compare( const basic_nsAReadableString<CharT>& lhs, const basic_nsAReadableStrin
|
||||
if ( lengthAvailable > lengthToCompare )
|
||||
lengthAvailable = lengthToCompare;
|
||||
|
||||
if ( int result = nsCharTraits<CharT>::compare(leftIter.operator->(), rightIter.operator->(), lengthAvailable) )
|
||||
if ( int result = nsCharTraits<CharT>::compare(leftIter.get(), rightIter.get(), lengthAvailable) )
|
||||
return result;
|
||||
|
||||
if ( !(lengthToCompare -= lengthAvailable) )
|
||||
|
||||
@@ -83,17 +83,22 @@ class nsWritingIterator
|
||||
// nsWritingIterator( const nsWritingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsWritingIterator<CharT>& operator=( const nsWritingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
reference
|
||||
operator*() const
|
||||
{
|
||||
return *mPosition;
|
||||
return *get();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
return mPosition;
|
||||
return get();
|
||||
}
|
||||
|
||||
nsWritingIterator<CharT>&
|
||||
@@ -407,7 +412,7 @@ inline
|
||||
PRBool
|
||||
operator==( const nsWritingIterator<CharT>& lhs, const nsWritingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() == rhs.operator->();
|
||||
return lhs.get() == rhs.get();
|
||||
}
|
||||
|
||||
template <class CharT>
|
||||
@@ -415,7 +420,7 @@ inline
|
||||
PRBool
|
||||
operator!=( const nsWritingIterator<CharT>& lhs, const nsWritingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() != rhs.operator->();
|
||||
return lhs.get() != rhs.get();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -85,15 +85,15 @@ copy_string_backward( InputIterator first, InputIterator last, OutputIterator re
|
||||
{
|
||||
PRUint32 lengthToCopy = PRUint32( NS_MIN(last.size_backward(), result.size_backward()) );
|
||||
if ( first.fragment().mStart == last.fragment().mStart )
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.operator->() - first.operator->()));
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.get() - first.get()));
|
||||
|
||||
NS_ASSERTION(lengthToCopy, "|copy_string_backward| will never terminate");
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// XXX Visual C++ can't stomach 'typename' where it rightfully should
|
||||
nsCharTraits<OutputIterator::value_type>::move(result.operator->()-lengthToCopy, last.operator->()-lengthToCopy, lengthToCopy);
|
||||
nsCharTraits<OutputIterator::value_type>::move(result.get()-lengthToCopy, last.get()-lengthToCopy, lengthToCopy);
|
||||
#else
|
||||
nsCharTraits<typename OutputIterator::value_type>::move(result.operator->()-lengthToCopy, last.operator->()-lengthToCopy, lengthToCopy);
|
||||
nsCharTraits<typename OutputIterator::value_type>::move(result.get()-lengthToCopy, last.get()-lengthToCopy, lengthToCopy);
|
||||
#endif
|
||||
|
||||
last -= PRInt32(lengthToCopy);
|
||||
|
||||
@@ -121,17 +121,22 @@ class nsReadingIterator
|
||||
// nsReadingIterator( const nsReadingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsReadingIterator<CharT>& operator=( const nsReadingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
CharT
|
||||
operator*() const
|
||||
{
|
||||
return *mPosition;
|
||||
return *get();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
return mPosition;
|
||||
return get();
|
||||
}
|
||||
|
||||
nsReadingIterator<CharT>&
|
||||
@@ -441,7 +446,7 @@ inline
|
||||
PRBool
|
||||
operator==( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() == rhs.operator->();
|
||||
return lhs.get() == rhs.get();
|
||||
}
|
||||
|
||||
template <class CharT>
|
||||
@@ -449,7 +454,7 @@ inline
|
||||
PRBool
|
||||
operator!=( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() != rhs.operator->();
|
||||
return lhs.get() != rhs.get();
|
||||
}
|
||||
|
||||
|
||||
@@ -576,7 +581,7 @@ basic_nsAReadableString<CharT>::CountChar( CharT c ) const
|
||||
for (;;)
|
||||
{
|
||||
PRInt32 lengthToExamineInThisFragment = iter.size_forward();
|
||||
result += PRUint32(NS_COUNT(iter.operator->(), iter.operator->()+lengthToExamineInThisFragment, c));
|
||||
result += PRUint32(NS_COUNT(iter.get(), iter.get()+lengthToExamineInThisFragment, c));
|
||||
if ( !(lengthToExamine -= lengthToExamineInThisFragment) )
|
||||
return result;
|
||||
iter += lengthToExamineInThisFragment;
|
||||
@@ -1112,7 +1117,7 @@ Compare( const basic_nsAReadableString<CharT>& lhs, const basic_nsAReadableStrin
|
||||
if ( lengthAvailable > lengthToCompare )
|
||||
lengthAvailable = lengthToCompare;
|
||||
|
||||
if ( int result = nsCharTraits<CharT>::compare(leftIter.operator->(), rightIter.operator->(), lengthAvailable) )
|
||||
if ( int result = nsCharTraits<CharT>::compare(leftIter.get(), rightIter.get(), lengthAvailable) )
|
||||
return result;
|
||||
|
||||
if ( !(lengthToCompare -= lengthAvailable) )
|
||||
|
||||
@@ -83,17 +83,22 @@ class nsWritingIterator
|
||||
// nsWritingIterator( const nsWritingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsWritingIterator<CharT>& operator=( const nsWritingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
reference
|
||||
operator*() const
|
||||
{
|
||||
return *mPosition;
|
||||
return *get();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
return mPosition;
|
||||
return get();
|
||||
}
|
||||
|
||||
nsWritingIterator<CharT>&
|
||||
@@ -407,7 +412,7 @@ inline
|
||||
PRBool
|
||||
operator==( const nsWritingIterator<CharT>& lhs, const nsWritingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() == rhs.operator->();
|
||||
return lhs.get() == rhs.get();
|
||||
}
|
||||
|
||||
template <class CharT>
|
||||
@@ -415,7 +420,7 @@ inline
|
||||
PRBool
|
||||
operator!=( const nsWritingIterator<CharT>& lhs, const nsWritingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() != rhs.operator->();
|
||||
return lhs.get() != rhs.get();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -85,15 +85,15 @@ copy_string_backward( InputIterator first, InputIterator last, OutputIterator re
|
||||
{
|
||||
PRUint32 lengthToCopy = PRUint32( NS_MIN(last.size_backward(), result.size_backward()) );
|
||||
if ( first.fragment().mStart == last.fragment().mStart )
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.operator->() - first.operator->()));
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.get() - first.get()));
|
||||
|
||||
NS_ASSERTION(lengthToCopy, "|copy_string_backward| will never terminate");
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// XXX Visual C++ can't stomach 'typename' where it rightfully should
|
||||
nsCharTraits<OutputIterator::value_type>::move(result.operator->()-lengthToCopy, last.operator->()-lengthToCopy, lengthToCopy);
|
||||
nsCharTraits<OutputIterator::value_type>::move(result.get()-lengthToCopy, last.get()-lengthToCopy, lengthToCopy);
|
||||
#else
|
||||
nsCharTraits<typename OutputIterator::value_type>::move(result.operator->()-lengthToCopy, last.operator->()-lengthToCopy, lengthToCopy);
|
||||
nsCharTraits<typename OutputIterator::value_type>::move(result.get()-lengthToCopy, last.get()-lengthToCopy, lengthToCopy);
|
||||
#endif
|
||||
|
||||
last -= PRInt32(lengthToCopy);
|
||||
|
||||
@@ -121,17 +121,22 @@ class nsReadingIterator
|
||||
// nsReadingIterator( const nsReadingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsReadingIterator<CharT>& operator=( const nsReadingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
CharT
|
||||
operator*() const
|
||||
{
|
||||
return *mPosition;
|
||||
return *get();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
return mPosition;
|
||||
return get();
|
||||
}
|
||||
|
||||
nsReadingIterator<CharT>&
|
||||
@@ -441,7 +446,7 @@ inline
|
||||
PRBool
|
||||
operator==( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() == rhs.operator->();
|
||||
return lhs.get() == rhs.get();
|
||||
}
|
||||
|
||||
template <class CharT>
|
||||
@@ -449,7 +454,7 @@ inline
|
||||
PRBool
|
||||
operator!=( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() != rhs.operator->();
|
||||
return lhs.get() != rhs.get();
|
||||
}
|
||||
|
||||
|
||||
@@ -576,7 +581,7 @@ basic_nsAReadableString<CharT>::CountChar( CharT c ) const
|
||||
for (;;)
|
||||
{
|
||||
PRInt32 lengthToExamineInThisFragment = iter.size_forward();
|
||||
result += PRUint32(NS_COUNT(iter.operator->(), iter.operator->()+lengthToExamineInThisFragment, c));
|
||||
result += PRUint32(NS_COUNT(iter.get(), iter.get()+lengthToExamineInThisFragment, c));
|
||||
if ( !(lengthToExamine -= lengthToExamineInThisFragment) )
|
||||
return result;
|
||||
iter += lengthToExamineInThisFragment;
|
||||
@@ -1112,7 +1117,7 @@ Compare( const basic_nsAReadableString<CharT>& lhs, const basic_nsAReadableStrin
|
||||
if ( lengthAvailable > lengthToCompare )
|
||||
lengthAvailable = lengthToCompare;
|
||||
|
||||
if ( int result = nsCharTraits<CharT>::compare(leftIter.operator->(), rightIter.operator->(), lengthAvailable) )
|
||||
if ( int result = nsCharTraits<CharT>::compare(leftIter.get(), rightIter.get(), lengthAvailable) )
|
||||
return result;
|
||||
|
||||
if ( !(lengthToCompare -= lengthAvailable) )
|
||||
|
||||
@@ -83,17 +83,22 @@ class nsWritingIterator
|
||||
// nsWritingIterator( const nsWritingIterator<CharT>& ); ...use default copy-constructor
|
||||
// nsWritingIterator<CharT>& operator=( const nsWritingIterator<CharT>& ); ...use default copy-assignment operator
|
||||
|
||||
pointer
|
||||
get() const
|
||||
{
|
||||
return mPosition;
|
||||
}
|
||||
|
||||
reference
|
||||
operator*() const
|
||||
{
|
||||
return *mPosition;
|
||||
return *get();
|
||||
}
|
||||
|
||||
pointer
|
||||
operator->() const
|
||||
{
|
||||
return mPosition;
|
||||
return get();
|
||||
}
|
||||
|
||||
nsWritingIterator<CharT>&
|
||||
@@ -407,7 +412,7 @@ inline
|
||||
PRBool
|
||||
operator==( const nsWritingIterator<CharT>& lhs, const nsWritingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() == rhs.operator->();
|
||||
return lhs.get() == rhs.get();
|
||||
}
|
||||
|
||||
template <class CharT>
|
||||
@@ -415,7 +420,7 @@ inline
|
||||
PRBool
|
||||
operator!=( const nsWritingIterator<CharT>& lhs, const nsWritingIterator<CharT>& rhs )
|
||||
{
|
||||
return lhs.operator->() != rhs.operator->();
|
||||
return lhs.get() != rhs.get();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -85,15 +85,15 @@ copy_string_backward( InputIterator first, InputIterator last, OutputIterator re
|
||||
{
|
||||
PRUint32 lengthToCopy = PRUint32( NS_MIN(last.size_backward(), result.size_backward()) );
|
||||
if ( first.fragment().mStart == last.fragment().mStart )
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.operator->() - first.operator->()));
|
||||
lengthToCopy = NS_MIN(lengthToCopy, PRUint32(last.get() - first.get()));
|
||||
|
||||
NS_ASSERTION(lengthToCopy, "|copy_string_backward| will never terminate");
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// XXX Visual C++ can't stomach 'typename' where it rightfully should
|
||||
nsCharTraits<OutputIterator::value_type>::move(result.operator->()-lengthToCopy, last.operator->()-lengthToCopy, lengthToCopy);
|
||||
nsCharTraits<OutputIterator::value_type>::move(result.get()-lengthToCopy, last.get()-lengthToCopy, lengthToCopy);
|
||||
#else
|
||||
nsCharTraits<typename OutputIterator::value_type>::move(result.operator->()-lengthToCopy, last.operator->()-lengthToCopy, lengthToCopy);
|
||||
nsCharTraits<typename OutputIterator::value_type>::move(result.get()-lengthToCopy, last.get()-lengthToCopy, lengthToCopy);
|
||||
#endif
|
||||
|
||||
last -= PRInt32(lengthToCopy);
|
||||
|
||||
Reference in New Issue
Block a user