|
Packit |
1c1d7e |
#ifndef QGSTRING_H
|
|
Packit |
1c1d7e |
#define QGSTRING_H
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include <stdlib.h>
|
|
Packit |
1c1d7e |
#include <string.h>
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#if defined(_OS_SUN_) && defined(_CC_GNU_)
|
|
Packit |
1c1d7e |
#include <strings.h>
|
|
Packit |
1c1d7e |
#endif
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#include "qcstring.h"
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/*****************************************************************************
|
|
Packit |
1c1d7e |
Fixes and workarounds for some platforms
|
|
Packit |
1c1d7e |
*****************************************************************************/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/** This is an alternative implementation of QCString.
|
|
Packit |
1c1d7e |
*/
|
|
Packit |
1c1d7e |
class QGString
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
public:
|
|
Packit |
1c1d7e |
QGString(); // make null string
|
|
Packit |
1c1d7e |
QGString(uint size);
|
|
Packit |
1c1d7e |
QGString( const QGString &s );
|
|
Packit |
1c1d7e |
QGString( const char *str );
|
|
Packit |
1c1d7e |
~QGString() ;
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool resize( uint newlen );
|
|
Packit |
1c1d7e |
bool enlarge( uint newlen );
|
|
Packit |
1c1d7e |
void setLen( uint newlen );
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
QGString &operator=( const QGString &s );
|
|
Packit |
1c1d7e |
QGString &operator=( const char *str );
|
|
Packit |
1c1d7e |
QGString &operator+=( const QGString &s );
|
|
Packit |
1c1d7e |
QGString &operator+=( const char *str );
|
|
Packit |
1c1d7e |
QGString &operator+=( char c );
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
bool isNull() const { return m_data==0; }
|
|
Packit |
1c1d7e |
bool isEmpty() const { return m_len==0; }
|
|
Packit |
1c1d7e |
uint length() const { return m_len; }
|
|
Packit |
1c1d7e |
uint size() const { return m_memSize; }
|
|
Packit |
1c1d7e |
char * data() const { return m_data; }
|
|
Packit |
1c1d7e |
bool truncate( uint pos ) { return resize(pos+1); }
|
|
Packit |
1c1d7e |
operator const char *() const { return (const char *)data(); }
|
|
Packit |
1c1d7e |
char &at( uint index ) const { return m_data[index]; }
|
|
Packit |
1c1d7e |
char &operator[]( int i ) const { return at(i); }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
private:
|
|
Packit |
1c1d7e |
char * m_data;
|
|
Packit |
1c1d7e |
uint m_len;
|
|
Packit |
1c1d7e |
uint m_memSize;
|
|
Packit |
1c1d7e |
};
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
/*****************************************************************************
|
|
Packit |
1c1d7e |
QGString non-member operators
|
|
Packit |
1c1d7e |
*****************************************************************************/
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator==( const QGString &s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2.data()) == 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator==( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2) == 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator==( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1,s2.data()) == 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator!=( const QGString &s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2.data()) != 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator!=( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2) != 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator!=( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1,s2.data()) != 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator<( const QGString &s1, const QGString& s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2.data()) < 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator<( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2) < 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator<( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1,s2.data()) < 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator<=( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2) <= 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator<=( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1,s2.data()) <= 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator>( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2) > 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator>( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1,s2.data()) > 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator>=( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1.data(),s2) >= 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline bool operator>=( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{ return qstrcmp(s1,s2.data()) >= 0; }
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline QGString operator+( const QGString &s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QGString tmp( s1.data() );
|
|
Packit |
1c1d7e |
tmp += s2;
|
|
Packit |
1c1d7e |
return tmp;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline QGString operator+( const QGString &s1, const char *s2 )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QGString tmp( s1.data() );
|
|
Packit |
1c1d7e |
tmp += s2;
|
|
Packit |
1c1d7e |
return tmp;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline QGString operator+( const char *s1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QGString tmp( s1 );
|
|
Packit |
1c1d7e |
tmp += s2;
|
|
Packit |
1c1d7e |
return tmp;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline QGString operator+( const QGString &s1, char c2 )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QGString tmp( s1.data() );
|
|
Packit |
1c1d7e |
tmp += c2;
|
|
Packit |
1c1d7e |
return tmp;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
Q_EXPORT inline QGString operator+( char c1, const QGString &s2 )
|
|
Packit |
1c1d7e |
{
|
|
Packit |
1c1d7e |
QGString tmp;
|
|
Packit |
1c1d7e |
tmp += c1;
|
|
Packit |
1c1d7e |
tmp += s2;
|
|
Packit |
1c1d7e |
return tmp;
|
|
Packit |
1c1d7e |
}
|
|
Packit |
1c1d7e |
|
|
Packit |
1c1d7e |
#endif // QGSTRING_H
|