From 13b55a5fda9df81d74ef952d44ec41d6e51be839 Mon Sep 17 00:00:00 2001 From: "scc%mozilla.org" Date: Sat, 2 Sep 2000 06:03:50 +0000 Subject: [PATCH] time to add that specialization of |nsCharSourceTraits|, not having it is probably hosing speedracer, r=waldemar --- string/public/nsCharTraits.h | 45 +++++++++++++++++++++++++++++- xpcom/ds/nsCharTraits.h | 45 +++++++++++++++++++++++++++++- xpcom/string/public/nsCharTraits.h | 45 +++++++++++++++++++++++++++++- 3 files changed, 132 insertions(+), 3 deletions(-) diff --git a/string/public/nsCharTraits.h b/string/public/nsCharTraits.h index 269cdaa77249..56678500da95 100644 --- a/string/public/nsCharTraits.h +++ b/string/public/nsCharTraits.h @@ -596,7 +596,50 @@ struct nsCharSourceTraits } }; -// Add specialization for |PRUnichar| only if it is needed + +NS_SPECIALIZE_TEMPLATE +struct nsCharSourceTraits + { + typedef ptrdiff_t difference_type; + +#if 0 + static + PRUint32 + distance( const PRUnichar* first, const PRUnichar* last ) + { + return PRUint32(last-first); + } +#endif + + static + PRUint32 + readable_distance( const PRUnichar* s ) + { + return PRUint32(nsCharTraits::length(s)); +// return numeric_limits::max(); + } + + static + PRUint32 + readable_distance( const PRUnichar* first, const PRUnichar* last ) + { + return PRUint32(last-first); + } + + static + const PRUnichar* + read( const PRUnichar* s ) + { + return s; + } + + static + void + advance( PRUnichar*& s, difference_type n ) + { + s += n; + } + }; #endif diff --git a/xpcom/ds/nsCharTraits.h b/xpcom/ds/nsCharTraits.h index 269cdaa77249..56678500da95 100644 --- a/xpcom/ds/nsCharTraits.h +++ b/xpcom/ds/nsCharTraits.h @@ -596,7 +596,50 @@ struct nsCharSourceTraits } }; -// Add specialization for |PRUnichar| only if it is needed + +NS_SPECIALIZE_TEMPLATE +struct nsCharSourceTraits + { + typedef ptrdiff_t difference_type; + +#if 0 + static + PRUint32 + distance( const PRUnichar* first, const PRUnichar* last ) + { + return PRUint32(last-first); + } +#endif + + static + PRUint32 + readable_distance( const PRUnichar* s ) + { + return PRUint32(nsCharTraits::length(s)); +// return numeric_limits::max(); + } + + static + PRUint32 + readable_distance( const PRUnichar* first, const PRUnichar* last ) + { + return PRUint32(last-first); + } + + static + const PRUnichar* + read( const PRUnichar* s ) + { + return s; + } + + static + void + advance( PRUnichar*& s, difference_type n ) + { + s += n; + } + }; #endif diff --git a/xpcom/string/public/nsCharTraits.h b/xpcom/string/public/nsCharTraits.h index 269cdaa77249..56678500da95 100644 --- a/xpcom/string/public/nsCharTraits.h +++ b/xpcom/string/public/nsCharTraits.h @@ -596,7 +596,50 @@ struct nsCharSourceTraits } }; -// Add specialization for |PRUnichar| only if it is needed + +NS_SPECIALIZE_TEMPLATE +struct nsCharSourceTraits + { + typedef ptrdiff_t difference_type; + +#if 0 + static + PRUint32 + distance( const PRUnichar* first, const PRUnichar* last ) + { + return PRUint32(last-first); + } +#endif + + static + PRUint32 + readable_distance( const PRUnichar* s ) + { + return PRUint32(nsCharTraits::length(s)); +// return numeric_limits::max(); + } + + static + PRUint32 + readable_distance( const PRUnichar* first, const PRUnichar* last ) + { + return PRUint32(last-first); + } + + static + const PRUnichar* + read( const PRUnichar* s ) + { + return s; + } + + static + void + advance( PRUnichar*& s, difference_type n ) + { + s += n; + } + }; #endif