Blame qtools/qgstring.h

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