fixed macro-based comparison operators to help with our type-unification problems

git-svn-id: svn://10.0.0.236/trunk@69586 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
scc%netscape.com
2000-05-13 21:39:37 +00:00
parent c8c77763e3
commit f5ccd18c8c
13 changed files with 133 additions and 112 deletions

View File

@@ -794,11 +794,7 @@ private:
};
#if 0//def NEW_STRING_APIS
#ifndef STASTANDALONE_STRING_TESTS
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const nsCString&, const nsCString&);
#endif
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const nsCString&, const char*)
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const char*, const nsCString&)
NS_DEF_STRING_COMPARISON_OPERATORS(nsCString, char)
#endif
extern NS_COM int fputs(const nsCString& aString, FILE* out);
@@ -862,8 +858,7 @@ public:
};
#if 0//def NEW_STRING_APIS
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const nsCAutoString&, const char*)
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const char*, const nsCAutoString&)
NS_DEF_STRING_COMPARISON_OPERATORS(nsCAutoString, char)
#endif

View File

@@ -888,8 +888,7 @@ private:
};
#if 0//def NEW_STRING_APIS
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const nsString&, const PRUnichar*)
NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(const PRUnichar*, const nsString&)
NS_DEF_STRING_COMPARISON_OPERATORS(nsString, PRUnichar)
#endif
extern NS_COM int fputs(const nsString& aString, FILE* out);

View File

@@ -447,36 +447,49 @@ operator!=( const nsReadingIterator<CharT>& lhs, const nsReadingIterator<CharT>&
}
#endif
#define NS_DEF_1_STRING_COMPARISON_OPERATOR(comp, T1, T2) \
inline \
PRBool \
operator comp( T1 lhs, T2 rhs ) \
{ \
return PRBool(Compare(lhs, rhs) comp 0); \
#define NS_DEF_1_STRING_PTR_COMPARISON_OPERATOR(comp, _StringT, _CharT) \
inline \
PRBool \
operator comp( const _StringT& lhs, const _CharT* rhs ) \
{ \
return PRBool(Compare(NS_READABLE_CAST(_CharT, lhs), rhs) comp 0); \
}
#define NS_DEF_STRING_COMPARISON_OPERATORS(T1, T2) \
template <class CharT> NS_DEF_1_STRING_COMPARISON_OPERATOR(!=, T1, T2) \
template <class CharT> NS_DEF_1_STRING_COMPARISON_OPERATOR(< , T1, T2) \
template <class CharT> NS_DEF_1_STRING_COMPARISON_OPERATOR(<=, T1, T2) \
template <class CharT> NS_DEF_1_STRING_COMPARISON_OPERATOR(==, T1, T2) \
template <class CharT> NS_DEF_1_STRING_COMPARISON_OPERATOR(>=, T1, T2) \
template <class CharT> NS_DEF_1_STRING_COMPARISON_OPERATOR(> , T1, T2)
#define NS_DEF_1_PTR_STRING_COMPARISON_OPERATOR(comp, _StringT, _CharT) \
inline \
PRBool \
operator comp( const _CharT* lhs, const _StringT& rhs ) \
{ \
return PRBool(Compare(lhs, NS_READABLE_CAST(_CharT, rhs)) comp 0); \
}
#define NS_DEF_NON_TEMPLATE_STRING_COMPARISON_OPERATORS(T1, T2) \
NS_DEF_1_STRING_COMPARISON_OPERATOR(!=, T1, T2) \
NS_DEF_1_STRING_COMPARISON_OPERATOR(< , T1, T2) \
NS_DEF_1_STRING_COMPARISON_OPERATOR(<=, T1, T2) \
NS_DEF_1_STRING_COMPARISON_OPERATOR(==, T1, T2) \
NS_DEF_1_STRING_COMPARISON_OPERATOR(>=, T1, T2) \
NS_DEF_1_STRING_COMPARISON_OPERATOR(> , T1, T2)
#define NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(comp, _StringT, _CharT) \
template <class _CharT> NS_DEF_1_STRING_PTR_COMPARISON_OPERATOR(comp, _StringT, _CharT) \
template <class _CharT> NS_DEF_1_PTR_STRING_COMPARISON_OPERATOR(comp, _StringT, _CharT)
#define NS_DEF_STRING_COMPARISONS(T) \
NS_DEF_STRING_COMPARISON_OPERATORS(const T&, const CharT*) \
NS_DEF_STRING_COMPARISON_OPERATORS(const CharT*, const T&)
#define NS_DEF_2_STRING_COMPARISON_OPERATORS(comp, _StringT, _CharT) \
NS_DEF_1_STRING_PTR_COMPARISON_OPERATOR(comp, _StringT, _CharT) \
NS_DEF_1_PTR_STRING_COMPARISON_OPERATOR(comp, _StringT, _CharT)
#define NS_DEF_TEMPLATE_STRING_COMPARISON_OPERATORS(_StringT, _CharT) \
NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(!=, _StringT, _CharT) \
NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(< , _StringT, _CharT) \
NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(<=, _StringT, _CharT) \
NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(==, _StringT, _CharT) \
NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(>=, _StringT, _CharT) \
NS_DEF_2_TEMPLATE_STRING_COMPARISON_OPERATORS(> , _StringT, _CharT)
#define NS_DEF_STRING_COMPARISON_OPERATORS(_StringT, _CharT) \
NS_DEF_2_STRING_COMPARISON_OPERATORS(!=, _StringT, _CharT) \
NS_DEF_2_STRING_COMPARISON_OPERATORS(< , _StringT, _CharT) \
NS_DEF_2_STRING_COMPARISON_OPERATORS(<=, _StringT, _CharT) \
NS_DEF_2_STRING_COMPARISON_OPERATORS(==, _StringT, _CharT) \
NS_DEF_2_STRING_COMPARISON_OPERATORS(>=, _StringT, _CharT) \
NS_DEF_2_STRING_COMPARISON_OPERATORS(> , _StringT, _CharT)
NS_DEF_STRING_COMPARISONS(basic_nsAReadableString<CharT>)
NS_DEF_TEMPLATE_STRING_COMPARISON_OPERATORS(basic_nsAReadableString<CharT>, CharT)
@@ -660,7 +673,7 @@ class basic_nsLiteralString
const CharT* mEnd;
};
NS_DEF_STRING_COMPARISONS(basic_nsLiteralString<CharT>)
NS_DEF_TEMPLATE_STRING_COMPARISON_OPERATORS(basic_nsLiteralString<CharT>, CharT)
template <class CharT>
const CharT*
@@ -858,7 +871,7 @@ class nsPromiseConcatenation
PRUint32 mFragmentIdentifierMask;
};
NS_DEF_STRING_COMPARISONS(nsPromiseConcatenation<CharT>)
NS_DEF_TEMPLATE_STRING_COMPARISON_OPERATORS(nsPromiseConcatenation<CharT>, CharT)
template <class CharT>
PRUint32
@@ -997,7 +1010,7 @@ class nsPromiseSubstring
PRUint32 mLength;
};
NS_DEF_STRING_COMPARISONS(nsPromiseSubstring<CharT>)
NS_DEF_TEMPLATE_STRING_COMPARISON_OPERATORS(nsPromiseSubstring<CharT>, CharT)
template <class CharT>
PRUint32

View File

@@ -82,7 +82,7 @@ class basic_nsSharedString
size_t mLength;
};
NS_DEF_STRING_COMPARISONS(basic_nsSharedString<CharT>)
NS_DEF_TEMPLATE_STRING_COMPARISON_OPERATORS(basic_nsSharedString<CharT>, CharT)
template <class CharT>
const CharT*