зеркало из https://github.com/mozilla/pjs.git
Use typedefs throughout the string code. r=dbaron, sr=scc
This commit is contained in:
Родитель
137d680fb3
Коммит
2d7e8254e7
|
@ -35,16 +35,16 @@ class NS_COM nsAFlatString
|
|||
{
|
||||
public:
|
||||
// don't really want this to be virtual, and won't after |obsolete_nsString| is really dead
|
||||
virtual const PRUnichar* get() const;
|
||||
PRUnichar operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
PRUnichar CharAt( PRUint32 ) const;
|
||||
virtual const char_type* get() const;
|
||||
char_type operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
char_type CharAt( PRUint32 ) const;
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
// protected: // can't hide these (yet), since I call them from forwarding routines in |nsPromiseFlatString|
|
||||
public:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual PRUnichar* GetWritableFragment( nsWritableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 );
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 );
|
||||
};
|
||||
|
||||
class NS_COM nsAFlatCString
|
||||
|
@ -52,20 +52,20 @@ class NS_COM nsAFlatCString
|
|||
{
|
||||
public:
|
||||
// don't really want this to be virtual, and won't after |obsolete_nsCString| is really dead
|
||||
virtual const char* get() const;
|
||||
char operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
char CharAt( PRUint32 ) const;
|
||||
virtual const char_type* get() const;
|
||||
char_type operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
char_type CharAt( PRUint32 ) const;
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
// protected: // can't hide these (yet), since I call them from forwarding routines in |nsPromiseFlatCString|
|
||||
public:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char* GetWritableFragment( nsWritableFragment<char>&, nsFragmentRequest, PRUint32 );
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 );
|
||||
};
|
||||
|
||||
inline
|
||||
PRUnichar
|
||||
nsAFlatString::char_type
|
||||
nsAFlatString::CharAt( PRUint32 i ) const
|
||||
{
|
||||
NS_ASSERTION(i<Length(), "|CharAt| out-of-range");
|
||||
|
@ -73,7 +73,7 @@ nsAFlatString::CharAt( PRUint32 i ) const
|
|||
}
|
||||
|
||||
inline
|
||||
char
|
||||
nsAFlatCString::char_type
|
||||
nsAFlatCString::CharAt( PRUint32 i ) const
|
||||
{
|
||||
NS_ASSERTION(i<Length(), "|CharAt| out-of-range");
|
||||
|
|
|
@ -48,30 +48,38 @@
|
|||
class NS_COM nsAString
|
||||
{
|
||||
public:
|
||||
typedef nsAString self_type;
|
||||
typedef nsAPromiseString promise_type;
|
||||
typedef PRUnichar char_type;
|
||||
typedef char incompatible_char_type;
|
||||
|
||||
typedef nsBufferHandle<char_type> buffer_handle_type;
|
||||
typedef nsConstBufferHandle<char_type> const_buffer_handle_type;
|
||||
typedef nsSharedBufferHandle<char_type> shared_buffer_handle_type;
|
||||
|
||||
typedef nsReadableFragment<char_type> const_fragment_type;
|
||||
typedef nsWritableFragment<char_type> fragment_type;
|
||||
|
||||
typedef nsAString self_type;
|
||||
typedef nsAString abstract_string_type;
|
||||
|
||||
typedef nsReadingIterator<char_type> const_iterator;
|
||||
typedef nsWritingIterator<char_type> iterator;
|
||||
|
||||
typedef nsAPromiseString promise_type;
|
||||
|
||||
typedef PRUint32 size_type;
|
||||
typedef PRUint32 index_type;
|
||||
|
||||
|
||||
|
||||
|
||||
public:
|
||||
// nsAString(); // auto-generated default constructor OK (we're abstract anyway)
|
||||
// nsAString( const self_type& ); // auto-generated copy-constructor OK (again, only because we're abstract)
|
||||
virtual ~nsAString() { } // ...yes, I expect to be sub-classed
|
||||
|
||||
|
||||
virtual PRUint32 GetImplementationFlags() const;
|
||||
virtual const nsBufferHandle<char_type>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char_type>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
/**
|
||||
* |GetBufferHandle()| will return either |0|, or a reasonable pointer.
|
||||
|
@ -285,23 +293,32 @@ class NS_COM nsAString
|
|||
|
||||
// protected:
|
||||
public:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual PRBool IsDependentOn( const self_type& aString ) const { return &aString == this; }
|
||||
};
|
||||
|
||||
class NS_COM nsACString
|
||||
{
|
||||
public:
|
||||
typedef nsACString self_type;
|
||||
typedef nsAPromiseCString promise_type;
|
||||
typedef char char_type;
|
||||
typedef PRUnichar incompatible_char_type;
|
||||
|
||||
typedef nsBufferHandle<char_type> buffer_handle_type;
|
||||
typedef nsConstBufferHandle<char_type> const_buffer_handle_type;
|
||||
typedef nsSharedBufferHandle<char_type> shared_buffer_handle_type;
|
||||
|
||||
typedef nsReadableFragment<char_type> const_fragment_type;
|
||||
typedef nsWritableFragment<char_type> fragment_type;
|
||||
|
||||
typedef nsACString self_type;
|
||||
typedef nsACString abstract_string_type;
|
||||
|
||||
typedef nsReadingIterator<char_type> const_iterator;
|
||||
typedef nsWritingIterator<char_type> iterator;
|
||||
|
||||
typedef nsAPromiseCString promise_type;
|
||||
|
||||
typedef PRUint32 size_type;
|
||||
typedef PRUint32 index_type;
|
||||
|
||||
|
@ -314,9 +331,9 @@ class NS_COM nsACString
|
|||
|
||||
|
||||
virtual PRUint32 GetImplementationFlags() const;
|
||||
virtual const nsBufferHandle<char_type>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char_type>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
/**
|
||||
* |GetBufferHandle()| will return either |0|, or a reasonable pointer.
|
||||
|
@ -530,8 +547,8 @@ class NS_COM nsACString
|
|||
|
||||
// protected:
|
||||
public:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual PRBool IsDependentOn( const self_type& aString ) const { return &aString == this; }
|
||||
};
|
||||
|
||||
|
@ -631,21 +648,23 @@ nsAString::EndWriting( iterator& aResult )
|
|||
class NS_COM nsStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const = 0;
|
||||
typedef nsAString::char_type char_type;
|
||||
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const = 0;
|
||||
};
|
||||
|
||||
class NS_COM nsDefaultStringComparator
|
||||
: public nsStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
class NS_COM nsCaseInsensitiveStringComparator
|
||||
: public nsStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
NS_COM int Compare( const nsAString& lhs, const nsAString& rhs, const nsStringComparator& = nsDefaultStringComparator() );
|
||||
|
@ -760,21 +779,23 @@ nsACString::EndWriting( iterator& aResult )
|
|||
class NS_COM nsCStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const char*, const char*, PRUint32 aLength ) const = 0;
|
||||
typedef nsACString::char_type char_type;
|
||||
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const = 0;
|
||||
};
|
||||
|
||||
class NS_COM nsDefaultCStringComparator
|
||||
: public nsCStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const char*, const char*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
class NS_COM nsCaseInsensitiveCStringComparator
|
||||
: public nsCStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const char*, const char*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
NS_COM int Compare( const nsACString& lhs, const nsACString& rhs, const nsCStringComparator& = nsDefaultCStringComparator() );
|
||||
|
|
|
@ -52,49 +52,46 @@ class NS_COM nsDependentConcatenation
|
|||
{
|
||||
public:
|
||||
typedef nsDependentConcatenation self_type;
|
||||
typedef PRUnichar char_type;
|
||||
typedef nsAString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
|
||||
protected:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
enum { kLeftString, kRightString };
|
||||
enum { kFirstString, kLastString };
|
||||
|
||||
int
|
||||
GetCurrentStringFromFragment( const nsReadableFragment<char_type>& aFragment ) const
|
||||
GetCurrentStringFromFragment( const const_fragment_type& aFragment ) const
|
||||
{
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kRightString : kLeftString;
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kLastString : kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetLeftStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetFirstStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() & ~mFragmentIdentifierMask);
|
||||
return kLeftString;
|
||||
return kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetRightStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetLastStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() | mFragmentIdentifierMask);
|
||||
return kRightString;
|
||||
return kLastString;
|
||||
}
|
||||
|
||||
public:
|
||||
nsDependentConcatenation( const string_type& aLeftString, const string_type& aRightString, PRUint32 aMask = 1 )
|
||||
nsDependentConcatenation( const abstract_string_type& aFirstString, const abstract_string_type& aLastString, PRUint32 aMask = 1 )
|
||||
: mFragmentIdentifierMask(aMask)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
nsDependentConcatenation( const self_type& aLeftString, const string_type& aRightString )
|
||||
: mFragmentIdentifierMask(aLeftString.mFragmentIdentifierMask<<1)
|
||||
nsDependentConcatenation( const self_type& aFirstString, const abstract_string_type& aLastString )
|
||||
: mFragmentIdentifierMask(aFirstString.mFragmentIdentifierMask<<1)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
// nsDependentConcatenation( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
|
@ -107,10 +104,10 @@ class NS_COM nsDependentConcatenation
|
|||
public:
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const string_type& ) const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const abstract_string_type& ) const;
|
||||
|
||||
// const self_type operator+( const string_type& rhs ) const;
|
||||
// const self_type operator+( const abstract_string_type& rhs ) const;
|
||||
|
||||
PRUint32 GetFragmentIdentifierMask() const { return mFragmentIdentifierMask; }
|
||||
|
||||
|
@ -120,7 +117,7 @@ class NS_COM nsDependentConcatenation
|
|||
// which would break the algorithm for distributing bits in the fragment identifier
|
||||
|
||||
private:
|
||||
const string_type* mStrings[2];
|
||||
const abstract_string_type* mStrings[2];
|
||||
PRUint32 mFragmentIdentifierMask;
|
||||
};
|
||||
|
||||
|
@ -129,49 +126,46 @@ class NS_COM nsDependentCConcatenation
|
|||
{
|
||||
public:
|
||||
typedef nsDependentCConcatenation self_type;
|
||||
typedef char char_type;
|
||||
typedef nsACString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
|
||||
protected:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
enum { kLeftString, kRightString };
|
||||
enum { kFirstString, kLastString };
|
||||
|
||||
int
|
||||
GetCurrentStringFromFragment( const nsReadableFragment<char_type>& aFragment ) const
|
||||
GetCurrentStringFromFragment( const const_fragment_type& aFragment ) const
|
||||
{
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kRightString : kLeftString;
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kLastString : kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetLeftStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetFirstStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() & ~mFragmentIdentifierMask);
|
||||
return kLeftString;
|
||||
return kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetRightStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetLastStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() | mFragmentIdentifierMask);
|
||||
return kRightString;
|
||||
return kLastString;
|
||||
}
|
||||
|
||||
public:
|
||||
nsDependentCConcatenation( const string_type& aLeftString, const string_type& aRightString, PRUint32 aMask = 1 )
|
||||
nsDependentCConcatenation( const abstract_string_type& aFirstString, const abstract_string_type& aLastString, PRUint32 aMask = 1 )
|
||||
: mFragmentIdentifierMask(aMask)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
nsDependentCConcatenation( const self_type& aLeftString, const string_type& aRightString )
|
||||
: mFragmentIdentifierMask(aLeftString.mFragmentIdentifierMask<<1)
|
||||
nsDependentCConcatenation( const self_type& aFirstString, const abstract_string_type& aLastString )
|
||||
: mFragmentIdentifierMask(aFirstString.mFragmentIdentifierMask<<1)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
// nsDependentCConcatenation( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
|
@ -184,10 +178,10 @@ class NS_COM nsDependentCConcatenation
|
|||
public:
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const string_type& ) const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const abstract_string_type& ) const;
|
||||
|
||||
// const self_type operator+( const string_type& rhs ) const;
|
||||
// const self_type operator+( const abstract_string_type& rhs ) const;
|
||||
|
||||
PRUint32 GetFragmentIdentifierMask() const { return mFragmentIdentifierMask; }
|
||||
|
||||
|
@ -197,7 +191,7 @@ class NS_COM nsDependentCConcatenation
|
|||
// which would break the algorithm for distributing bits in the fragment identifier
|
||||
|
||||
private:
|
||||
const string_type* mStrings[2];
|
||||
const abstract_string_type* mStrings[2];
|
||||
PRUint32 mFragmentIdentifierMask;
|
||||
};
|
||||
|
||||
|
@ -252,14 +246,14 @@ operator+( const nsACString& lhs, const nsACString& rhs )
|
|||
#if 0
|
||||
inline
|
||||
const nsDependentConcatenation
|
||||
nsDependentConcatenation::operator+( const string_type& rhs ) const
|
||||
nsDependentConcatenation::operator+( const abstract_string_type& rhs ) const
|
||||
{
|
||||
return nsDependentConcatenation(*this, rhs, mFragmentIdentifierMask<<1);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentCConcatenation
|
||||
nsDependentCConcatenation::operator+( const string_type& rhs ) const
|
||||
nsDependentCConcatenation::operator+( const abstract_string_type& rhs ) const
|
||||
{
|
||||
return nsDependentCConcatenation(*this, rhs, mFragmentIdentifierMask<<1);
|
||||
}
|
||||
|
|
|
@ -46,22 +46,24 @@ class NS_COM nsDependentString
|
|||
: public nsAFlatString
|
||||
{
|
||||
public:
|
||||
typedef nsDependentString self_type;
|
||||
|
||||
void
|
||||
Rebind( const PRUnichar* aPtr )
|
||||
Rebind( const char_type* aPtr )
|
||||
{
|
||||
mHandle.DataStart(aPtr);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<PRUnichar>::length(aPtr)) : 0);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<char_type>::length(aPtr)) : 0);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const PRUnichar* aStartPtr, const PRUnichar* aEndPtr )
|
||||
Rebind( const char_type* aStartPtr, const char_type* aEndPtr )
|
||||
{
|
||||
mHandle.DataStart(aStartPtr);
|
||||
mHandle.DataEnd(aEndPtr);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const PRUnichar* aPtr, PRUint32 aLength )
|
||||
Rebind( const char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
if ( aLength == PRUint32(-1) )
|
||||
{
|
||||
|
@ -72,23 +74,23 @@ class NS_COM nsDependentString
|
|||
Rebind(aPtr, aPtr+aLength);
|
||||
}
|
||||
|
||||
nsDependentString( const PRUnichar* aStartPtr, const PRUnichar* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentString( const PRUnichar* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentString( const PRUnichar* aPtr ) { Rebind(aPtr); }
|
||||
nsDependentString( const char_type* aStartPtr, const char_type* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentString( const char_type* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentString( const char_type* aPtr ) { Rebind(aPtr); }
|
||||
|
||||
// nsDependentString( const nsDependentString& ); // auto-generated copy-constructor OK
|
||||
// nsDependentString( const self_type& ); // auto-generated copy-constructor OK
|
||||
// ~nsDependentString(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentString& ); // we're immutable, so no copy-assignment operator
|
||||
void operator=( const self_type& ); // we're immutable, so no copy-assignment operator
|
||||
|
||||
public:
|
||||
virtual const nsBufferHandle<PRUnichar>* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<PRUnichar>*, &mHandle); }
|
||||
virtual const nsBufferHandle<PRUnichar>* GetBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<PRUnichar>*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
|
||||
private:
|
||||
nsConstBufferHandle<PRUnichar> mHandle;
|
||||
const_buffer_handle_type mHandle;
|
||||
};
|
||||
|
||||
|
||||
|
@ -97,22 +99,24 @@ class NS_COM nsDependentCString
|
|||
: public nsAFlatCString
|
||||
{
|
||||
public:
|
||||
typedef nsDependentCString self_type;
|
||||
|
||||
void
|
||||
Rebind( const char* aPtr )
|
||||
Rebind( const char_type* aPtr )
|
||||
{
|
||||
mHandle.DataStart(aPtr);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<char>::length(aPtr)) : 0);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<char_type>::length(aPtr)) : 0);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const char* aStartPtr, const char* aEndPtr )
|
||||
Rebind( const char_type* aStartPtr, const char_type* aEndPtr )
|
||||
{
|
||||
mHandle.DataStart(aStartPtr);
|
||||
mHandle.DataEnd(aEndPtr);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const char* aPtr, PRUint32 aLength )
|
||||
Rebind( const char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
if ( aLength == PRUint32(-1) )
|
||||
{
|
||||
|
@ -123,23 +127,23 @@ class NS_COM nsDependentCString
|
|||
Rebind(aPtr, aPtr+aLength);
|
||||
}
|
||||
|
||||
nsDependentCString( const char* aStartPtr, const char* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentCString( const char* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentCString( const char* aPtr ) { Rebind(aPtr); }
|
||||
nsDependentCString( const char_type* aStartPtr, const char_type* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentCString( const char_type* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentCString( const char_type* aPtr ) { Rebind(aPtr); }
|
||||
|
||||
// nsDependentCString( const nsDependentCString& ); // auto-generated copy-constructor OK
|
||||
// nsDependentCString( const self_type& ); // auto-generated copy-constructor OK
|
||||
// ~nsDependentCString(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentCString& ); // we're immutable, so no copy-assignment operator
|
||||
void operator=( const self_type& ); // we're immutable, so no copy-assignment operator
|
||||
|
||||
public:
|
||||
virtual const nsBufferHandle<char>* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<char>*, &mHandle); }
|
||||
virtual const nsBufferHandle<char>* GetBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<char>*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
|
||||
private:
|
||||
nsConstBufferHandle<char> mHandle;
|
||||
const_buffer_handle_type mHandle;
|
||||
};
|
||||
|
||||
#endif /* !defined(nsDependentString_h___) */
|
||||
|
|
|
@ -49,15 +49,15 @@ class NS_COM nsDependentSubstring
|
|||
calls to |GetReadableFragment()|.
|
||||
*/
|
||||
{
|
||||
typedef nsAString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
public:
|
||||
typedef nsDependentSubstring self_type;
|
||||
|
||||
protected:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual PRUnichar* GetWritableFragment( nsWritableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
public:
|
||||
nsDependentSubstring( const string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
nsDependentSubstring( const abstract_string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
: mString(aString),
|
||||
mStartPos( NS_MIN(aStartPos, aString.Length()) ),
|
||||
mLength( NS_MIN(aLength, aString.Length()-mStartPos) )
|
||||
|
@ -74,19 +74,19 @@ class NS_COM nsDependentSubstring
|
|||
mLength = Distance(aStart, aEnd);
|
||||
}
|
||||
|
||||
// nsDependentSubstring( const nsDependentSubstring& ); // auto-generated copy-constructor should be OK
|
||||
// nsDependentSubstring( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
// ~nsDependentSubstring(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentSubstring& ); // we're immutable, you can't assign into a substring
|
||||
void operator=( const self_type& ); // we're immutable, you can't assign into a substring
|
||||
|
||||
public:
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
|
||||
private:
|
||||
const string_type& mString;
|
||||
const abstract_string_type& mString;
|
||||
PRUint32 mStartPos;
|
||||
PRUint32 mLength;
|
||||
};
|
||||
|
@ -102,15 +102,15 @@ class NS_COM nsDependentCSubstring
|
|||
calls to |GetReadableFragment()|.
|
||||
*/
|
||||
{
|
||||
typedef nsACString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
public:
|
||||
typedef nsDependentCSubstring self_type;
|
||||
|
||||
protected:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char* GetWritableFragment( nsWritableFragment<char>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
public:
|
||||
nsDependentCSubstring( const string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
nsDependentCSubstring( const abstract_string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
: mString(aString),
|
||||
mStartPos( NS_MIN(aStartPos, aString.Length()) ),
|
||||
mLength( NS_MIN(aLength, aString.Length()-mStartPos) )
|
||||
|
@ -127,19 +127,19 @@ class NS_COM nsDependentCSubstring
|
|||
mLength = Distance(aStart, aEnd);
|
||||
}
|
||||
|
||||
// nsDependentCSubstring( const nsDependentCSubstring& ); // auto-generated copy-constructor should be OK
|
||||
// nsDependentCSubstring( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
// ~nsDependentCSubstring(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentCSubstring& ); // we're immutable, you can't assign into a substring
|
||||
void operator=( const self_type& ); // we're immutable, you can't assign into a substring
|
||||
|
||||
public:
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
|
||||
private:
|
||||
const string_type& mString;
|
||||
const abstract_string_type& mString;
|
||||
PRUint32 mStartPos;
|
||||
PRUint32 mLength;
|
||||
};
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla XPCOM.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Scott Collins <scc@mozilla.org> (original author)
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef nsFragmentedString_h___
|
||||
#define nsFragmentedString_h___
|
||||
|
||||
// WORK IN PROGRESS
|
||||
|
||||
#ifndef nsAString_h___
|
||||
#include "nsAString.h"
|
||||
#endif
|
||||
|
||||
#ifndef nsSharedBufferList_h___
|
||||
#include "nsSharedBufferList.h"
|
||||
#endif
|
||||
|
||||
|
||||
class nsFragmentedString
|
||||
: public nsAString
|
||||
/*
|
||||
...
|
||||
*/
|
||||
{
|
||||
protected:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual PRUnichar* GetWritableFragment( nsWritableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 );
|
||||
|
||||
public:
|
||||
nsFragmentedString() { }
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
virtual void SetLength( PRUint32 aNewLength );
|
||||
// virtual void SetCapacity( PRUint32 aNewCapacity );
|
||||
|
||||
// virtual void Cut( PRUint32 cutStart, PRUint32 cutLength );
|
||||
|
||||
protected:
|
||||
// virtual void do_AssignFromReadable( const nsAString& );
|
||||
// virtual void do_AppendFromReadable( const nsAString& );
|
||||
// virtual void do_InsertFromReadable( const nsAString&, PRUint32 );
|
||||
// virtual void do_ReplaceFromReadable( PRUint32, PRUint32, const nsAString& );
|
||||
|
||||
private:
|
||||
nsSharedBufferList mBufferList;
|
||||
};
|
||||
|
||||
#endif // !defined(nsFragmentedString_h___)
|
|
@ -36,28 +36,28 @@
|
|||
#if 0
|
||||
inline
|
||||
const nsDependentString
|
||||
literal_string( const PRUnichar* aPtr )
|
||||
literal_string( const nsAString::char_type* aPtr )
|
||||
{
|
||||
return nsDependentString(aPtr);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentString
|
||||
literal_string( const PRUnichar* aPtr, PRUint32 aLength )
|
||||
literal_string( const nsAString::char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
return nsDependentString(aPtr, aLength);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentCString
|
||||
literal_string( const char* aPtr )
|
||||
literal_string( const nsACString::char_type* aPtr )
|
||||
{
|
||||
return nsDependentCString(aPtr);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentCString
|
||||
literal_string( const char* aPtr, PRUint32 aLength )
|
||||
literal_string( const nsACString::char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
return nsDependentCString(aPtr, aLength);
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ literal_string( const char* aPtr, PRUint32 aLength )
|
|||
|
||||
#ifdef HAVE_CPP_2BYTE_WCHAR_T
|
||||
#define NS_L(s) L##s
|
||||
#define NS_MULTILINE_LITERAL_STRING(s) nsDependentString(NS_REINTERPRET_CAST(const PRUnichar*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#define NS_NAMED_MULTILINE_LITERAL_STRING(n,s) nsDependentString n(NS_REINTERPRET_CAST(const PRUnichar*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#define NS_MULTILINE_LITERAL_STRING(s) nsDependentString(NS_REINTERPRET_CAST(const nsAString::char_type*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#define NS_NAMED_MULTILINE_LITERAL_STRING(n,s) nsDependentString n(NS_REINTERPRET_CAST(const nsAString::char_type*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#else
|
||||
#define NS_L(s) s
|
||||
#define NS_MULTILINE_LITERAL_STRING(s) NS_ConvertASCIItoUCS2(s, PRUint32(sizeof(s)-1))
|
||||
|
|
|
@ -76,21 +76,21 @@ class NS_COM nsPrintfCString
|
|||
|
||||
|
||||
public:
|
||||
explicit nsPrintfCString( const char* format, ... );
|
||||
nsPrintfCString( size_t n, const char* format, ...);
|
||||
explicit nsPrintfCString( const char_type* format, ... );
|
||||
nsPrintfCString( size_t n, const char_type* format, ...);
|
||||
~nsPrintfCString();
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
protected:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char* GetWritableFragment( nsWritableFragment<char>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
// virtual PRBool GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest ) const;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
// virtual PRBool GetReadableFragment( const_fragment_type&, nsFragmentRequest ) const;
|
||||
|
||||
private:
|
||||
char* mStart;
|
||||
char_type* mStart;
|
||||
PRUint32 mLength;
|
||||
char mLocalBuffer[ kLocalBufferSize + 1 ];
|
||||
char_type mLocalBuffer[ kLocalBufferSize + 1 ];
|
||||
};
|
||||
|
||||
#endif // !defined(nsPrintfCString_h___)
|
||||
|
|
|
@ -83,28 +83,31 @@
|
|||
class NS_COM nsPromiseFlatString
|
||||
: public nsAFlatString /* , public nsAPromiseString */
|
||||
{
|
||||
friend const nsPromiseFlatString PromiseFlatString( const nsAString& );
|
||||
friend const nsPromiseFlatString PromiseFlatString( const abstract_string_type& );
|
||||
|
||||
public:
|
||||
nsPromiseFlatString( const nsPromiseFlatString& );
|
||||
typedef nsPromiseFlatString self_type;
|
||||
|
||||
public:
|
||||
nsPromiseFlatString( const self_type& );
|
||||
|
||||
protected:
|
||||
nsPromiseFlatString() : mPromisedString(&mFlattenedString) { }
|
||||
explicit nsPromiseFlatString( const nsAString& aString );
|
||||
explicit nsPromiseFlatString( const abstract_string_type& aString );
|
||||
|
||||
// things we want to forward to the string we are promising
|
||||
virtual const nsBufferHandle<PRUnichar>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<PRUnichar>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<PRUnichar>* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const nsAString& ) const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
|
||||
|
||||
// things we are forwarding now, but won't when we finally fix obsolete/nsString et al
|
||||
public:
|
||||
virtual const PRUnichar* get() const;
|
||||
virtual const char_type* get() const;
|
||||
virtual PRUint32 Length() const;
|
||||
protected:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
|
||||
|
||||
private:
|
||||
|
@ -119,33 +122,36 @@ class NS_COM nsPromiseFlatString
|
|||
class NS_COM nsPromiseFlatCString
|
||||
: public nsAFlatCString /* , public nsAPromiseCString */
|
||||
{
|
||||
friend const nsPromiseFlatCString PromiseFlatCString( const nsACString& );
|
||||
friend const nsPromiseFlatCString PromiseFlatCString( const abstract_string_type& );
|
||||
|
||||
public:
|
||||
nsPromiseFlatCString( const nsPromiseFlatCString& );
|
||||
typedef nsPromiseFlatCString self_type;
|
||||
|
||||
public:
|
||||
nsPromiseFlatCString( const self_type& );
|
||||
|
||||
protected:
|
||||
nsPromiseFlatCString() : mPromisedString(&mFlattenedString) { }
|
||||
explicit nsPromiseFlatCString( const nsACString& aString );
|
||||
explicit nsPromiseFlatCString( const abstract_string_type& aString );
|
||||
|
||||
// things we want to forward to the string we are promising
|
||||
virtual const nsBufferHandle<char>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<char>* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const nsACString& ) const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
|
||||
|
||||
// things we are forwarding now, but won't when we finally fix obsolete/nsString et al
|
||||
public:
|
||||
virtual const char* get() const;
|
||||
virtual const char_type* get() const;
|
||||
virtual PRUint32 Length() const;
|
||||
protected:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsPromiseFlatCString& );
|
||||
void operator=( const self_type& );
|
||||
|
||||
private:
|
||||
nsSharableCString mFlattenedString;
|
||||
|
|
|
@ -46,25 +46,23 @@ class NS_COM nsSharableString
|
|||
{
|
||||
public:
|
||||
typedef nsSharableString self_type;
|
||||
typedef PRUnichar char_type;
|
||||
typedef nsAString string_type;
|
||||
|
||||
public:
|
||||
nsSharableString() { }
|
||||
nsSharableString( const self_type& aOther ) : mBuffer(aOther.mBuffer) { }
|
||||
explicit nsSharableString( const string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableString( const nsSharedBufferHandle<char_type>* aHandle ) : mBuffer(aHandle) { }
|
||||
explicit nsSharableString( const abstract_string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableString( const shared_buffer_handle_type* aHandle ) : mBuffer(aHandle) { }
|
||||
|
||||
self_type&
|
||||
operator=( const string_type& aReadable )
|
||||
operator=( const abstract_string_type& aReadable )
|
||||
{
|
||||
assign(aReadable);
|
||||
return *this;
|
||||
}
|
||||
|
||||
protected:
|
||||
void assign( const string_type& );
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
void assign( const abstract_string_type& );
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
protected:
|
||||
nsAutoBufferHandle<char_type> mBuffer;
|
||||
|
@ -76,25 +74,23 @@ class NS_COM nsSharableCString
|
|||
{
|
||||
public:
|
||||
typedef nsSharableCString self_type;
|
||||
typedef char char_type;
|
||||
typedef nsACString string_type;
|
||||
|
||||
public:
|
||||
nsSharableCString() { }
|
||||
nsSharableCString( const self_type& aOther ) : mBuffer(aOther.mBuffer) { }
|
||||
explicit nsSharableCString( const string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableCString( const nsSharedBufferHandle<char_type>* aHandle ) : mBuffer(aHandle) { }
|
||||
explicit nsSharableCString( const abstract_string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableCString( const shared_buffer_handle_type* aHandle ) : mBuffer(aHandle) { }
|
||||
|
||||
self_type&
|
||||
operator=( const string_type& aReadable )
|
||||
operator=( const abstract_string_type& aReadable )
|
||||
{
|
||||
assign(aReadable);
|
||||
return *this;
|
||||
}
|
||||
|
||||
protected:
|
||||
void assign( const string_type& );
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
void assign( const abstract_string_type& );
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
protected:
|
||||
nsAutoBufferHandle<char_type> mBuffer;
|
||||
|
|
|
@ -63,14 +63,17 @@ class nsReadingIterator
|
|||
typedef const CharT& reference;
|
||||
// typedef bidirectional_iterator_tag iterator_category;
|
||||
|
||||
typedef nsReadableFragment<CharT> const_fragment_type;
|
||||
typedef nsWritableFragment<CharT> fragment_type;
|
||||
|
||||
private:
|
||||
friend class nsAString;
|
||||
friend class nsACString;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type string_type;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type abstract_string_type;
|
||||
|
||||
nsReadableFragment<CharT> mFragment;
|
||||
const_fragment_type mFragment;
|
||||
const CharT* mPosition;
|
||||
const string_type* mOwningString;
|
||||
const abstract_string_type* mOwningString;
|
||||
|
||||
public:
|
||||
nsReadingIterator() { }
|
||||
|
@ -136,13 +139,13 @@ class nsReadingIterator
|
|||
return result;
|
||||
}
|
||||
|
||||
const nsReadableFragment<CharT>&
|
||||
const const_fragment_type&
|
||||
fragment() const
|
||||
{
|
||||
return mFragment;
|
||||
}
|
||||
|
||||
const string_type&
|
||||
const abstract_string_type&
|
||||
string() const
|
||||
{
|
||||
NS_ASSERTION(mOwningString, "iterator not attached to a string (|mOwningString| == 0)");
|
||||
|
@ -203,14 +206,17 @@ class nsWritingIterator
|
|||
typedef CharT& reference;
|
||||
// typedef bidirectional_iterator_tag iterator_category;
|
||||
|
||||
typedef nsReadableFragment<CharT> const_fragment_type;
|
||||
typedef nsWritableFragment<CharT> fragment_type;
|
||||
|
||||
private:
|
||||
friend class nsAString;
|
||||
friend class nsACString;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type string_type;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type abstract_string_type;
|
||||
|
||||
nsWritableFragment<CharT> mFragment;
|
||||
fragment_type mFragment;
|
||||
CharT* mPosition;
|
||||
string_type* mOwningString;
|
||||
abstract_string_type* mOwningString;
|
||||
|
||||
public:
|
||||
nsWritingIterator() { }
|
||||
|
@ -276,26 +282,26 @@ class nsWritingIterator
|
|||
return result;
|
||||
}
|
||||
|
||||
const nsWritableFragment<CharT>&
|
||||
const fragment_type&
|
||||
fragment() const
|
||||
{
|
||||
return mFragment;
|
||||
}
|
||||
|
||||
nsWritableFragment<CharT>&
|
||||
fragment_type&
|
||||
fragment()
|
||||
{
|
||||
return mFragment;
|
||||
}
|
||||
|
||||
const string_type&
|
||||
const abstract_string_type&
|
||||
string() const
|
||||
{
|
||||
NS_ASSERTION(mOwningString, "iterator not attached to a string (|mOwningString| == 0)");
|
||||
return *mOwningString;
|
||||
}
|
||||
|
||||
string_type&
|
||||
abstract_string_type&
|
||||
string()
|
||||
{
|
||||
NS_ASSERTION(mOwningString, "iterator not attached to a string (|mOwningString| == 0)");
|
||||
|
|
|
@ -70,6 +70,9 @@
|
|||
class NS_COM nsXPIDLString
|
||||
: public nsSharableString
|
||||
{
|
||||
public:
|
||||
typedef nsXPIDLString self_type;
|
||||
|
||||
public:
|
||||
nsXPIDLString()
|
||||
{
|
||||
|
@ -80,7 +83,7 @@ class NS_COM nsXPIDLString
|
|||
#endif
|
||||
}
|
||||
|
||||
nsXPIDLString( const nsXPIDLString& aString )
|
||||
nsXPIDLString( const self_type& aString )
|
||||
: nsSharableString(aString.GetSharedBufferHandle())
|
||||
// copy-constructor required (or else C++ generates one for us)
|
||||
{
|
||||
|
@ -98,8 +101,8 @@ class NS_COM nsXPIDLString
|
|||
}
|
||||
#endif
|
||||
|
||||
nsXPIDLString&
|
||||
operator=( const nsXPIDLString& rhs )
|
||||
self_type&
|
||||
operator=( const self_type& rhs )
|
||||
// copy-assignment operator required (or else C++ generates one for us)
|
||||
{
|
||||
// self-assignment is handled by the underlying |nsAutoBufferHandle|
|
||||
|
@ -107,11 +110,11 @@ class NS_COM nsXPIDLString
|
|||
return *this;
|
||||
}
|
||||
|
||||
void Adopt( PRUnichar* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
void Adopt( char_type* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
|
||||
// deprecated, to be eliminated
|
||||
operator const PRUnichar*() const { return get(); }
|
||||
PRUnichar operator[]( int i ) const { return get()[ i ]; }
|
||||
operator const char_type*() const { return get(); }
|
||||
char_type operator[]( int i ) const { return get()[ i ]; }
|
||||
|
||||
|
||||
class getter_Copies_t
|
||||
|
@ -121,7 +124,7 @@ class NS_COM nsXPIDLString
|
|||
// getter_Copies_t( const getter_Copies_t& ); // auto-generated copy-constructor OK
|
||||
// getter_Copies_t& operator=( const getter_Copies_t& ); // auto-generated assignment operator OK
|
||||
|
||||
operator PRUnichar**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
operator char_type**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
|
||||
private:
|
||||
nsXPIDLString* mString;
|
||||
|
@ -131,13 +134,13 @@ class NS_COM nsXPIDLString
|
|||
|
||||
protected:
|
||||
#if DEBUG_STRING_STATS
|
||||
virtual const nsBufferHandle<PRUnichar>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<PRUnichar>* GetBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
#endif
|
||||
virtual const nsSharedBufferHandle<PRUnichar>* GetSharedBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
// overridden to fix the length after `out' parameter assignment, if necessary
|
||||
|
||||
PRUnichar** PrepareForUseAsOutParam();
|
||||
char_type** PrepareForUseAsOutParam();
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
static size_t sCreatedCount; // total number of |nsXPIDLString|s ever created
|
||||
|
@ -164,6 +167,9 @@ getter_Copies( nsXPIDLString& aString )
|
|||
class NS_COM nsXPIDLCString
|
||||
: public nsSharableCString
|
||||
{
|
||||
public:
|
||||
typedef nsXPIDLCString self_type;
|
||||
|
||||
public:
|
||||
nsXPIDLCString()
|
||||
{
|
||||
|
@ -174,7 +180,7 @@ class NS_COM nsXPIDLCString
|
|||
#endif
|
||||
}
|
||||
|
||||
nsXPIDLCString( const nsXPIDLCString& aString )
|
||||
nsXPIDLCString( const self_type& aString )
|
||||
: nsSharableCString(aString.GetSharedBufferHandle())
|
||||
// copy-constructor required (or else C++ generates one for us)
|
||||
{
|
||||
|
@ -192,8 +198,8 @@ class NS_COM nsXPIDLCString
|
|||
}
|
||||
#endif
|
||||
|
||||
nsXPIDLCString&
|
||||
operator=( const nsXPIDLCString& rhs )
|
||||
self_type&
|
||||
operator=( const self_type& rhs )
|
||||
// copy-assignment operator required (or else C++ generates one for us)
|
||||
{
|
||||
// self-assignment is handled by the underlying |nsAutoBufferHandle|
|
||||
|
@ -201,11 +207,11 @@ class NS_COM nsXPIDLCString
|
|||
return *this;
|
||||
}
|
||||
|
||||
void Adopt( char* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
void Adopt( char_type* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
|
||||
// deprecated, to be eliminated
|
||||
operator const char*() const { return get(); }
|
||||
char operator[]( int i ) const { return get()[ i ]; }
|
||||
operator const char_type*() const { return get(); }
|
||||
char_type operator[]( int i ) const { return get()[ i ]; }
|
||||
|
||||
|
||||
class getter_Copies_t
|
||||
|
@ -215,7 +221,7 @@ class NS_COM nsXPIDLCString
|
|||
// getter_Copies_t( const getter_Copies_t& ); // auto-generated copy-constructor OK
|
||||
// getter_Copies_t& operator=( const getter_Copies_t& ); // auto-generated assignment operator OK
|
||||
|
||||
operator char**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
operator char_type**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
|
||||
private:
|
||||
nsXPIDLCString* mString;
|
||||
|
@ -225,13 +231,13 @@ class NS_COM nsXPIDLCString
|
|||
|
||||
protected:
|
||||
#if DEBUG_STRING_STATS
|
||||
virtual const nsBufferHandle<char>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char>* GetBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
#endif
|
||||
virtual const nsSharedBufferHandle<char>* GetSharedBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
// overridden to fix the length after `out' parameter assignment, if necessary
|
||||
|
||||
char** PrepareForUseAsOutParam();
|
||||
char_type** PrepareForUseAsOutParam();
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
static size_t sCreatedCount; // total number of |nsXPIDLCString|s ever created
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
|
||||
#include "nsAFlatString.h"
|
||||
|
||||
const PRUnichar*
|
||||
nsAFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsAFlatString::char_type*
|
||||
nsAFlatString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ nsAFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, ns
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
const nsBufferHandle<PRUnichar>* buffer = GetBufferHandle();
|
||||
const buffer_handle_type* buffer = GetBufferHandle();
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -46,8 +46,8 @@ nsAFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, ns
|
|||
}
|
||||
}
|
||||
|
||||
PRUnichar*
|
||||
nsAFlatString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
nsAFlatString::char_type*
|
||||
nsAFlatString::GetWritableFragment( fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -55,7 +55,7 @@ nsAFlatString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, ns
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
nsBufferHandle<PRUnichar>* buffer = NS_CONST_CAST(nsBufferHandle<PRUnichar>*, GetBufferHandle());
|
||||
buffer_handle_type* buffer = NS_CONST_CAST(buffer_handle_type*, GetBufferHandle());
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -69,8 +69,8 @@ nsAFlatString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, ns
|
|||
}
|
||||
}
|
||||
|
||||
const char*
|
||||
nsAFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsAFlatCString::char_type*
|
||||
nsAFlatCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -78,7 +78,7 @@ nsAFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFrag
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
const nsBufferHandle<char>* buffer = GetBufferHandle();
|
||||
const buffer_handle_type* buffer = GetBufferHandle();
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -92,8 +92,8 @@ nsAFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFrag
|
|||
}
|
||||
}
|
||||
|
||||
char*
|
||||
nsAFlatCString::GetWritableFragment( nsWritableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
nsAFlatCString::char_type*
|
||||
nsAFlatCString::GetWritableFragment( fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -101,7 +101,7 @@ nsAFlatCString::GetWritableFragment( nsWritableFragment<char>& aFragment, nsFrag
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
nsBufferHandle<char>* buffer = NS_CONST_CAST(nsBufferHandle<char>*, GetBufferHandle());
|
||||
buffer_handle_type* buffer = NS_CONST_CAST(buffer_handle_type*, GetBufferHandle());
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -118,29 +118,29 @@ nsAFlatCString::GetWritableFragment( nsWritableFragment<char>& aFragment, nsFrag
|
|||
PRUint32
|
||||
nsAFlatString::Length() const
|
||||
{
|
||||
const nsBufferHandle<PRUnichar>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
return PRUint32(handle ? handle->DataLength() : 0);
|
||||
}
|
||||
|
||||
PRUint32
|
||||
nsAFlatCString::Length() const
|
||||
{
|
||||
const nsBufferHandle<char>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
return PRUint32(handle ? handle->DataLength() : 0);
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
const nsAFlatString::char_type*
|
||||
nsAFlatString::get() const
|
||||
{
|
||||
const nsBufferHandle<PRUnichar>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
// NS_ASSERTION(handle, "handle is null!");
|
||||
return handle ? handle->DataStart() : 0;
|
||||
}
|
||||
|
||||
const char*
|
||||
const nsAFlatCString::char_type*
|
||||
nsAFlatCString::get() const
|
||||
{
|
||||
const nsBufferHandle<char>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
// NS_ASSERTION(handle, "handle is null!");
|
||||
return handle ? handle->DataStart() : 0;
|
||||
}
|
||||
|
|
|
@ -28,13 +28,13 @@
|
|||
|
||||
|
||||
int
|
||||
nsDefaultStringComparator::operator()( const PRUnichar* lhs, const PRUnichar* rhs, PRUint32 aLength ) const
|
||||
nsDefaultStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCharTraits<PRUnichar>::compare(lhs, rhs, aLength);
|
||||
return nsCharTraits<char_type>::compare(lhs, rhs, aLength);
|
||||
}
|
||||
|
||||
int
|
||||
nsCaseInsensitiveStringComparator::operator()( const PRUnichar* lhs, const PRUnichar* rhs, PRUint32 aLength ) const
|
||||
nsCaseInsensitiveStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCRT::strncasecmp(lhs, rhs, aLength);
|
||||
}
|
||||
|
@ -85,20 +85,19 @@ Compare( const nsAString& lhs, const nsAString& rhs, const nsStringComparator& a
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsAString::shared_buffer_handle_type*
|
||||
nsAString::GetSharedBufferHandle() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsAString::buffer_handle_type*
|
||||
nsAString::GetFlatBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsAString::buffer_handle_type*
|
||||
nsAString::GetBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
|
@ -108,12 +107,13 @@ PRUint32
|
|||
nsAString::GetImplementationFlags() const
|
||||
{
|
||||
PRUint32 flags = 0;
|
||||
const nsSharedBufferHandle<char_type>* handle = GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = GetSharedBufferHandle();
|
||||
if ( handle )
|
||||
flags = handle->GetImplementationFlags();
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
PRBool
|
||||
nsAString::IsVoid() const
|
||||
{
|
||||
|
@ -132,6 +132,8 @@ nsAString::Equals( const char_type* rhs ) const
|
|||
return Equals(nsDependentString(rhs));
|
||||
}
|
||||
|
||||
|
||||
|
||||
nsAString::char_type
|
||||
nsAString::First() const
|
||||
{
|
||||
|
@ -529,16 +531,14 @@ nsAString::do_ReplaceFromReadable( index_type cutStart, size_type cutLength, con
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int
|
||||
nsDefaultCStringComparator::operator()( const char* lhs, const char* rhs, PRUint32 aLength ) const
|
||||
nsDefaultCStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCharTraits<char>::compare(lhs, rhs, aLength);
|
||||
return nsCharTraits<char_type>::compare(lhs, rhs, aLength);
|
||||
}
|
||||
|
||||
int
|
||||
nsCaseInsensitiveCStringComparator::operator()( const char* lhs, const char* rhs, PRUint32 aLength ) const
|
||||
nsCaseInsensitiveCStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCRT::strncasecmp(lhs, rhs, aLength);
|
||||
}
|
||||
|
@ -589,20 +589,19 @@ Compare( const nsACString& lhs, const nsACString& rhs, const nsCStringComparator
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsACString::shared_buffer_handle_type*
|
||||
nsACString::GetSharedBufferHandle() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsACString::buffer_handle_type*
|
||||
nsACString::GetFlatBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsACString::buffer_handle_type*
|
||||
nsACString::GetBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
|
@ -612,12 +611,13 @@ PRUint32
|
|||
nsACString::GetImplementationFlags() const
|
||||
{
|
||||
PRUint32 flags = 0;
|
||||
const nsSharedBufferHandle<char_type>* handle = GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = GetSharedBufferHandle();
|
||||
if ( handle )
|
||||
flags = handle->GetImplementationFlags();
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
PRBool
|
||||
nsACString::IsVoid() const
|
||||
{
|
||||
|
|
|
@ -35,26 +35,26 @@
|
|||
PRUint32
|
||||
nsDependentConcatenation::Length() const
|
||||
{
|
||||
return mStrings[kLeftString]->Length() + mStrings[kRightString]->Length();
|
||||
return mStrings[kFirstString]->Length() + mStrings[kLastString]->Length();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsDependentConcatenation::IsDependentOn( const string_type& aString ) const
|
||||
nsDependentConcatenation::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mStrings[0]->IsDependentOn(aString) || mStrings[1]->IsDependentOn(aString);
|
||||
return mStrings[kFirstString]->IsDependentOn(aString) || mStrings[kLastString]->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
#if 0
|
||||
PRBool
|
||||
nsDependentConcatenation::PromisesExactly( const string_type& aString ) const
|
||||
nsDependentConcatenation::PromisesExactly( const abstract_string_type& aString ) const
|
||||
{
|
||||
// Not really like this, test for the empty string, etc
|
||||
return mStrings[0] == &aString && !mStrings[1] || !mStrings[0] && mStrings[1] == &aString;
|
||||
return mStrings[kFirstString] == &aString && !mStrings[kLastString] || !mStrings[kFirstString] && mStrings[kLastString] == &aString;
|
||||
}
|
||||
#endif
|
||||
|
||||
const PRUnichar*
|
||||
nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentConcatenation::char_type*
|
||||
nsDependentConcatenation::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
int whichString;
|
||||
|
||||
|
@ -68,20 +68,20 @@ nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aF
|
|||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
PRUint32 leftLength = mStrings[kLeftString]->Length();
|
||||
PRUint32 leftLength = mStrings[kFirstString]->Length();
|
||||
if ( aPosition < leftLength )
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
else
|
||||
{
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
aPosition -= leftLength;
|
||||
}
|
||||
break;
|
||||
|
@ -98,15 +98,15 @@ nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aF
|
|||
if ( !result )
|
||||
{
|
||||
done = PR_FALSE;
|
||||
if ( aRequest == kNextFragment && whichString == kLeftString )
|
||||
if ( aRequest == kNextFragment && whichString == kFirstString )
|
||||
{
|
||||
aRequest = kFirstFragment;
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
}
|
||||
else if ( aRequest == kPrevFragment && whichString == kRightString )
|
||||
else if ( aRequest == kPrevFragment && whichString == kLastString )
|
||||
{
|
||||
aRequest = kLastFragment;
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
}
|
||||
else
|
||||
done = PR_TRUE;
|
||||
|
@ -120,26 +120,26 @@ nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aF
|
|||
PRUint32
|
||||
nsDependentCConcatenation::Length() const
|
||||
{
|
||||
return mStrings[kLeftString]->Length() + mStrings[kRightString]->Length();
|
||||
return mStrings[kFirstString]->Length() + mStrings[kLastString]->Length();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsDependentCConcatenation::IsDependentOn( const string_type& aString ) const
|
||||
nsDependentCConcatenation::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mStrings[0]->IsDependentOn(aString) || mStrings[1]->IsDependentOn(aString);
|
||||
return mStrings[kFirstString]->IsDependentOn(aString) || mStrings[kLastString]->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
#if 0
|
||||
PRBool
|
||||
nsDependentCConcatenation::PromisesExactly( const string_type& aString ) const
|
||||
nsDependentCConcatenation::PromisesExactly( const abstract_string_type& aString ) const
|
||||
{
|
||||
// Not really like this, test for the empty string, etc
|
||||
return mStrings[0] == &aString && !mStrings[1] || !mStrings[0] && mStrings[1] == &aString;
|
||||
return mStrings[kFirstString] == &aString && !mStrings[kLastString] || !mStrings[kFirstString] && mStrings[kLastString] == &aString;
|
||||
}
|
||||
#endif
|
||||
|
||||
const char*
|
||||
nsDependentCConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentCConcatenation::char_type*
|
||||
nsDependentCConcatenation::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
int whichString;
|
||||
|
||||
|
@ -153,20 +153,20 @@ nsDependentCConcatenation::GetReadableFragment( nsReadableFragment<char_type>& a
|
|||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
PRUint32 leftLength = mStrings[kLeftString]->Length();
|
||||
PRUint32 leftLength = mStrings[kFirstString]->Length();
|
||||
if ( aPosition < leftLength )
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
else
|
||||
{
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
aPosition -= leftLength;
|
||||
}
|
||||
break;
|
||||
|
@ -183,15 +183,15 @@ nsDependentCConcatenation::GetReadableFragment( nsReadableFragment<char_type>& a
|
|||
if ( !result )
|
||||
{
|
||||
done = PR_FALSE;
|
||||
if ( aRequest == kNextFragment && whichString == kLeftString )
|
||||
if ( aRequest == kNextFragment && whichString == kFirstString )
|
||||
{
|
||||
aRequest = kFirstFragment;
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
}
|
||||
else if ( aRequest == kPrevFragment && whichString == kRightString )
|
||||
else if ( aRequest == kPrevFragment && whichString == kLastString )
|
||||
{
|
||||
aRequest = kLastFragment;
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
}
|
||||
else
|
||||
done = PR_TRUE;
|
||||
|
|
|
@ -29,8 +29,8 @@ nsDependentSubstring::Length() const
|
|||
return mLength;
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
nsDependentSubstring::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentSubstring::char_type*
|
||||
nsDependentSubstring::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
// Offset any request for a specific position (First, Last, At) by our
|
||||
// substrings startpos within the owning string
|
||||
|
@ -50,7 +50,7 @@ nsDependentSubstring::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragm
|
|||
|
||||
// requests for |kNextFragment| or |kPrevFragment| are just relayed down into the string we're slicing
|
||||
|
||||
const PRUnichar* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
const char_type* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
|
||||
// If |GetReadableFragment| returns |0|, then we are off the string, the contents of the
|
||||
// fragment are garbage.
|
||||
|
@ -80,8 +80,8 @@ nsDependentCSubstring::Length() const
|
|||
return mLength;
|
||||
}
|
||||
|
||||
const char*
|
||||
nsDependentCSubstring::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentCSubstring::char_type*
|
||||
nsDependentCSubstring::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
// Offset any request for a specific position (First, Last, At) by our
|
||||
// substrings startpos within the owning string
|
||||
|
@ -101,7 +101,7 @@ nsDependentCSubstring::GetReadableFragment( nsReadableFragment<char>& aFragment,
|
|||
|
||||
// requests for |kNextFragment| or |kPrevFragment| are just relayed down into the string we're slicing
|
||||
|
||||
const char* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
const char_type* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
|
||||
// If |GetReadableFragment| returns |0|, then we are off the string, the contents of the
|
||||
// fragment are garbage.
|
||||
|
|
|
@ -1,162 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla XPCOM.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author:
|
||||
* Scott Collins <scc@mozilla.org>
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsFragmentedString.h"
|
||||
|
||||
|
||||
const PRUnichar*
|
||||
nsFragmentedString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
const nsSharedBufferList::Buffer* buffer = 0;
|
||||
switch ( aRequest )
|
||||
{
|
||||
case kPrevFragment:
|
||||
buffer = NS_STATIC_CAST(const nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mPrev;
|
||||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
buffer = mBufferList.GetFirstBuffer();
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
buffer = mBufferList.GetLastBuffer();
|
||||
break;
|
||||
|
||||
case kNextFragment:
|
||||
buffer = NS_STATIC_CAST(const nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mNext;
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
// ...work...
|
||||
break;
|
||||
}
|
||||
|
||||
if ( buffer )
|
||||
{
|
||||
aFragment.mStart = buffer->DataStart();
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
aFragment.mFragmentIdentifier = buffer;
|
||||
return aFragment.mStart + aOffset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
PRUnichar*
|
||||
nsFragmentedString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
{
|
||||
nsSharedBufferList::Buffer* buffer = 0;
|
||||
switch ( aRequest )
|
||||
{
|
||||
case kPrevFragment:
|
||||
buffer = NS_STATIC_CAST(nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mPrev;
|
||||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
buffer = mBufferList.GetFirstBuffer();
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
buffer = mBufferList.GetLastBuffer();
|
||||
break;
|
||||
|
||||
case kNextFragment:
|
||||
buffer = NS_STATIC_CAST(nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mNext;
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
// ...work...
|
||||
break;
|
||||
}
|
||||
|
||||
if ( buffer )
|
||||
{
|
||||
aFragment.mStart = buffer->DataStart();
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
aFragment.mFragmentIdentifier = buffer;
|
||||
return aFragment.mStart + aOffset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ...
|
||||
*/
|
||||
PRUint32
|
||||
nsFragmentedString::Length() const
|
||||
{
|
||||
return PRUint32(mBufferList.GetDataLength());
|
||||
}
|
||||
|
||||
/**
|
||||
* |SetLength|
|
||||
*/
|
||||
void
|
||||
nsFragmentedString::SetLength( PRUint32 aNewLength )
|
||||
{
|
||||
// according to the current interpretation of |SetLength|,
|
||||
// cut off characters from the end, or else add unitialized space to fill
|
||||
|
||||
if ( aNewLength < PRUint32(mBufferList.GetDataLength()) )
|
||||
{
|
||||
// if ( aNewLength )
|
||||
mBufferList.DiscardSuffix(mBufferList.GetDataLength()-aNewLength);
|
||||
// else
|
||||
// mBufferList.DestroyBuffers();
|
||||
}
|
||||
|
||||
// temporarily... eliminate as soon as our munging routines don't need this form of |SetLength|
|
||||
else if ( aNewLength > PRUint32(mBufferList.GetDataLength()) )
|
||||
{
|
||||
size_t empty_space_to_add = aNewLength - mBufferList.GetDataLength();
|
||||
nsSharedBufferList::Buffer* new_buffer = nsSharedBufferList::NewSingleAllocationBuffer(0, 0, empty_space_to_add);
|
||||
new_buffer->DataEnd(new_buffer->DataStart()+empty_space_to_add);
|
||||
mBufferList.LinkBuffer(mBufferList.GetLastBuffer(), new_buffer, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* |SetCapacity|.
|
||||
*
|
||||
* If a client tries to increase the capacity of multi-fragment string, perhaps a single
|
||||
* empty fragment of the appropriate size should be appended.
|
||||
*/
|
||||
void
|
||||
nsFragmentedString::SetCapacity( PRUint32 aNewCapacity )
|
||||
{
|
||||
if ( !aNewCapacity )
|
||||
{
|
||||
// |SetCapacity(0)| is special and means ``release all storage''.
|
||||
}
|
||||
else if ( aNewCapacity > ... )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -40,7 +40,7 @@
|
|||
#include "prprf.h"
|
||||
|
||||
|
||||
nsPrintfCString::nsPrintfCString( const char* format, ... )
|
||||
nsPrintfCString::nsPrintfCString( const char_type* format, ... )
|
||||
: mStart(mLocalBuffer),
|
||||
mLength(0)
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ nsPrintfCString::nsPrintfCString( const char* format, ... )
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
nsPrintfCString::nsPrintfCString( size_t n, const char* format, ... )
|
||||
nsPrintfCString::nsPrintfCString( size_t n, const char_type* format, ... )
|
||||
: mStart(mLocalBuffer),
|
||||
mLength(0)
|
||||
{
|
||||
|
@ -64,7 +64,7 @@ nsPrintfCString::nsPrintfCString( size_t n, const char* format, ... )
|
|||
size_t logical_capacity = kLocalBufferSize;
|
||||
if ( n > logical_capacity )
|
||||
{
|
||||
char* nonlocal_buffer = new char[n];
|
||||
char_type* nonlocal_buffer = new char_type[n];
|
||||
|
||||
// if we got something, use it
|
||||
if ( nonlocal_buffer )
|
||||
|
@ -96,7 +96,7 @@ nsPrintfCString::Length() const
|
|||
|
||||
#if 0
|
||||
PRBool
|
||||
nsPrintfCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest ) const
|
||||
nsPrintfCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -114,8 +114,8 @@ nsPrintfCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFra
|
|||
}
|
||||
}
|
||||
#else
|
||||
const char*
|
||||
nsPrintfCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsPrintfCString::char_type*
|
||||
nsPrintfCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "nsPromiseFlatString.h"
|
||||
|
||||
|
||||
nsPromiseFlatString::nsPromiseFlatString( const nsPromiseFlatString& aOther )
|
||||
nsPromiseFlatString::nsPromiseFlatString( const self_type& aOther )
|
||||
: mFlattenedString(aOther.mFlattenedString)
|
||||
{
|
||||
if ( aOther.mPromisedString == &aOther.mFlattenedString )
|
||||
|
@ -33,7 +33,7 @@ nsPromiseFlatString::nsPromiseFlatString( const nsPromiseFlatString& aOther )
|
|||
mPromisedString = aOther.mPromisedString;
|
||||
}
|
||||
|
||||
nsPromiseFlatString::nsPromiseFlatString( const nsAString& aString )
|
||||
nsPromiseFlatString::nsPromiseFlatString( const abstract_string_type& aString )
|
||||
{
|
||||
if ( aString.GetFlatBufferHandle() )
|
||||
mPromisedString = NS_STATIC_CAST(const nsAFlatString*, &aString);
|
||||
|
@ -44,31 +44,31 @@ nsPromiseFlatString::nsPromiseFlatString( const nsAString& aString )
|
|||
}
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsPromiseFlatString::buffer_handle_type*
|
||||
nsPromiseFlatString::GetFlatBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetFlatBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsPromiseFlatString::buffer_handle_type*
|
||||
nsPromiseFlatString::GetBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetBufferHandle();
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsPromiseFlatString::shared_buffer_handle_type*
|
||||
nsPromiseFlatString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsPromiseFlatString::IsDependentOn( const nsAString& aString ) const
|
||||
nsPromiseFlatString::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mPromisedString->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
const nsPromiseFlatString::char_type*
|
||||
nsPromiseFlatString::get() const
|
||||
{
|
||||
return mPromisedString->get();
|
||||
|
@ -80,15 +80,15 @@ nsPromiseFlatString::Length() const
|
|||
return mPromisedString->Length();
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
nsPromiseFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsPromiseFlatString::char_type*
|
||||
nsPromiseFlatString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
return mPromisedString->GetReadableFragment(aFragment, aRequest, aOffset);
|
||||
}
|
||||
|
||||
|
||||
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const nsPromiseFlatCString& aOther )
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const self_type& aOther )
|
||||
: mFlattenedString(aOther.mFlattenedString)
|
||||
{
|
||||
if ( aOther.mPromisedString == &aOther.mFlattenedString )
|
||||
|
@ -97,7 +97,7 @@ nsPromiseFlatCString::nsPromiseFlatCString( const nsPromiseFlatCString& aOther )
|
|||
mPromisedString = aOther.mPromisedString;
|
||||
}
|
||||
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const nsACString& aString )
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const abstract_string_type& aString )
|
||||
{
|
||||
if ( aString.GetFlatBufferHandle() )
|
||||
mPromisedString = NS_STATIC_CAST(const nsAFlatCString*, &aString);
|
||||
|
@ -108,31 +108,31 @@ nsPromiseFlatCString::nsPromiseFlatCString( const nsACString& aString )
|
|||
}
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsPromiseFlatCString::buffer_handle_type*
|
||||
nsPromiseFlatCString::GetFlatBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetFlatBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsPromiseFlatCString::buffer_handle_type*
|
||||
nsPromiseFlatCString::GetBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetBufferHandle();
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsPromiseFlatCString::shared_buffer_handle_type*
|
||||
nsPromiseFlatCString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsPromiseFlatCString::IsDependentOn( const nsACString& aString ) const
|
||||
nsPromiseFlatCString::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mPromisedString->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
const char*
|
||||
const nsPromiseFlatCString::char_type*
|
||||
nsPromiseFlatCString::get() const
|
||||
{
|
||||
return mPromisedString->get();
|
||||
|
@ -144,8 +144,8 @@ nsPromiseFlatCString::Length() const
|
|||
return mPromisedString->Length();
|
||||
}
|
||||
|
||||
const char*
|
||||
nsPromiseFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsPromiseFlatCString::char_type*
|
||||
nsPromiseFlatCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
return mPromisedString->GetReadableFragment(aFragment, aRequest, aOffset);
|
||||
}
|
||||
|
|
|
@ -27,30 +27,30 @@
|
|||
// #include "nsBufferHandleUtils.h"
|
||||
|
||||
void
|
||||
nsSharableString::assign( const string_type& aReadable )
|
||||
nsSharableString::assign( const abstract_string_type& aReadable )
|
||||
{
|
||||
const nsSharedBufferHandle<char_type>* handle = aReadable.GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = aReadable.GetSharedBufferHandle();
|
||||
if ( !handle )
|
||||
handle = NS_AllocateContiguousHandleWithData(handle, aReadable, PRUint32(1));
|
||||
mBuffer = handle;
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsSharableString::shared_buffer_handle_type*
|
||||
nsSharableString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mBuffer.get();
|
||||
}
|
||||
|
||||
void
|
||||
nsSharableCString::assign( const string_type& aReadable )
|
||||
nsSharableCString::assign( const abstract_string_type& aReadable )
|
||||
{
|
||||
const nsSharedBufferHandle<char_type>* handle = aReadable.GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = aReadable.GetSharedBufferHandle();
|
||||
if ( !handle )
|
||||
handle = NS_AllocateContiguousHandleWithData(handle, aReadable, PRUint32(1));
|
||||
mBuffer = handle;
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsSharableCString::shared_buffer_handle_type*
|
||||
nsSharableCString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mBuffer.get();
|
||||
|
|
|
@ -72,7 +72,7 @@ nsImportedStringHandle<CharT>::RecalculateBoundaries() const
|
|||
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsXPIDLString::buffer_handle_type*
|
||||
nsXPIDLString::GetFlatBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -80,7 +80,7 @@ nsXPIDLString::GetFlatBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsXPIDLString::buffer_handle_type*
|
||||
nsXPIDLString::GetBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -97,10 +97,10 @@ nsXPIDLString::DebugPrintStats( FILE* aOutFile )
|
|||
#endif
|
||||
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsXPIDLString::shared_buffer_handle_type*
|
||||
nsXPIDLString::GetSharedBufferHandle() const
|
||||
{
|
||||
const nsImportedStringHandle<PRUnichar>* answer = NS_STATIC_CAST(const nsImportedStringHandle<PRUnichar>*, mBuffer.get());
|
||||
const nsImportedStringHandle<char_type>* answer = NS_STATIC_CAST(const nsImportedStringHandle<char_type>*, mBuffer.get());
|
||||
|
||||
if ( answer && !answer->DataEnd() && answer->StorageStart() )
|
||||
answer->RecalculateBoundaries();
|
||||
|
@ -112,10 +112,10 @@ nsXPIDLString::GetSharedBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
PRUnichar**
|
||||
nsXPIDLString::char_type**
|
||||
nsXPIDLString::PrepareForUseAsOutParam()
|
||||
{
|
||||
nsImportedStringHandle<PRUnichar>* handle = new nsImportedStringHandle<PRUnichar>();
|
||||
nsImportedStringHandle<char_type>* handle = new nsImportedStringHandle<char_type>();
|
||||
NS_ASSERTION(handle, "Trouble! We couldn't get a new handle during |getter_Copies|.");
|
||||
|
||||
mBuffer = handle;
|
||||
|
@ -127,7 +127,7 @@ nsXPIDLString::PrepareForUseAsOutParam()
|
|||
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
const nsBufferHandle<char>*
|
||||
const nsXPIDLCString::buffer_handle_type*
|
||||
nsXPIDLCString::GetFlatBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -135,7 +135,7 @@ nsXPIDLCString::GetFlatBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsXPIDLCString::buffer_handle_type*
|
||||
nsXPIDLCString::GetBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -152,10 +152,10 @@ nsXPIDLCString::DebugPrintStats( FILE* aOutFile )
|
|||
#endif
|
||||
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsXPIDLCString::shared_buffer_handle_type*
|
||||
nsXPIDLCString::GetSharedBufferHandle() const
|
||||
{
|
||||
const nsImportedStringHandle<char>* answer = NS_STATIC_CAST(const nsImportedStringHandle<char>*, mBuffer.get());
|
||||
const nsImportedStringHandle<char_type>* answer = NS_STATIC_CAST(const nsImportedStringHandle<char_type>*, mBuffer.get());
|
||||
|
||||
if ( answer && !answer->DataEnd() && answer->StorageStart() )
|
||||
answer->RecalculateBoundaries();
|
||||
|
@ -167,10 +167,10 @@ nsXPIDLCString::GetSharedBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
char**
|
||||
nsXPIDLCString::char_type**
|
||||
nsXPIDLCString::PrepareForUseAsOutParam()
|
||||
{
|
||||
nsImportedStringHandle<char>* handle = new nsImportedStringHandle<char>();
|
||||
nsImportedStringHandle<char_type>* handle = new nsImportedStringHandle<char_type>();
|
||||
NS_ASSERTION(handle, "Trouble! We couldn't get a new handle during |getter_Copies|.");
|
||||
|
||||
mBuffer = handle;
|
||||
|
|
|
@ -35,16 +35,16 @@ class NS_COM nsAFlatString
|
|||
{
|
||||
public:
|
||||
// don't really want this to be virtual, and won't after |obsolete_nsString| is really dead
|
||||
virtual const PRUnichar* get() const;
|
||||
PRUnichar operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
PRUnichar CharAt( PRUint32 ) const;
|
||||
virtual const char_type* get() const;
|
||||
char_type operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
char_type CharAt( PRUint32 ) const;
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
// protected: // can't hide these (yet), since I call them from forwarding routines in |nsPromiseFlatString|
|
||||
public:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual PRUnichar* GetWritableFragment( nsWritableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 );
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 );
|
||||
};
|
||||
|
||||
class NS_COM nsAFlatCString
|
||||
|
@ -52,20 +52,20 @@ class NS_COM nsAFlatCString
|
|||
{
|
||||
public:
|
||||
// don't really want this to be virtual, and won't after |obsolete_nsCString| is really dead
|
||||
virtual const char* get() const;
|
||||
char operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
char CharAt( PRUint32 ) const;
|
||||
virtual const char_type* get() const;
|
||||
char_type operator[]( PRUint32 i ) const { return get()[ i ]; }
|
||||
char_type CharAt( PRUint32 ) const;
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
// protected: // can't hide these (yet), since I call them from forwarding routines in |nsPromiseFlatCString|
|
||||
public:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char* GetWritableFragment( nsWritableFragment<char>&, nsFragmentRequest, PRUint32 );
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 );
|
||||
};
|
||||
|
||||
inline
|
||||
PRUnichar
|
||||
nsAFlatString::char_type
|
||||
nsAFlatString::CharAt( PRUint32 i ) const
|
||||
{
|
||||
NS_ASSERTION(i<Length(), "|CharAt| out-of-range");
|
||||
|
@ -73,7 +73,7 @@ nsAFlatString::CharAt( PRUint32 i ) const
|
|||
}
|
||||
|
||||
inline
|
||||
char
|
||||
nsAFlatCString::char_type
|
||||
nsAFlatCString::CharAt( PRUint32 i ) const
|
||||
{
|
||||
NS_ASSERTION(i<Length(), "|CharAt| out-of-range");
|
||||
|
|
|
@ -48,30 +48,38 @@
|
|||
class NS_COM nsAString
|
||||
{
|
||||
public:
|
||||
typedef nsAString self_type;
|
||||
typedef nsAPromiseString promise_type;
|
||||
typedef PRUnichar char_type;
|
||||
typedef char incompatible_char_type;
|
||||
|
||||
typedef nsBufferHandle<char_type> buffer_handle_type;
|
||||
typedef nsConstBufferHandle<char_type> const_buffer_handle_type;
|
||||
typedef nsSharedBufferHandle<char_type> shared_buffer_handle_type;
|
||||
|
||||
typedef nsReadableFragment<char_type> const_fragment_type;
|
||||
typedef nsWritableFragment<char_type> fragment_type;
|
||||
|
||||
typedef nsAString self_type;
|
||||
typedef nsAString abstract_string_type;
|
||||
|
||||
typedef nsReadingIterator<char_type> const_iterator;
|
||||
typedef nsWritingIterator<char_type> iterator;
|
||||
|
||||
typedef nsAPromiseString promise_type;
|
||||
|
||||
typedef PRUint32 size_type;
|
||||
typedef PRUint32 index_type;
|
||||
|
||||
|
||||
|
||||
|
||||
public:
|
||||
// nsAString(); // auto-generated default constructor OK (we're abstract anyway)
|
||||
// nsAString( const self_type& ); // auto-generated copy-constructor OK (again, only because we're abstract)
|
||||
virtual ~nsAString() { } // ...yes, I expect to be sub-classed
|
||||
|
||||
|
||||
virtual PRUint32 GetImplementationFlags() const;
|
||||
virtual const nsBufferHandle<char_type>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char_type>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
/**
|
||||
* |GetBufferHandle()| will return either |0|, or a reasonable pointer.
|
||||
|
@ -285,23 +293,32 @@ class NS_COM nsAString
|
|||
|
||||
// protected:
|
||||
public:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual PRBool IsDependentOn( const self_type& aString ) const { return &aString == this; }
|
||||
};
|
||||
|
||||
class NS_COM nsACString
|
||||
{
|
||||
public:
|
||||
typedef nsACString self_type;
|
||||
typedef nsAPromiseCString promise_type;
|
||||
typedef char char_type;
|
||||
typedef PRUnichar incompatible_char_type;
|
||||
|
||||
typedef nsBufferHandle<char_type> buffer_handle_type;
|
||||
typedef nsConstBufferHandle<char_type> const_buffer_handle_type;
|
||||
typedef nsSharedBufferHandle<char_type> shared_buffer_handle_type;
|
||||
|
||||
typedef nsReadableFragment<char_type> const_fragment_type;
|
||||
typedef nsWritableFragment<char_type> fragment_type;
|
||||
|
||||
typedef nsACString self_type;
|
||||
typedef nsACString abstract_string_type;
|
||||
|
||||
typedef nsReadingIterator<char_type> const_iterator;
|
||||
typedef nsWritingIterator<char_type> iterator;
|
||||
|
||||
typedef nsAPromiseCString promise_type;
|
||||
|
||||
typedef PRUint32 size_type;
|
||||
typedef PRUint32 index_type;
|
||||
|
||||
|
@ -314,9 +331,9 @@ class NS_COM nsACString
|
|||
|
||||
|
||||
virtual PRUint32 GetImplementationFlags() const;
|
||||
virtual const nsBufferHandle<char_type>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char_type>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
/**
|
||||
* |GetBufferHandle()| will return either |0|, or a reasonable pointer.
|
||||
|
@ -530,8 +547,8 @@ class NS_COM nsACString
|
|||
|
||||
// protected:
|
||||
public:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 = 0 ) const = 0;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 = 0 ) = 0;
|
||||
virtual PRBool IsDependentOn( const self_type& aString ) const { return &aString == this; }
|
||||
};
|
||||
|
||||
|
@ -631,21 +648,23 @@ nsAString::EndWriting( iterator& aResult )
|
|||
class NS_COM nsStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const = 0;
|
||||
typedef nsAString::char_type char_type;
|
||||
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const = 0;
|
||||
};
|
||||
|
||||
class NS_COM nsDefaultStringComparator
|
||||
: public nsStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
class NS_COM nsCaseInsensitiveStringComparator
|
||||
: public nsStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const PRUnichar*, const PRUnichar*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
NS_COM int Compare( const nsAString& lhs, const nsAString& rhs, const nsStringComparator& = nsDefaultStringComparator() );
|
||||
|
@ -760,21 +779,23 @@ nsACString::EndWriting( iterator& aResult )
|
|||
class NS_COM nsCStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const char*, const char*, PRUint32 aLength ) const = 0;
|
||||
typedef nsACString::char_type char_type;
|
||||
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const = 0;
|
||||
};
|
||||
|
||||
class NS_COM nsDefaultCStringComparator
|
||||
: public nsCStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const char*, const char*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
class NS_COM nsCaseInsensitiveCStringComparator
|
||||
: public nsCStringComparator
|
||||
{
|
||||
public:
|
||||
virtual int operator()( const char*, const char*, PRUint32 aLength ) const;
|
||||
virtual int operator()( const char_type*, const char_type*, PRUint32 aLength ) const;
|
||||
};
|
||||
|
||||
NS_COM int Compare( const nsACString& lhs, const nsACString& rhs, const nsCStringComparator& = nsDefaultCStringComparator() );
|
||||
|
|
|
@ -52,49 +52,46 @@ class NS_COM nsDependentConcatenation
|
|||
{
|
||||
public:
|
||||
typedef nsDependentConcatenation self_type;
|
||||
typedef PRUnichar char_type;
|
||||
typedef nsAString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
|
||||
protected:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
enum { kLeftString, kRightString };
|
||||
enum { kFirstString, kLastString };
|
||||
|
||||
int
|
||||
GetCurrentStringFromFragment( const nsReadableFragment<char_type>& aFragment ) const
|
||||
GetCurrentStringFromFragment( const const_fragment_type& aFragment ) const
|
||||
{
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kRightString : kLeftString;
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kLastString : kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetLeftStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetFirstStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() & ~mFragmentIdentifierMask);
|
||||
return kLeftString;
|
||||
return kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetRightStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetLastStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() | mFragmentIdentifierMask);
|
||||
return kRightString;
|
||||
return kLastString;
|
||||
}
|
||||
|
||||
public:
|
||||
nsDependentConcatenation( const string_type& aLeftString, const string_type& aRightString, PRUint32 aMask = 1 )
|
||||
nsDependentConcatenation( const abstract_string_type& aFirstString, const abstract_string_type& aLastString, PRUint32 aMask = 1 )
|
||||
: mFragmentIdentifierMask(aMask)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
nsDependentConcatenation( const self_type& aLeftString, const string_type& aRightString )
|
||||
: mFragmentIdentifierMask(aLeftString.mFragmentIdentifierMask<<1)
|
||||
nsDependentConcatenation( const self_type& aFirstString, const abstract_string_type& aLastString )
|
||||
: mFragmentIdentifierMask(aFirstString.mFragmentIdentifierMask<<1)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
// nsDependentConcatenation( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
|
@ -107,10 +104,10 @@ class NS_COM nsDependentConcatenation
|
|||
public:
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const string_type& ) const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const abstract_string_type& ) const;
|
||||
|
||||
// const self_type operator+( const string_type& rhs ) const;
|
||||
// const self_type operator+( const abstract_string_type& rhs ) const;
|
||||
|
||||
PRUint32 GetFragmentIdentifierMask() const { return mFragmentIdentifierMask; }
|
||||
|
||||
|
@ -120,7 +117,7 @@ class NS_COM nsDependentConcatenation
|
|||
// which would break the algorithm for distributing bits in the fragment identifier
|
||||
|
||||
private:
|
||||
const string_type* mStrings[2];
|
||||
const abstract_string_type* mStrings[2];
|
||||
PRUint32 mFragmentIdentifierMask;
|
||||
};
|
||||
|
||||
|
@ -129,49 +126,46 @@ class NS_COM nsDependentCConcatenation
|
|||
{
|
||||
public:
|
||||
typedef nsDependentCConcatenation self_type;
|
||||
typedef char char_type;
|
||||
typedef nsACString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
|
||||
protected:
|
||||
virtual const char_type* GetReadableFragment( nsReadableFragment<char_type>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( nsWritableFragment<char_type>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
enum { kLeftString, kRightString };
|
||||
enum { kFirstString, kLastString };
|
||||
|
||||
int
|
||||
GetCurrentStringFromFragment( const nsReadableFragment<char_type>& aFragment ) const
|
||||
GetCurrentStringFromFragment( const const_fragment_type& aFragment ) const
|
||||
{
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kRightString : kLeftString;
|
||||
return (aFragment.GetIDAsInt() & mFragmentIdentifierMask) ? kLastString : kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetLeftStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetFirstStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() & ~mFragmentIdentifierMask);
|
||||
return kLeftString;
|
||||
return kFirstString;
|
||||
}
|
||||
|
||||
int
|
||||
SetRightStringInFragment( nsReadableFragment<char_type>& aFragment ) const
|
||||
SetLastStringInFragment( const_fragment_type& aFragment ) const
|
||||
{
|
||||
aFragment.SetID(aFragment.GetIDAsInt() | mFragmentIdentifierMask);
|
||||
return kRightString;
|
||||
return kLastString;
|
||||
}
|
||||
|
||||
public:
|
||||
nsDependentCConcatenation( const string_type& aLeftString, const string_type& aRightString, PRUint32 aMask = 1 )
|
||||
nsDependentCConcatenation( const abstract_string_type& aFirstString, const abstract_string_type& aLastString, PRUint32 aMask = 1 )
|
||||
: mFragmentIdentifierMask(aMask)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
nsDependentCConcatenation( const self_type& aLeftString, const string_type& aRightString )
|
||||
: mFragmentIdentifierMask(aLeftString.mFragmentIdentifierMask<<1)
|
||||
nsDependentCConcatenation( const self_type& aFirstString, const abstract_string_type& aLastString )
|
||||
: mFragmentIdentifierMask(aFirstString.mFragmentIdentifierMask<<1)
|
||||
{
|
||||
mStrings[kLeftString] = &aLeftString;
|
||||
mStrings[kRightString] = &aRightString;
|
||||
mStrings[kFirstString] = &aFirstString;
|
||||
mStrings[kLastString] = &aLastString;
|
||||
}
|
||||
|
||||
// nsDependentCConcatenation( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
|
@ -184,10 +178,10 @@ class NS_COM nsDependentCConcatenation
|
|||
public:
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const string_type& ) const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
// virtual PRBool PromisesExactly( const abstract_string_type& ) const;
|
||||
|
||||
// const self_type operator+( const string_type& rhs ) const;
|
||||
// const self_type operator+( const abstract_string_type& rhs ) const;
|
||||
|
||||
PRUint32 GetFragmentIdentifierMask() const { return mFragmentIdentifierMask; }
|
||||
|
||||
|
@ -197,7 +191,7 @@ class NS_COM nsDependentCConcatenation
|
|||
// which would break the algorithm for distributing bits in the fragment identifier
|
||||
|
||||
private:
|
||||
const string_type* mStrings[2];
|
||||
const abstract_string_type* mStrings[2];
|
||||
PRUint32 mFragmentIdentifierMask;
|
||||
};
|
||||
|
||||
|
@ -252,14 +246,14 @@ operator+( const nsACString& lhs, const nsACString& rhs )
|
|||
#if 0
|
||||
inline
|
||||
const nsDependentConcatenation
|
||||
nsDependentConcatenation::operator+( const string_type& rhs ) const
|
||||
nsDependentConcatenation::operator+( const abstract_string_type& rhs ) const
|
||||
{
|
||||
return nsDependentConcatenation(*this, rhs, mFragmentIdentifierMask<<1);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentCConcatenation
|
||||
nsDependentCConcatenation::operator+( const string_type& rhs ) const
|
||||
nsDependentCConcatenation::operator+( const abstract_string_type& rhs ) const
|
||||
{
|
||||
return nsDependentCConcatenation(*this, rhs, mFragmentIdentifierMask<<1);
|
||||
}
|
||||
|
|
|
@ -46,22 +46,24 @@ class NS_COM nsDependentString
|
|||
: public nsAFlatString
|
||||
{
|
||||
public:
|
||||
typedef nsDependentString self_type;
|
||||
|
||||
void
|
||||
Rebind( const PRUnichar* aPtr )
|
||||
Rebind( const char_type* aPtr )
|
||||
{
|
||||
mHandle.DataStart(aPtr);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<PRUnichar>::length(aPtr)) : 0);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<char_type>::length(aPtr)) : 0);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const PRUnichar* aStartPtr, const PRUnichar* aEndPtr )
|
||||
Rebind( const char_type* aStartPtr, const char_type* aEndPtr )
|
||||
{
|
||||
mHandle.DataStart(aStartPtr);
|
||||
mHandle.DataEnd(aEndPtr);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const PRUnichar* aPtr, PRUint32 aLength )
|
||||
Rebind( const char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
if ( aLength == PRUint32(-1) )
|
||||
{
|
||||
|
@ -72,23 +74,23 @@ class NS_COM nsDependentString
|
|||
Rebind(aPtr, aPtr+aLength);
|
||||
}
|
||||
|
||||
nsDependentString( const PRUnichar* aStartPtr, const PRUnichar* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentString( const PRUnichar* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentString( const PRUnichar* aPtr ) { Rebind(aPtr); }
|
||||
nsDependentString( const char_type* aStartPtr, const char_type* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentString( const char_type* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentString( const char_type* aPtr ) { Rebind(aPtr); }
|
||||
|
||||
// nsDependentString( const nsDependentString& ); // auto-generated copy-constructor OK
|
||||
// nsDependentString( const self_type& ); // auto-generated copy-constructor OK
|
||||
// ~nsDependentString(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentString& ); // we're immutable, so no copy-assignment operator
|
||||
void operator=( const self_type& ); // we're immutable, so no copy-assignment operator
|
||||
|
||||
public:
|
||||
virtual const nsBufferHandle<PRUnichar>* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<PRUnichar>*, &mHandle); }
|
||||
virtual const nsBufferHandle<PRUnichar>* GetBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<PRUnichar>*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
|
||||
private:
|
||||
nsConstBufferHandle<PRUnichar> mHandle;
|
||||
const_buffer_handle_type mHandle;
|
||||
};
|
||||
|
||||
|
||||
|
@ -97,22 +99,24 @@ class NS_COM nsDependentCString
|
|||
: public nsAFlatCString
|
||||
{
|
||||
public:
|
||||
typedef nsDependentCString self_type;
|
||||
|
||||
void
|
||||
Rebind( const char* aPtr )
|
||||
Rebind( const char_type* aPtr )
|
||||
{
|
||||
mHandle.DataStart(aPtr);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<char>::length(aPtr)) : 0);
|
||||
mHandle.DataEnd(aPtr ? (aPtr+nsCharTraits<char_type>::length(aPtr)) : 0);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const char* aStartPtr, const char* aEndPtr )
|
||||
Rebind( const char_type* aStartPtr, const char_type* aEndPtr )
|
||||
{
|
||||
mHandle.DataStart(aStartPtr);
|
||||
mHandle.DataEnd(aEndPtr);
|
||||
}
|
||||
|
||||
void
|
||||
Rebind( const char* aPtr, PRUint32 aLength )
|
||||
Rebind( const char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
if ( aLength == PRUint32(-1) )
|
||||
{
|
||||
|
@ -123,23 +127,23 @@ class NS_COM nsDependentCString
|
|||
Rebind(aPtr, aPtr+aLength);
|
||||
}
|
||||
|
||||
nsDependentCString( const char* aStartPtr, const char* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentCString( const char* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentCString( const char* aPtr ) { Rebind(aPtr); }
|
||||
nsDependentCString( const char_type* aStartPtr, const char_type* aEndPtr ) { Rebind(aStartPtr, aEndPtr); }
|
||||
nsDependentCString( const char_type* aPtr, PRUint32 aLength ) { Rebind(aPtr, aLength); }
|
||||
explicit nsDependentCString( const char_type* aPtr ) { Rebind(aPtr); }
|
||||
|
||||
// nsDependentCString( const nsDependentCString& ); // auto-generated copy-constructor OK
|
||||
// nsDependentCString( const self_type& ); // auto-generated copy-constructor OK
|
||||
// ~nsDependentCString(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentCString& ); // we're immutable, so no copy-assignment operator
|
||||
void operator=( const self_type& ); // we're immutable, so no copy-assignment operator
|
||||
|
||||
public:
|
||||
virtual const nsBufferHandle<char>* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<char>*, &mHandle); }
|
||||
virtual const nsBufferHandle<char>* GetBufferHandle() const { return NS_REINTERPRET_CAST(const nsBufferHandle<char>*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
virtual const buffer_handle_type* GetBufferHandle() const { return NS_REINTERPRET_CAST(const buffer_handle_type*, &mHandle); }
|
||||
|
||||
private:
|
||||
nsConstBufferHandle<char> mHandle;
|
||||
const_buffer_handle_type mHandle;
|
||||
};
|
||||
|
||||
#endif /* !defined(nsDependentString_h___) */
|
||||
|
|
|
@ -49,15 +49,15 @@ class NS_COM nsDependentSubstring
|
|||
calls to |GetReadableFragment()|.
|
||||
*/
|
||||
{
|
||||
typedef nsAString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
public:
|
||||
typedef nsDependentSubstring self_type;
|
||||
|
||||
protected:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual PRUnichar* GetWritableFragment( nsWritableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
public:
|
||||
nsDependentSubstring( const string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
nsDependentSubstring( const abstract_string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
: mString(aString),
|
||||
mStartPos( NS_MIN(aStartPos, aString.Length()) ),
|
||||
mLength( NS_MIN(aLength, aString.Length()-mStartPos) )
|
||||
|
@ -74,19 +74,19 @@ class NS_COM nsDependentSubstring
|
|||
mLength = Distance(aStart, aEnd);
|
||||
}
|
||||
|
||||
// nsDependentSubstring( const nsDependentSubstring& ); // auto-generated copy-constructor should be OK
|
||||
// nsDependentSubstring( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
// ~nsDependentSubstring(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentSubstring& ); // we're immutable, you can't assign into a substring
|
||||
void operator=( const self_type& ); // we're immutable, you can't assign into a substring
|
||||
|
||||
public:
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
|
||||
private:
|
||||
const string_type& mString;
|
||||
const abstract_string_type& mString;
|
||||
PRUint32 mStartPos;
|
||||
PRUint32 mLength;
|
||||
};
|
||||
|
@ -102,15 +102,15 @@ class NS_COM nsDependentCSubstring
|
|||
calls to |GetReadableFragment()|.
|
||||
*/
|
||||
{
|
||||
typedef nsACString string_type;
|
||||
typedef string_type::const_iterator const_iterator;
|
||||
public:
|
||||
typedef nsDependentCSubstring self_type;
|
||||
|
||||
protected:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char* GetWritableFragment( nsWritableFragment<char>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
|
||||
public:
|
||||
nsDependentCSubstring( const string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
nsDependentCSubstring( const abstract_string_type& aString, PRUint32 aStartPos, PRUint32 aLength )
|
||||
: mString(aString),
|
||||
mStartPos( NS_MIN(aStartPos, aString.Length()) ),
|
||||
mLength( NS_MIN(aLength, aString.Length()-mStartPos) )
|
||||
|
@ -127,19 +127,19 @@ class NS_COM nsDependentCSubstring
|
|||
mLength = Distance(aStart, aEnd);
|
||||
}
|
||||
|
||||
// nsDependentCSubstring( const nsDependentCSubstring& ); // auto-generated copy-constructor should be OK
|
||||
// nsDependentCSubstring( const self_type& ); // auto-generated copy-constructor should be OK
|
||||
// ~nsDependentCSubstring(); // auto-generated destructor OK
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsDependentCSubstring& ); // we're immutable, you can't assign into a substring
|
||||
void operator=( const self_type& ); // we're immutable, you can't assign into a substring
|
||||
|
||||
public:
|
||||
virtual PRUint32 Length() const;
|
||||
virtual PRBool IsDependentOn( const string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& aString ) const { return mString.IsDependentOn(aString); }
|
||||
|
||||
private:
|
||||
const string_type& mString;
|
||||
const abstract_string_type& mString;
|
||||
PRUint32 mStartPos;
|
||||
PRUint32 mLength;
|
||||
};
|
||||
|
|
|
@ -1,69 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla XPCOM.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Contributor(s):
|
||||
* Scott Collins <scc@mozilla.org> (original author)
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef nsFragmentedString_h___
|
||||
#define nsFragmentedString_h___
|
||||
|
||||
// WORK IN PROGRESS
|
||||
|
||||
#ifndef nsAString_h___
|
||||
#include "nsAString.h"
|
||||
#endif
|
||||
|
||||
#ifndef nsSharedBufferList_h___
|
||||
#include "nsSharedBufferList.h"
|
||||
#endif
|
||||
|
||||
|
||||
class nsFragmentedString
|
||||
: public nsAString
|
||||
/*
|
||||
...
|
||||
*/
|
||||
{
|
||||
protected:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual PRUnichar* GetWritableFragment( nsWritableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 );
|
||||
|
||||
public:
|
||||
nsFragmentedString() { }
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
virtual void SetLength( PRUint32 aNewLength );
|
||||
// virtual void SetCapacity( PRUint32 aNewCapacity );
|
||||
|
||||
// virtual void Cut( PRUint32 cutStart, PRUint32 cutLength );
|
||||
|
||||
protected:
|
||||
// virtual void do_AssignFromReadable( const nsAString& );
|
||||
// virtual void do_AppendFromReadable( const nsAString& );
|
||||
// virtual void do_InsertFromReadable( const nsAString&, PRUint32 );
|
||||
// virtual void do_ReplaceFromReadable( PRUint32, PRUint32, const nsAString& );
|
||||
|
||||
private:
|
||||
nsSharedBufferList mBufferList;
|
||||
};
|
||||
|
||||
#endif // !defined(nsFragmentedString_h___)
|
|
@ -36,28 +36,28 @@
|
|||
#if 0
|
||||
inline
|
||||
const nsDependentString
|
||||
literal_string( const PRUnichar* aPtr )
|
||||
literal_string( const nsAString::char_type* aPtr )
|
||||
{
|
||||
return nsDependentString(aPtr);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentString
|
||||
literal_string( const PRUnichar* aPtr, PRUint32 aLength )
|
||||
literal_string( const nsAString::char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
return nsDependentString(aPtr, aLength);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentCString
|
||||
literal_string( const char* aPtr )
|
||||
literal_string( const nsACString::char_type* aPtr )
|
||||
{
|
||||
return nsDependentCString(aPtr);
|
||||
}
|
||||
|
||||
inline
|
||||
const nsDependentCString
|
||||
literal_string( const char* aPtr, PRUint32 aLength )
|
||||
literal_string( const nsACString::char_type* aPtr, PRUint32 aLength )
|
||||
{
|
||||
return nsDependentCString(aPtr, aLength);
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ literal_string( const char* aPtr, PRUint32 aLength )
|
|||
|
||||
#ifdef HAVE_CPP_2BYTE_WCHAR_T
|
||||
#define NS_L(s) L##s
|
||||
#define NS_MULTILINE_LITERAL_STRING(s) nsDependentString(NS_REINTERPRET_CAST(const PRUnichar*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#define NS_NAMED_MULTILINE_LITERAL_STRING(n,s) nsDependentString n(NS_REINTERPRET_CAST(const PRUnichar*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#define NS_MULTILINE_LITERAL_STRING(s) nsDependentString(NS_REINTERPRET_CAST(const nsAString::char_type*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#define NS_NAMED_MULTILINE_LITERAL_STRING(n,s) nsDependentString n(NS_REINTERPRET_CAST(const nsAString::char_type*, s), PRUint32((sizeof(s)/sizeof(wchar_t))-1))
|
||||
#else
|
||||
#define NS_L(s) s
|
||||
#define NS_MULTILINE_LITERAL_STRING(s) NS_ConvertASCIItoUCS2(s, PRUint32(sizeof(s)-1))
|
||||
|
|
|
@ -76,21 +76,21 @@ class NS_COM nsPrintfCString
|
|||
|
||||
|
||||
public:
|
||||
explicit nsPrintfCString( const char* format, ... );
|
||||
nsPrintfCString( size_t n, const char* format, ...);
|
||||
explicit nsPrintfCString( const char_type* format, ... );
|
||||
nsPrintfCString( size_t n, const char_type* format, ...);
|
||||
~nsPrintfCString();
|
||||
|
||||
virtual PRUint32 Length() const;
|
||||
|
||||
protected:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char* GetWritableFragment( nsWritableFragment<char>&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
// virtual PRBool GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest ) const;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual char_type* GetWritableFragment( fragment_type&, nsFragmentRequest, PRUint32 ) { return 0; }
|
||||
// virtual PRBool GetReadableFragment( const_fragment_type&, nsFragmentRequest ) const;
|
||||
|
||||
private:
|
||||
char* mStart;
|
||||
char_type* mStart;
|
||||
PRUint32 mLength;
|
||||
char mLocalBuffer[ kLocalBufferSize + 1 ];
|
||||
char_type mLocalBuffer[ kLocalBufferSize + 1 ];
|
||||
};
|
||||
|
||||
#endif // !defined(nsPrintfCString_h___)
|
||||
|
|
|
@ -83,28 +83,31 @@
|
|||
class NS_COM nsPromiseFlatString
|
||||
: public nsAFlatString /* , public nsAPromiseString */
|
||||
{
|
||||
friend const nsPromiseFlatString PromiseFlatString( const nsAString& );
|
||||
friend const nsPromiseFlatString PromiseFlatString( const abstract_string_type& );
|
||||
|
||||
public:
|
||||
nsPromiseFlatString( const nsPromiseFlatString& );
|
||||
typedef nsPromiseFlatString self_type;
|
||||
|
||||
public:
|
||||
nsPromiseFlatString( const self_type& );
|
||||
|
||||
protected:
|
||||
nsPromiseFlatString() : mPromisedString(&mFlattenedString) { }
|
||||
explicit nsPromiseFlatString( const nsAString& aString );
|
||||
explicit nsPromiseFlatString( const abstract_string_type& aString );
|
||||
|
||||
// things we want to forward to the string we are promising
|
||||
virtual const nsBufferHandle<PRUnichar>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<PRUnichar>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<PRUnichar>* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const nsAString& ) const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
|
||||
|
||||
// things we are forwarding now, but won't when we finally fix obsolete/nsString et al
|
||||
public:
|
||||
virtual const PRUnichar* get() const;
|
||||
virtual const char_type* get() const;
|
||||
virtual PRUint32 Length() const;
|
||||
protected:
|
||||
virtual const PRUnichar* GetReadableFragment( nsReadableFragment<PRUnichar>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
|
||||
|
||||
private:
|
||||
|
@ -119,33 +122,36 @@ class NS_COM nsPromiseFlatString
|
|||
class NS_COM nsPromiseFlatCString
|
||||
: public nsAFlatCString /* , public nsAPromiseCString */
|
||||
{
|
||||
friend const nsPromiseFlatCString PromiseFlatCString( const nsACString& );
|
||||
friend const nsPromiseFlatCString PromiseFlatCString( const abstract_string_type& );
|
||||
|
||||
public:
|
||||
nsPromiseFlatCString( const nsPromiseFlatCString& );
|
||||
typedef nsPromiseFlatCString self_type;
|
||||
|
||||
public:
|
||||
nsPromiseFlatCString( const self_type& );
|
||||
|
||||
protected:
|
||||
nsPromiseFlatCString() : mPromisedString(&mFlattenedString) { }
|
||||
explicit nsPromiseFlatCString( const nsACString& aString );
|
||||
explicit nsPromiseFlatCString( const abstract_string_type& aString );
|
||||
|
||||
// things we want to forward to the string we are promising
|
||||
virtual const nsBufferHandle<char>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char>* GetBufferHandle() const;
|
||||
virtual const nsSharedBufferHandle<char>* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const nsACString& ) const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
virtual PRBool IsDependentOn( const abstract_string_type& ) const;
|
||||
|
||||
|
||||
// things we are forwarding now, but won't when we finally fix obsolete/nsString et al
|
||||
public:
|
||||
virtual const char* get() const;
|
||||
virtual const char_type* get() const;
|
||||
virtual PRUint32 Length() const;
|
||||
protected:
|
||||
virtual const char* GetReadableFragment( nsReadableFragment<char>&, nsFragmentRequest, PRUint32 ) const;
|
||||
virtual const char_type* GetReadableFragment( const_fragment_type&, nsFragmentRequest, PRUint32 ) const;
|
||||
|
||||
|
||||
private:
|
||||
// NOT TO BE IMPLEMENTED
|
||||
void operator=( const nsPromiseFlatCString& );
|
||||
void operator=( const self_type& );
|
||||
|
||||
private:
|
||||
nsSharableCString mFlattenedString;
|
||||
|
|
|
@ -46,25 +46,23 @@ class NS_COM nsSharableString
|
|||
{
|
||||
public:
|
||||
typedef nsSharableString self_type;
|
||||
typedef PRUnichar char_type;
|
||||
typedef nsAString string_type;
|
||||
|
||||
public:
|
||||
nsSharableString() { }
|
||||
nsSharableString( const self_type& aOther ) : mBuffer(aOther.mBuffer) { }
|
||||
explicit nsSharableString( const string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableString( const nsSharedBufferHandle<char_type>* aHandle ) : mBuffer(aHandle) { }
|
||||
explicit nsSharableString( const abstract_string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableString( const shared_buffer_handle_type* aHandle ) : mBuffer(aHandle) { }
|
||||
|
||||
self_type&
|
||||
operator=( const string_type& aReadable )
|
||||
operator=( const abstract_string_type& aReadable )
|
||||
{
|
||||
assign(aReadable);
|
||||
return *this;
|
||||
}
|
||||
|
||||
protected:
|
||||
void assign( const string_type& );
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
void assign( const abstract_string_type& );
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
protected:
|
||||
nsAutoBufferHandle<char_type> mBuffer;
|
||||
|
@ -76,25 +74,23 @@ class NS_COM nsSharableCString
|
|||
{
|
||||
public:
|
||||
typedef nsSharableCString self_type;
|
||||
typedef char char_type;
|
||||
typedef nsACString string_type;
|
||||
|
||||
public:
|
||||
nsSharableCString() { }
|
||||
nsSharableCString( const self_type& aOther ) : mBuffer(aOther.mBuffer) { }
|
||||
explicit nsSharableCString( const string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableCString( const nsSharedBufferHandle<char_type>* aHandle ) : mBuffer(aHandle) { }
|
||||
explicit nsSharableCString( const abstract_string_type& aReadable ) { assign(aReadable); }
|
||||
explicit nsSharableCString( const shared_buffer_handle_type* aHandle ) : mBuffer(aHandle) { }
|
||||
|
||||
self_type&
|
||||
operator=( const string_type& aReadable )
|
||||
operator=( const abstract_string_type& aReadable )
|
||||
{
|
||||
assign(aReadable);
|
||||
return *this;
|
||||
}
|
||||
|
||||
protected:
|
||||
void assign( const string_type& );
|
||||
virtual const nsSharedBufferHandle<char_type>* GetSharedBufferHandle() const;
|
||||
void assign( const abstract_string_type& );
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
|
||||
protected:
|
||||
nsAutoBufferHandle<char_type> mBuffer;
|
||||
|
|
|
@ -63,14 +63,17 @@ class nsReadingIterator
|
|||
typedef const CharT& reference;
|
||||
// typedef bidirectional_iterator_tag iterator_category;
|
||||
|
||||
typedef nsReadableFragment<CharT> const_fragment_type;
|
||||
typedef nsWritableFragment<CharT> fragment_type;
|
||||
|
||||
private:
|
||||
friend class nsAString;
|
||||
friend class nsACString;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type string_type;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type abstract_string_type;
|
||||
|
||||
nsReadableFragment<CharT> mFragment;
|
||||
const_fragment_type mFragment;
|
||||
const CharT* mPosition;
|
||||
const string_type* mOwningString;
|
||||
const abstract_string_type* mOwningString;
|
||||
|
||||
public:
|
||||
nsReadingIterator() { }
|
||||
|
@ -136,13 +139,13 @@ class nsReadingIterator
|
|||
return result;
|
||||
}
|
||||
|
||||
const nsReadableFragment<CharT>&
|
||||
const const_fragment_type&
|
||||
fragment() const
|
||||
{
|
||||
return mFragment;
|
||||
}
|
||||
|
||||
const string_type&
|
||||
const abstract_string_type&
|
||||
string() const
|
||||
{
|
||||
NS_ASSERTION(mOwningString, "iterator not attached to a string (|mOwningString| == 0)");
|
||||
|
@ -203,14 +206,17 @@ class nsWritingIterator
|
|||
typedef CharT& reference;
|
||||
// typedef bidirectional_iterator_tag iterator_category;
|
||||
|
||||
typedef nsReadableFragment<CharT> const_fragment_type;
|
||||
typedef nsWritableFragment<CharT> fragment_type;
|
||||
|
||||
private:
|
||||
friend class nsAString;
|
||||
friend class nsACString;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type string_type;
|
||||
typedef typename nsStringTraits<CharT>::abstract_string_type abstract_string_type;
|
||||
|
||||
nsWritableFragment<CharT> mFragment;
|
||||
fragment_type mFragment;
|
||||
CharT* mPosition;
|
||||
string_type* mOwningString;
|
||||
abstract_string_type* mOwningString;
|
||||
|
||||
public:
|
||||
nsWritingIterator() { }
|
||||
|
@ -276,26 +282,26 @@ class nsWritingIterator
|
|||
return result;
|
||||
}
|
||||
|
||||
const nsWritableFragment<CharT>&
|
||||
const fragment_type&
|
||||
fragment() const
|
||||
{
|
||||
return mFragment;
|
||||
}
|
||||
|
||||
nsWritableFragment<CharT>&
|
||||
fragment_type&
|
||||
fragment()
|
||||
{
|
||||
return mFragment;
|
||||
}
|
||||
|
||||
const string_type&
|
||||
const abstract_string_type&
|
||||
string() const
|
||||
{
|
||||
NS_ASSERTION(mOwningString, "iterator not attached to a string (|mOwningString| == 0)");
|
||||
return *mOwningString;
|
||||
}
|
||||
|
||||
string_type&
|
||||
abstract_string_type&
|
||||
string()
|
||||
{
|
||||
NS_ASSERTION(mOwningString, "iterator not attached to a string (|mOwningString| == 0)");
|
||||
|
|
|
@ -70,6 +70,9 @@
|
|||
class NS_COM nsXPIDLString
|
||||
: public nsSharableString
|
||||
{
|
||||
public:
|
||||
typedef nsXPIDLString self_type;
|
||||
|
||||
public:
|
||||
nsXPIDLString()
|
||||
{
|
||||
|
@ -80,7 +83,7 @@ class NS_COM nsXPIDLString
|
|||
#endif
|
||||
}
|
||||
|
||||
nsXPIDLString( const nsXPIDLString& aString )
|
||||
nsXPIDLString( const self_type& aString )
|
||||
: nsSharableString(aString.GetSharedBufferHandle())
|
||||
// copy-constructor required (or else C++ generates one for us)
|
||||
{
|
||||
|
@ -98,8 +101,8 @@ class NS_COM nsXPIDLString
|
|||
}
|
||||
#endif
|
||||
|
||||
nsXPIDLString&
|
||||
operator=( const nsXPIDLString& rhs )
|
||||
self_type&
|
||||
operator=( const self_type& rhs )
|
||||
// copy-assignment operator required (or else C++ generates one for us)
|
||||
{
|
||||
// self-assignment is handled by the underlying |nsAutoBufferHandle|
|
||||
|
@ -107,11 +110,11 @@ class NS_COM nsXPIDLString
|
|||
return *this;
|
||||
}
|
||||
|
||||
void Adopt( PRUnichar* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
void Adopt( char_type* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
|
||||
// deprecated, to be eliminated
|
||||
operator const PRUnichar*() const { return get(); }
|
||||
PRUnichar operator[]( int i ) const { return get()[ i ]; }
|
||||
operator const char_type*() const { return get(); }
|
||||
char_type operator[]( int i ) const { return get()[ i ]; }
|
||||
|
||||
|
||||
class getter_Copies_t
|
||||
|
@ -121,7 +124,7 @@ class NS_COM nsXPIDLString
|
|||
// getter_Copies_t( const getter_Copies_t& ); // auto-generated copy-constructor OK
|
||||
// getter_Copies_t& operator=( const getter_Copies_t& ); // auto-generated assignment operator OK
|
||||
|
||||
operator PRUnichar**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
operator char_type**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
|
||||
private:
|
||||
nsXPIDLString* mString;
|
||||
|
@ -131,13 +134,13 @@ class NS_COM nsXPIDLString
|
|||
|
||||
protected:
|
||||
#if DEBUG_STRING_STATS
|
||||
virtual const nsBufferHandle<PRUnichar>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<PRUnichar>* GetBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
#endif
|
||||
virtual const nsSharedBufferHandle<PRUnichar>* GetSharedBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
// overridden to fix the length after `out' parameter assignment, if necessary
|
||||
|
||||
PRUnichar** PrepareForUseAsOutParam();
|
||||
char_type** PrepareForUseAsOutParam();
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
static size_t sCreatedCount; // total number of |nsXPIDLString|s ever created
|
||||
|
@ -164,6 +167,9 @@ getter_Copies( nsXPIDLString& aString )
|
|||
class NS_COM nsXPIDLCString
|
||||
: public nsSharableCString
|
||||
{
|
||||
public:
|
||||
typedef nsXPIDLCString self_type;
|
||||
|
||||
public:
|
||||
nsXPIDLCString()
|
||||
{
|
||||
|
@ -174,7 +180,7 @@ class NS_COM nsXPIDLCString
|
|||
#endif
|
||||
}
|
||||
|
||||
nsXPIDLCString( const nsXPIDLCString& aString )
|
||||
nsXPIDLCString( const self_type& aString )
|
||||
: nsSharableCString(aString.GetSharedBufferHandle())
|
||||
// copy-constructor required (or else C++ generates one for us)
|
||||
{
|
||||
|
@ -192,8 +198,8 @@ class NS_COM nsXPIDLCString
|
|||
}
|
||||
#endif
|
||||
|
||||
nsXPIDLCString&
|
||||
operator=( const nsXPIDLCString& rhs )
|
||||
self_type&
|
||||
operator=( const self_type& rhs )
|
||||
// copy-assignment operator required (or else C++ generates one for us)
|
||||
{
|
||||
// self-assignment is handled by the underlying |nsAutoBufferHandle|
|
||||
|
@ -201,11 +207,11 @@ class NS_COM nsXPIDLCString
|
|||
return *this;
|
||||
}
|
||||
|
||||
void Adopt( char* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
void Adopt( char_type* aNewValue ) { *PrepareForUseAsOutParam() = aNewValue; }
|
||||
|
||||
// deprecated, to be eliminated
|
||||
operator const char*() const { return get(); }
|
||||
char operator[]( int i ) const { return get()[ i ]; }
|
||||
operator const char_type*() const { return get(); }
|
||||
char_type operator[]( int i ) const { return get()[ i ]; }
|
||||
|
||||
|
||||
class getter_Copies_t
|
||||
|
@ -215,7 +221,7 @@ class NS_COM nsXPIDLCString
|
|||
// getter_Copies_t( const getter_Copies_t& ); // auto-generated copy-constructor OK
|
||||
// getter_Copies_t& operator=( const getter_Copies_t& ); // auto-generated assignment operator OK
|
||||
|
||||
operator char**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
operator char_type**() const { return mString->PrepareForUseAsOutParam(); }
|
||||
|
||||
private:
|
||||
nsXPIDLCString* mString;
|
||||
|
@ -225,13 +231,13 @@ class NS_COM nsXPIDLCString
|
|||
|
||||
protected:
|
||||
#if DEBUG_STRING_STATS
|
||||
virtual const nsBufferHandle<char>* GetFlatBufferHandle() const;
|
||||
virtual const nsBufferHandle<char>* GetBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetFlatBufferHandle() const;
|
||||
virtual const buffer_handle_type* GetBufferHandle() const;
|
||||
#endif
|
||||
virtual const nsSharedBufferHandle<char>* GetSharedBufferHandle() const;
|
||||
virtual const shared_buffer_handle_type* GetSharedBufferHandle() const;
|
||||
// overridden to fix the length after `out' parameter assignment, if necessary
|
||||
|
||||
char** PrepareForUseAsOutParam();
|
||||
char_type** PrepareForUseAsOutParam();
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
static size_t sCreatedCount; // total number of |nsXPIDLCString|s ever created
|
||||
|
|
|
@ -23,8 +23,8 @@
|
|||
|
||||
#include "nsAFlatString.h"
|
||||
|
||||
const PRUnichar*
|
||||
nsAFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsAFlatString::char_type*
|
||||
nsAFlatString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ nsAFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, ns
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
const nsBufferHandle<PRUnichar>* buffer = GetBufferHandle();
|
||||
const buffer_handle_type* buffer = GetBufferHandle();
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -46,8 +46,8 @@ nsAFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, ns
|
|||
}
|
||||
}
|
||||
|
||||
PRUnichar*
|
||||
nsAFlatString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
nsAFlatString::char_type*
|
||||
nsAFlatString::GetWritableFragment( fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -55,7 +55,7 @@ nsAFlatString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, ns
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
nsBufferHandle<PRUnichar>* buffer = NS_CONST_CAST(nsBufferHandle<PRUnichar>*, GetBufferHandle());
|
||||
buffer_handle_type* buffer = NS_CONST_CAST(buffer_handle_type*, GetBufferHandle());
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -69,8 +69,8 @@ nsAFlatString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, ns
|
|||
}
|
||||
}
|
||||
|
||||
const char*
|
||||
nsAFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsAFlatCString::char_type*
|
||||
nsAFlatCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -78,7 +78,7 @@ nsAFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFrag
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
const nsBufferHandle<char>* buffer = GetBufferHandle();
|
||||
const buffer_handle_type* buffer = GetBufferHandle();
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -92,8 +92,8 @@ nsAFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFrag
|
|||
}
|
||||
}
|
||||
|
||||
char*
|
||||
nsAFlatCString::GetWritableFragment( nsWritableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
nsAFlatCString::char_type*
|
||||
nsAFlatCString::GetWritableFragment( fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -101,7 +101,7 @@ nsAFlatCString::GetWritableFragment( nsWritableFragment<char>& aFragment, nsFrag
|
|||
case kLastFragment:
|
||||
case kFragmentAt:
|
||||
{
|
||||
nsBufferHandle<char>* buffer = NS_CONST_CAST(nsBufferHandle<char>*, GetBufferHandle());
|
||||
buffer_handle_type* buffer = NS_CONST_CAST(buffer_handle_type*, GetBufferHandle());
|
||||
NS_ASSERTION(buffer, "trouble: no buffer!");
|
||||
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
|
@ -118,29 +118,29 @@ nsAFlatCString::GetWritableFragment( nsWritableFragment<char>& aFragment, nsFrag
|
|||
PRUint32
|
||||
nsAFlatString::Length() const
|
||||
{
|
||||
const nsBufferHandle<PRUnichar>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
return PRUint32(handle ? handle->DataLength() : 0);
|
||||
}
|
||||
|
||||
PRUint32
|
||||
nsAFlatCString::Length() const
|
||||
{
|
||||
const nsBufferHandle<char>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
return PRUint32(handle ? handle->DataLength() : 0);
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
const nsAFlatString::char_type*
|
||||
nsAFlatString::get() const
|
||||
{
|
||||
const nsBufferHandle<PRUnichar>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
// NS_ASSERTION(handle, "handle is null!");
|
||||
return handle ? handle->DataStart() : 0;
|
||||
}
|
||||
|
||||
const char*
|
||||
const nsAFlatCString::char_type*
|
||||
nsAFlatCString::get() const
|
||||
{
|
||||
const nsBufferHandle<char>* handle = GetBufferHandle();
|
||||
const buffer_handle_type* handle = GetBufferHandle();
|
||||
// NS_ASSERTION(handle, "handle is null!");
|
||||
return handle ? handle->DataStart() : 0;
|
||||
}
|
||||
|
|
|
@ -28,13 +28,13 @@
|
|||
|
||||
|
||||
int
|
||||
nsDefaultStringComparator::operator()( const PRUnichar* lhs, const PRUnichar* rhs, PRUint32 aLength ) const
|
||||
nsDefaultStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCharTraits<PRUnichar>::compare(lhs, rhs, aLength);
|
||||
return nsCharTraits<char_type>::compare(lhs, rhs, aLength);
|
||||
}
|
||||
|
||||
int
|
||||
nsCaseInsensitiveStringComparator::operator()( const PRUnichar* lhs, const PRUnichar* rhs, PRUint32 aLength ) const
|
||||
nsCaseInsensitiveStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCRT::strncasecmp(lhs, rhs, aLength);
|
||||
}
|
||||
|
@ -85,20 +85,19 @@ Compare( const nsAString& lhs, const nsAString& rhs, const nsStringComparator& a
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsAString::shared_buffer_handle_type*
|
||||
nsAString::GetSharedBufferHandle() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsAString::buffer_handle_type*
|
||||
nsAString::GetFlatBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsAString::buffer_handle_type*
|
||||
nsAString::GetBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
|
@ -108,12 +107,13 @@ PRUint32
|
|||
nsAString::GetImplementationFlags() const
|
||||
{
|
||||
PRUint32 flags = 0;
|
||||
const nsSharedBufferHandle<char_type>* handle = GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = GetSharedBufferHandle();
|
||||
if ( handle )
|
||||
flags = handle->GetImplementationFlags();
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
PRBool
|
||||
nsAString::IsVoid() const
|
||||
{
|
||||
|
@ -132,6 +132,8 @@ nsAString::Equals( const char_type* rhs ) const
|
|||
return Equals(nsDependentString(rhs));
|
||||
}
|
||||
|
||||
|
||||
|
||||
nsAString::char_type
|
||||
nsAString::First() const
|
||||
{
|
||||
|
@ -529,16 +531,14 @@ nsAString::do_ReplaceFromReadable( index_type cutStart, size_type cutLength, con
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
int
|
||||
nsDefaultCStringComparator::operator()( const char* lhs, const char* rhs, PRUint32 aLength ) const
|
||||
nsDefaultCStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCharTraits<char>::compare(lhs, rhs, aLength);
|
||||
return nsCharTraits<char_type>::compare(lhs, rhs, aLength);
|
||||
}
|
||||
|
||||
int
|
||||
nsCaseInsensitiveCStringComparator::operator()( const char* lhs, const char* rhs, PRUint32 aLength ) const
|
||||
nsCaseInsensitiveCStringComparator::operator()( const char_type* lhs, const char_type* rhs, PRUint32 aLength ) const
|
||||
{
|
||||
return nsCRT::strncasecmp(lhs, rhs, aLength);
|
||||
}
|
||||
|
@ -589,20 +589,19 @@ Compare( const nsACString& lhs, const nsACString& rhs, const nsCStringComparator
|
|||
return 0;
|
||||
}
|
||||
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsACString::shared_buffer_handle_type*
|
||||
nsACString::GetSharedBufferHandle() const
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsACString::buffer_handle_type*
|
||||
nsACString::GetFlatBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsACString::buffer_handle_type*
|
||||
nsACString::GetBufferHandle() const
|
||||
{
|
||||
return GetSharedBufferHandle();
|
||||
|
@ -612,12 +611,13 @@ PRUint32
|
|||
nsACString::GetImplementationFlags() const
|
||||
{
|
||||
PRUint32 flags = 0;
|
||||
const nsSharedBufferHandle<char_type>* handle = GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = GetSharedBufferHandle();
|
||||
if ( handle )
|
||||
flags = handle->GetImplementationFlags();
|
||||
return flags;
|
||||
}
|
||||
|
||||
|
||||
PRBool
|
||||
nsACString::IsVoid() const
|
||||
{
|
||||
|
|
|
@ -35,26 +35,26 @@
|
|||
PRUint32
|
||||
nsDependentConcatenation::Length() const
|
||||
{
|
||||
return mStrings[kLeftString]->Length() + mStrings[kRightString]->Length();
|
||||
return mStrings[kFirstString]->Length() + mStrings[kLastString]->Length();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsDependentConcatenation::IsDependentOn( const string_type& aString ) const
|
||||
nsDependentConcatenation::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mStrings[0]->IsDependentOn(aString) || mStrings[1]->IsDependentOn(aString);
|
||||
return mStrings[kFirstString]->IsDependentOn(aString) || mStrings[kLastString]->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
#if 0
|
||||
PRBool
|
||||
nsDependentConcatenation::PromisesExactly( const string_type& aString ) const
|
||||
nsDependentConcatenation::PromisesExactly( const abstract_string_type& aString ) const
|
||||
{
|
||||
// Not really like this, test for the empty string, etc
|
||||
return mStrings[0] == &aString && !mStrings[1] || !mStrings[0] && mStrings[1] == &aString;
|
||||
return mStrings[kFirstString] == &aString && !mStrings[kLastString] || !mStrings[kFirstString] && mStrings[kLastString] == &aString;
|
||||
}
|
||||
#endif
|
||||
|
||||
const PRUnichar*
|
||||
nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentConcatenation::char_type*
|
||||
nsDependentConcatenation::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
int whichString;
|
||||
|
||||
|
@ -68,20 +68,20 @@ nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aF
|
|||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
PRUint32 leftLength = mStrings[kLeftString]->Length();
|
||||
PRUint32 leftLength = mStrings[kFirstString]->Length();
|
||||
if ( aPosition < leftLength )
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
else
|
||||
{
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
aPosition -= leftLength;
|
||||
}
|
||||
break;
|
||||
|
@ -98,15 +98,15 @@ nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aF
|
|||
if ( !result )
|
||||
{
|
||||
done = PR_FALSE;
|
||||
if ( aRequest == kNextFragment && whichString == kLeftString )
|
||||
if ( aRequest == kNextFragment && whichString == kFirstString )
|
||||
{
|
||||
aRequest = kFirstFragment;
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
}
|
||||
else if ( aRequest == kPrevFragment && whichString == kRightString )
|
||||
else if ( aRequest == kPrevFragment && whichString == kLastString )
|
||||
{
|
||||
aRequest = kLastFragment;
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
}
|
||||
else
|
||||
done = PR_TRUE;
|
||||
|
@ -120,26 +120,26 @@ nsDependentConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aF
|
|||
PRUint32
|
||||
nsDependentCConcatenation::Length() const
|
||||
{
|
||||
return mStrings[kLeftString]->Length() + mStrings[kRightString]->Length();
|
||||
return mStrings[kFirstString]->Length() + mStrings[kLastString]->Length();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsDependentCConcatenation::IsDependentOn( const string_type& aString ) const
|
||||
nsDependentCConcatenation::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mStrings[0]->IsDependentOn(aString) || mStrings[1]->IsDependentOn(aString);
|
||||
return mStrings[kFirstString]->IsDependentOn(aString) || mStrings[kLastString]->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
#if 0
|
||||
PRBool
|
||||
nsDependentCConcatenation::PromisesExactly( const string_type& aString ) const
|
||||
nsDependentCConcatenation::PromisesExactly( const abstract_string_type& aString ) const
|
||||
{
|
||||
// Not really like this, test for the empty string, etc
|
||||
return mStrings[0] == &aString && !mStrings[1] || !mStrings[0] && mStrings[1] == &aString;
|
||||
return mStrings[kFirstString] == &aString && !mStrings[kLastString] || !mStrings[kFirstString] && mStrings[kLastString] == &aString;
|
||||
}
|
||||
#endif
|
||||
|
||||
const char*
|
||||
nsDependentCConcatenation::GetReadableFragment( nsReadableFragment<char_type>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentCConcatenation::char_type*
|
||||
nsDependentCConcatenation::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
int whichString;
|
||||
|
||||
|
@ -153,20 +153,20 @@ nsDependentCConcatenation::GetReadableFragment( nsReadableFragment<char_type>& a
|
|||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
PRUint32 leftLength = mStrings[kLeftString]->Length();
|
||||
PRUint32 leftLength = mStrings[kFirstString]->Length();
|
||||
if ( aPosition < leftLength )
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
else
|
||||
{
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
aPosition -= leftLength;
|
||||
}
|
||||
break;
|
||||
|
@ -183,15 +183,15 @@ nsDependentCConcatenation::GetReadableFragment( nsReadableFragment<char_type>& a
|
|||
if ( !result )
|
||||
{
|
||||
done = PR_FALSE;
|
||||
if ( aRequest == kNextFragment && whichString == kLeftString )
|
||||
if ( aRequest == kNextFragment && whichString == kFirstString )
|
||||
{
|
||||
aRequest = kFirstFragment;
|
||||
whichString = SetRightStringInFragment(aFragment);
|
||||
whichString = SetLastStringInFragment(aFragment);
|
||||
}
|
||||
else if ( aRequest == kPrevFragment && whichString == kRightString )
|
||||
else if ( aRequest == kPrevFragment && whichString == kLastString )
|
||||
{
|
||||
aRequest = kLastFragment;
|
||||
whichString = SetLeftStringInFragment(aFragment);
|
||||
whichString = SetFirstStringInFragment(aFragment);
|
||||
}
|
||||
else
|
||||
done = PR_TRUE;
|
||||
|
|
|
@ -29,8 +29,8 @@ nsDependentSubstring::Length() const
|
|||
return mLength;
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
nsDependentSubstring::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentSubstring::char_type*
|
||||
nsDependentSubstring::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
// Offset any request for a specific position (First, Last, At) by our
|
||||
// substrings startpos within the owning string
|
||||
|
@ -50,7 +50,7 @@ nsDependentSubstring::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragm
|
|||
|
||||
// requests for |kNextFragment| or |kPrevFragment| are just relayed down into the string we're slicing
|
||||
|
||||
const PRUnichar* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
const char_type* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
|
||||
// If |GetReadableFragment| returns |0|, then we are off the string, the contents of the
|
||||
// fragment are garbage.
|
||||
|
@ -80,8 +80,8 @@ nsDependentCSubstring::Length() const
|
|||
return mLength;
|
||||
}
|
||||
|
||||
const char*
|
||||
nsDependentCSubstring::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
const nsDependentCSubstring::char_type*
|
||||
nsDependentCSubstring::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aPosition ) const
|
||||
{
|
||||
// Offset any request for a specific position (First, Last, At) by our
|
||||
// substrings startpos within the owning string
|
||||
|
@ -101,7 +101,7 @@ nsDependentCSubstring::GetReadableFragment( nsReadableFragment<char>& aFragment,
|
|||
|
||||
// requests for |kNextFragment| or |kPrevFragment| are just relayed down into the string we're slicing
|
||||
|
||||
const char* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
const char_type* position_ptr = mString.GetReadableFragment(aFragment, aRequest, aPosition);
|
||||
|
||||
// If |GetReadableFragment| returns |0|, then we are off the string, the contents of the
|
||||
// fragment are garbage.
|
||||
|
|
|
@ -1,162 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/*
|
||||
* The contents of this file are subject to the Mozilla Public
|
||||
* License Version 1.1 (the "License"); you may not use this file
|
||||
* except in compliance with the License. You may obtain a copy of
|
||||
* the License at http://www.mozilla.org/MPL/
|
||||
*
|
||||
* Software distributed under the License is distributed on an "AS
|
||||
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
* implied. See the License for the specific language governing
|
||||
* rights and limitations under the License.
|
||||
*
|
||||
* The Original Code is Mozilla XPCOM.
|
||||
*
|
||||
* The Initial Developer of the Original Code is Netscape
|
||||
* Communications Corporation. Portions created by Netscape are
|
||||
* Copyright (C) 2000 Netscape Communications Corporation. All
|
||||
* Rights Reserved.
|
||||
*
|
||||
* Original Author:
|
||||
* Scott Collins <scc@mozilla.org>
|
||||
*
|
||||
* Contributor(s):
|
||||
*/
|
||||
|
||||
#include "nsFragmentedString.h"
|
||||
|
||||
|
||||
const PRUnichar*
|
||||
nsFragmentedString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
const nsSharedBufferList::Buffer* buffer = 0;
|
||||
switch ( aRequest )
|
||||
{
|
||||
case kPrevFragment:
|
||||
buffer = NS_STATIC_CAST(const nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mPrev;
|
||||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
buffer = mBufferList.GetFirstBuffer();
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
buffer = mBufferList.GetLastBuffer();
|
||||
break;
|
||||
|
||||
case kNextFragment:
|
||||
buffer = NS_STATIC_CAST(const nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mNext;
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
// ...work...
|
||||
break;
|
||||
}
|
||||
|
||||
if ( buffer )
|
||||
{
|
||||
aFragment.mStart = buffer->DataStart();
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
aFragment.mFragmentIdentifier = buffer;
|
||||
return aFragment.mStart + aOffset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
PRUnichar*
|
||||
nsFragmentedString::GetWritableFragment( nsWritableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset )
|
||||
{
|
||||
nsSharedBufferList::Buffer* buffer = 0;
|
||||
switch ( aRequest )
|
||||
{
|
||||
case kPrevFragment:
|
||||
buffer = NS_STATIC_CAST(nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mPrev;
|
||||
break;
|
||||
|
||||
case kFirstFragment:
|
||||
buffer = mBufferList.GetFirstBuffer();
|
||||
break;
|
||||
|
||||
case kLastFragment:
|
||||
buffer = mBufferList.GetLastBuffer();
|
||||
break;
|
||||
|
||||
case kNextFragment:
|
||||
buffer = NS_STATIC_CAST(nsSharedBufferList::Buffer*, aFragment.mFragmentIdentifier)->mNext;
|
||||
break;
|
||||
|
||||
case kFragmentAt:
|
||||
// ...work...
|
||||
break;
|
||||
}
|
||||
|
||||
if ( buffer )
|
||||
{
|
||||
aFragment.mStart = buffer->DataStart();
|
||||
aFragment.mEnd = buffer->DataEnd();
|
||||
aFragment.mFragmentIdentifier = buffer;
|
||||
return aFragment.mStart + aOffset;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* ...
|
||||
*/
|
||||
PRUint32
|
||||
nsFragmentedString::Length() const
|
||||
{
|
||||
return PRUint32(mBufferList.GetDataLength());
|
||||
}
|
||||
|
||||
/**
|
||||
* |SetLength|
|
||||
*/
|
||||
void
|
||||
nsFragmentedString::SetLength( PRUint32 aNewLength )
|
||||
{
|
||||
// according to the current interpretation of |SetLength|,
|
||||
// cut off characters from the end, or else add unitialized space to fill
|
||||
|
||||
if ( aNewLength < PRUint32(mBufferList.GetDataLength()) )
|
||||
{
|
||||
// if ( aNewLength )
|
||||
mBufferList.DiscardSuffix(mBufferList.GetDataLength()-aNewLength);
|
||||
// else
|
||||
// mBufferList.DestroyBuffers();
|
||||
}
|
||||
|
||||
// temporarily... eliminate as soon as our munging routines don't need this form of |SetLength|
|
||||
else if ( aNewLength > PRUint32(mBufferList.GetDataLength()) )
|
||||
{
|
||||
size_t empty_space_to_add = aNewLength - mBufferList.GetDataLength();
|
||||
nsSharedBufferList::Buffer* new_buffer = nsSharedBufferList::NewSingleAllocationBuffer(0, 0, empty_space_to_add);
|
||||
new_buffer->DataEnd(new_buffer->DataStart()+empty_space_to_add);
|
||||
mBufferList.LinkBuffer(mBufferList.GetLastBuffer(), new_buffer, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/**
|
||||
* |SetCapacity|.
|
||||
*
|
||||
* If a client tries to increase the capacity of multi-fragment string, perhaps a single
|
||||
* empty fragment of the appropriate size should be appended.
|
||||
*/
|
||||
void
|
||||
nsFragmentedString::SetCapacity( PRUint32 aNewCapacity )
|
||||
{
|
||||
if ( !aNewCapacity )
|
||||
{
|
||||
// |SetCapacity(0)| is special and means ``release all storage''.
|
||||
}
|
||||
else if ( aNewCapacity > ... )
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -40,7 +40,7 @@
|
|||
#include "prprf.h"
|
||||
|
||||
|
||||
nsPrintfCString::nsPrintfCString( const char* format, ... )
|
||||
nsPrintfCString::nsPrintfCString( const char_type* format, ... )
|
||||
: mStart(mLocalBuffer),
|
||||
mLength(0)
|
||||
{
|
||||
|
@ -54,7 +54,7 @@ nsPrintfCString::nsPrintfCString( const char* format, ... )
|
|||
va_end(ap);
|
||||
}
|
||||
|
||||
nsPrintfCString::nsPrintfCString( size_t n, const char* format, ... )
|
||||
nsPrintfCString::nsPrintfCString( size_t n, const char_type* format, ... )
|
||||
: mStart(mLocalBuffer),
|
||||
mLength(0)
|
||||
{
|
||||
|
@ -64,7 +64,7 @@ nsPrintfCString::nsPrintfCString( size_t n, const char* format, ... )
|
|||
size_t logical_capacity = kLocalBufferSize;
|
||||
if ( n > logical_capacity )
|
||||
{
|
||||
char* nonlocal_buffer = new char[n];
|
||||
char_type* nonlocal_buffer = new char_type[n];
|
||||
|
||||
// if we got something, use it
|
||||
if ( nonlocal_buffer )
|
||||
|
@ -96,7 +96,7 @@ nsPrintfCString::Length() const
|
|||
|
||||
#if 0
|
||||
PRBool
|
||||
nsPrintfCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest ) const
|
||||
nsPrintfCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
@ -114,8 +114,8 @@ nsPrintfCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFra
|
|||
}
|
||||
}
|
||||
#else
|
||||
const char*
|
||||
nsPrintfCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsPrintfCString::char_type*
|
||||
nsPrintfCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
switch ( aRequest )
|
||||
{
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#include "nsPromiseFlatString.h"
|
||||
|
||||
|
||||
nsPromiseFlatString::nsPromiseFlatString( const nsPromiseFlatString& aOther )
|
||||
nsPromiseFlatString::nsPromiseFlatString( const self_type& aOther )
|
||||
: mFlattenedString(aOther.mFlattenedString)
|
||||
{
|
||||
if ( aOther.mPromisedString == &aOther.mFlattenedString )
|
||||
|
@ -33,7 +33,7 @@ nsPromiseFlatString::nsPromiseFlatString( const nsPromiseFlatString& aOther )
|
|||
mPromisedString = aOther.mPromisedString;
|
||||
}
|
||||
|
||||
nsPromiseFlatString::nsPromiseFlatString( const nsAString& aString )
|
||||
nsPromiseFlatString::nsPromiseFlatString( const abstract_string_type& aString )
|
||||
{
|
||||
if ( aString.GetFlatBufferHandle() )
|
||||
mPromisedString = NS_STATIC_CAST(const nsAFlatString*, &aString);
|
||||
|
@ -44,31 +44,31 @@ nsPromiseFlatString::nsPromiseFlatString( const nsAString& aString )
|
|||
}
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsPromiseFlatString::buffer_handle_type*
|
||||
nsPromiseFlatString::GetFlatBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetFlatBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsPromiseFlatString::buffer_handle_type*
|
||||
nsPromiseFlatString::GetBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetBufferHandle();
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsPromiseFlatString::shared_buffer_handle_type*
|
||||
nsPromiseFlatString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsPromiseFlatString::IsDependentOn( const nsAString& aString ) const
|
||||
nsPromiseFlatString::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mPromisedString->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
const nsPromiseFlatString::char_type*
|
||||
nsPromiseFlatString::get() const
|
||||
{
|
||||
return mPromisedString->get();
|
||||
|
@ -80,15 +80,15 @@ nsPromiseFlatString::Length() const
|
|||
return mPromisedString->Length();
|
||||
}
|
||||
|
||||
const PRUnichar*
|
||||
nsPromiseFlatString::GetReadableFragment( nsReadableFragment<PRUnichar>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsPromiseFlatString::char_type*
|
||||
nsPromiseFlatString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
return mPromisedString->GetReadableFragment(aFragment, aRequest, aOffset);
|
||||
}
|
||||
|
||||
|
||||
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const nsPromiseFlatCString& aOther )
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const self_type& aOther )
|
||||
: mFlattenedString(aOther.mFlattenedString)
|
||||
{
|
||||
if ( aOther.mPromisedString == &aOther.mFlattenedString )
|
||||
|
@ -97,7 +97,7 @@ nsPromiseFlatCString::nsPromiseFlatCString( const nsPromiseFlatCString& aOther )
|
|||
mPromisedString = aOther.mPromisedString;
|
||||
}
|
||||
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const nsACString& aString )
|
||||
nsPromiseFlatCString::nsPromiseFlatCString( const abstract_string_type& aString )
|
||||
{
|
||||
if ( aString.GetFlatBufferHandle() )
|
||||
mPromisedString = NS_STATIC_CAST(const nsAFlatCString*, &aString);
|
||||
|
@ -108,31 +108,31 @@ nsPromiseFlatCString::nsPromiseFlatCString( const nsACString& aString )
|
|||
}
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsPromiseFlatCString::buffer_handle_type*
|
||||
nsPromiseFlatCString::GetFlatBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetFlatBufferHandle();
|
||||
}
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsPromiseFlatCString::buffer_handle_type*
|
||||
nsPromiseFlatCString::GetBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetBufferHandle();
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsPromiseFlatCString::shared_buffer_handle_type*
|
||||
nsPromiseFlatCString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mPromisedString->GetSharedBufferHandle();
|
||||
}
|
||||
|
||||
PRBool
|
||||
nsPromiseFlatCString::IsDependentOn( const nsACString& aString ) const
|
||||
nsPromiseFlatCString::IsDependentOn( const abstract_string_type& aString ) const
|
||||
{
|
||||
return mPromisedString->IsDependentOn(aString);
|
||||
}
|
||||
|
||||
const char*
|
||||
const nsPromiseFlatCString::char_type*
|
||||
nsPromiseFlatCString::get() const
|
||||
{
|
||||
return mPromisedString->get();
|
||||
|
@ -144,8 +144,8 @@ nsPromiseFlatCString::Length() const
|
|||
return mPromisedString->Length();
|
||||
}
|
||||
|
||||
const char*
|
||||
nsPromiseFlatCString::GetReadableFragment( nsReadableFragment<char>& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
const nsPromiseFlatCString::char_type*
|
||||
nsPromiseFlatCString::GetReadableFragment( const_fragment_type& aFragment, nsFragmentRequest aRequest, PRUint32 aOffset ) const
|
||||
{
|
||||
return mPromisedString->GetReadableFragment(aFragment, aRequest, aOffset);
|
||||
}
|
||||
|
|
|
@ -27,30 +27,30 @@
|
|||
// #include "nsBufferHandleUtils.h"
|
||||
|
||||
void
|
||||
nsSharableString::assign( const string_type& aReadable )
|
||||
nsSharableString::assign( const abstract_string_type& aReadable )
|
||||
{
|
||||
const nsSharedBufferHandle<char_type>* handle = aReadable.GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = aReadable.GetSharedBufferHandle();
|
||||
if ( !handle )
|
||||
handle = NS_AllocateContiguousHandleWithData(handle, aReadable, PRUint32(1));
|
||||
mBuffer = handle;
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsSharableString::shared_buffer_handle_type*
|
||||
nsSharableString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mBuffer.get();
|
||||
}
|
||||
|
||||
void
|
||||
nsSharableCString::assign( const string_type& aReadable )
|
||||
nsSharableCString::assign( const abstract_string_type& aReadable )
|
||||
{
|
||||
const nsSharedBufferHandle<char_type>* handle = aReadable.GetSharedBufferHandle();
|
||||
const shared_buffer_handle_type* handle = aReadable.GetSharedBufferHandle();
|
||||
if ( !handle )
|
||||
handle = NS_AllocateContiguousHandleWithData(handle, aReadable, PRUint32(1));
|
||||
mBuffer = handle;
|
||||
}
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsSharableCString::shared_buffer_handle_type*
|
||||
nsSharableCString::GetSharedBufferHandle() const
|
||||
{
|
||||
return mBuffer.get();
|
||||
|
|
|
@ -72,7 +72,7 @@ nsImportedStringHandle<CharT>::RecalculateBoundaries() const
|
|||
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsXPIDLString::buffer_handle_type*
|
||||
nsXPIDLString::GetFlatBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -80,7 +80,7 @@ nsXPIDLString::GetFlatBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
const nsBufferHandle<PRUnichar>*
|
||||
const nsXPIDLString::buffer_handle_type*
|
||||
nsXPIDLString::GetBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -97,10 +97,10 @@ nsXPIDLString::DebugPrintStats( FILE* aOutFile )
|
|||
#endif
|
||||
|
||||
|
||||
const nsSharedBufferHandle<PRUnichar>*
|
||||
const nsXPIDLString::shared_buffer_handle_type*
|
||||
nsXPIDLString::GetSharedBufferHandle() const
|
||||
{
|
||||
const nsImportedStringHandle<PRUnichar>* answer = NS_STATIC_CAST(const nsImportedStringHandle<PRUnichar>*, mBuffer.get());
|
||||
const nsImportedStringHandle<char_type>* answer = NS_STATIC_CAST(const nsImportedStringHandle<char_type>*, mBuffer.get());
|
||||
|
||||
if ( answer && !answer->DataEnd() && answer->StorageStart() )
|
||||
answer->RecalculateBoundaries();
|
||||
|
@ -112,10 +112,10 @@ nsXPIDLString::GetSharedBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
PRUnichar**
|
||||
nsXPIDLString::char_type**
|
||||
nsXPIDLString::PrepareForUseAsOutParam()
|
||||
{
|
||||
nsImportedStringHandle<PRUnichar>* handle = new nsImportedStringHandle<PRUnichar>();
|
||||
nsImportedStringHandle<char_type>* handle = new nsImportedStringHandle<char_type>();
|
||||
NS_ASSERTION(handle, "Trouble! We couldn't get a new handle during |getter_Copies|.");
|
||||
|
||||
mBuffer = handle;
|
||||
|
@ -127,7 +127,7 @@ nsXPIDLString::PrepareForUseAsOutParam()
|
|||
|
||||
|
||||
#if DEBUG_STRING_STATS
|
||||
const nsBufferHandle<char>*
|
||||
const nsXPIDLCString::buffer_handle_type*
|
||||
nsXPIDLCString::GetFlatBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -135,7 +135,7 @@ nsXPIDLCString::GetFlatBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
const nsBufferHandle<char>*
|
||||
const nsXPIDLCString::buffer_handle_type*
|
||||
nsXPIDLCString::GetBufferHandle() const
|
||||
{
|
||||
--sShareCount;
|
||||
|
@ -152,10 +152,10 @@ nsXPIDLCString::DebugPrintStats( FILE* aOutFile )
|
|||
#endif
|
||||
|
||||
|
||||
const nsSharedBufferHandle<char>*
|
||||
const nsXPIDLCString::shared_buffer_handle_type*
|
||||
nsXPIDLCString::GetSharedBufferHandle() const
|
||||
{
|
||||
const nsImportedStringHandle<char>* answer = NS_STATIC_CAST(const nsImportedStringHandle<char>*, mBuffer.get());
|
||||
const nsImportedStringHandle<char_type>* answer = NS_STATIC_CAST(const nsImportedStringHandle<char_type>*, mBuffer.get());
|
||||
|
||||
if ( answer && !answer->DataEnd() && answer->StorageStart() )
|
||||
answer->RecalculateBoundaries();
|
||||
|
@ -167,10 +167,10 @@ nsXPIDLCString::GetSharedBufferHandle() const
|
|||
}
|
||||
|
||||
|
||||
char**
|
||||
nsXPIDLCString::char_type**
|
||||
nsXPIDLCString::PrepareForUseAsOutParam()
|
||||
{
|
||||
nsImportedStringHandle<char>* handle = new nsImportedStringHandle<char>();
|
||||
nsImportedStringHandle<char_type>* handle = new nsImportedStringHandle<char_type>();
|
||||
NS_ASSERTION(handle, "Trouble! We couldn't get a new handle during |getter_Copies|.");
|
||||
|
||||
mBuffer = handle;
|
||||
|
|
Загрузка…
Ссылка в новой задаче