// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
-#ifndef __WXSTRINGH__
-#define __WXSTRINGH__
+#ifndef _WX_WXSTRINGH__
+#define _WX_WXSTRINGH__
#ifdef __GNUG__
#pragma interface "string.h"
struct WXDLLEXPORT wxStringData
{
int nRefs; // reference count
- uint nDataLength, // actual string length
+ size_t nDataLength, // actual string length
nAllocLength; // allocated memory size
// mimics declaration 'char data[nAllocLength]'
{
#endif //WXSTRING_IS_WXOBJECT
-friend class wxArrayString;
+friend class WXDLLEXPORT wxArrayString;
// NB: special care was taken in arrangin the member functions in such order
// that all inline functions can be effectively inlined
/** @name generic attributes & operations */
//@{
/// as standard strlen()
- uint Len() const { return GetStringData()->nDataLength; }
+ size_t Len() const { return GetStringData()->nDataLength; }
/// string contains any characters?
bool IsEmpty() const { return Len() == 0; }
- /// reinitialize string (and free data!)
+ /// reinitialize string (and free memory)
void Empty()
{
- if ( GetStringData()->nDataLength != 0 )
+ if ( !IsEmpty() )
Reinit();
wxASSERT( GetStringData()->nDataLength == 0 );
@param bReplaceAll: global replace (default) or only the first occurence
@return the number of replacements made
*/
- uint Replace(const char *szOld, const char *szNew, bool bReplaceAll = TRUE);
+ size_t Replace(const char *szOld, const char *szNew, bool bReplaceAll = TRUE);
//@}
/// check if the string contents matches a mask containing '*' and '?'
//@{
/// ensure that string has space for at least nLen characters
// only works if the data of this string is not shared
- void Alloc(uint nLen);
+ void Alloc(size_t nLen);
/// minimize the string's memory
// only works if the data of this string is not shared
void Shrink();
Unget() *must* be called a.s.a.p. to put string back in a reasonable
state!
*/
- char *GetWriteBuf(uint nLen);
+ char *GetWriteBuf(size_t nLen);
/// call this immediately after GetWriteBuf() has been used
void UngetWriteBuf();
//@}
wxString& Remove(size_t pos) { return Truncate(pos); }
wxString& RemoveLast() { return Truncate(Len() - 1); }
- // Robert Roebling
- wxString& Remove(size_t nStart, size_t nLen)
- { return erase( nStart, nLen ); }
+ wxString& Remove(size_t nStart, size_t nLen) { return erase( nStart, nLen ); }
- int First( const char ch ) const { size_t res = find(ch); return res == wxString::npos ? -1 : res; }
- int First( const char* psz ) const { size_t res = find(psz); return res == wxString::npos ? -1 : res; }
- int First( const wxString &str ) const { size_t res = find(str); return res == wxString::npos ? -1 : res; }
+ int First( const char ch ) const { return Find(ch); }
+ int First( const char* psz ) const { return Find(psz); }
+ int First( const wxString &str ) const { return Find(str); }
- int Last( const char ch ) const { size_t res = rfind(ch,0); return res == wxString::npos ? -1 : res; }
- int Last( const char* psz ) const { size_t res = rfind(psz,0); return res == wxString::npos ? -1 : res; }
- int Last( const wxString &str ) const { size_t res = rfind(str,0); return res == wxString::npos ? -1 : res; }
+ int Last( const char ch ) const { return Find(ch, TRUE); }
/// same as IsEmpty
bool IsNull() const { return IsEmpty(); }
//@{
/// take nLen chars starting at nPos
wxString(const wxString& str, size_t nPos, size_t nLen = npos)
- {
+ {
wxASSERT( str.GetStringData()->IsValid() );
InitWith(str.c_str(), nPos, nLen == npos ? 0 : nLen);
}
@memo probably the most commonly used array type - array of strings
*/
// ----------------------------------------------------------------------------
-class wxArrayString
+class WXDLLEXPORT wxArrayString
{
public:
/** @name ctors and dtor */
/** @name simple accessors */
//@{
/// number of elements in the array
- uint Count() const { return m_nCount; }
+ size_t Count() const { return m_nCount; }
/// is it empty?
bool IsEmpty() const { return m_nCount == 0; }
//@}
/// add new element at the end
void Add (const wxString& str);
/// add new element at given position
- void Insert(const wxString& str, uint uiIndex);
+ void Insert(const wxString& str, size_t uiIndex);
/// remove first item matching this value
void Remove(const char *sz);
/// remove item by index
void Grow(); // makes array bigger if needed
void Free(); // free the string stored
- size_t m_nSize, // current size of the array
+ size_t m_nSize, // current size of the array
m_nCount; // current number of elements
char **m_pItems; // pointer to data
#ifdef STD_STRING_COMPATIBILITY
// fwd decl
-class WXDLLEXPORT istream;
+// Known not to work with wxUSE_IOSTREAMH set to 0, so
+// replacing with includes (on advice of ungod@pasdex.com.au)
+// class WXDLLEXPORT istream;
+#if wxUSE_IOSTREAMH
+#include <istream.h>
+#else
+#include <istream>
+# ifdef _MSC_VER
+ using namespace std;
+# endif
+#endif
istream& WXDLLEXPORT operator>>(istream& is, wxString& str);
#endif //std::string compatibility
-#endif // __WXSTRINGH__
+#endif // _WX_WXSTRINGH__
//@}