Orb/Doxygen/qtools/qgstring.h
changeset 0 42188c7ea2d9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Orb/Doxygen/qtools/qgstring.h	Thu Jan 21 17:29:01 2010 +0000
@@ -0,0 +1,137 @@
+#ifndef QGSTRING_H
+#define QGSTRING_H
+
+#include <stdlib.h>
+#include <string.h>
+
+#if defined(_OS_SUN_) && defined(_CC_GNU_)
+#include <strings.h>
+#endif
+
+#include "qcstring.h"
+
+/*****************************************************************************
+  Fixes and workarounds for some platforms
+ *****************************************************************************/
+
+/** This is an alternative implementation of QCString. 
+ */
+class QGString 
+{
+  public:
+    QGString(); // make null string
+    QGString(uint size); 
+    QGString( const QGString &s );
+    QGString( const char *str );
+   ~QGString() ;
+
+    bool resize( uint newlen );
+
+    QGString    &operator=( const QGString &s );
+    QGString    &operator=( const char *str );
+    QGString    &operator+=( const QGString &s );
+    QGString    &operator+=( const char *str );
+    QGString    &operator+=( char c );
+
+    bool        isNull()        const { return m_data==0; }
+    bool	isEmpty()	const { return m_len==0; }
+    uint	length()	const { return m_len; }
+    uint        size()          const { return m_memSize; }
+    char *      data()          const { return m_data; }
+    bool	truncate( uint pos )  { return resize(pos+1); }
+        operator const char *() const { return (const char *)data(); }
+    char &at( uint index ) const      { return m_data[index]; }
+    char &operator[]( int i ) const   { return at(i); }
+    
+  private:
+    char *      m_data;
+    uint        m_len;
+    uint        m_memSize;
+};
+
+/*****************************************************************************
+  QGString non-member operators
+ *****************************************************************************/
+
+Q_EXPORT inline bool operator==( const QGString &s1, const QGString &s2 )
+{ return qstrcmp(s1.data(),s2.data()) == 0; }
+
+Q_EXPORT inline bool operator==( const QGString &s1, const char *s2 )
+{ return qstrcmp(s1.data(),s2) == 0; }
+
+Q_EXPORT inline bool operator==( const char *s1, const QGString &s2 )
+{ return qstrcmp(s1,s2.data()) == 0; }
+
+Q_EXPORT inline bool operator!=( const QGString &s1, const QGString &s2 )
+{ return qstrcmp(s1.data(),s2.data()) != 0; }
+
+Q_EXPORT inline bool operator!=( const QGString &s1, const char *s2 )
+{ return qstrcmp(s1.data(),s2) != 0; }
+
+Q_EXPORT inline bool operator!=( const char *s1, const QGString &s2 )
+{ return qstrcmp(s1,s2.data()) != 0; }
+
+Q_EXPORT inline bool operator<( const QGString &s1, const QGString& s2 )
+{ return qstrcmp(s1.data(),s2.data()) < 0; }
+
+Q_EXPORT inline bool operator<( const QGString &s1, const char *s2 )
+{ return qstrcmp(s1.data(),s2) < 0; }
+
+Q_EXPORT inline bool operator<( const char *s1, const QGString &s2 )
+{ return qstrcmp(s1,s2.data()) < 0; }
+
+Q_EXPORT inline bool operator<=( const QGString &s1, const char *s2 )
+{ return qstrcmp(s1.data(),s2) <= 0; }
+
+Q_EXPORT inline bool operator<=( const char *s1, const QGString &s2 )
+{ return qstrcmp(s1,s2.data()) <= 0; }
+
+Q_EXPORT inline bool operator>( const QGString &s1, const char *s2 )
+{ return qstrcmp(s1.data(),s2) > 0; }
+
+Q_EXPORT inline bool operator>( const char *s1, const QGString &s2 )
+{ return qstrcmp(s1,s2.data()) > 0; }
+
+Q_EXPORT inline bool operator>=( const QGString &s1, const char *s2 )
+{ return qstrcmp(s1.data(),s2) >= 0; }
+
+Q_EXPORT inline bool operator>=( const char *s1, const QGString &s2 )
+{ return qstrcmp(s1,s2.data()) >= 0; }
+
+Q_EXPORT inline QGString operator+( const QGString &s1, const QGString &s2 )
+{
+    QGString tmp( s1.data() );
+    tmp += s2;
+    return tmp;
+}
+
+Q_EXPORT inline QGString operator+( const QGString &s1, const char *s2 )
+{
+    QGString tmp( s1.data() );
+    tmp += s2;
+    return tmp;
+}
+
+Q_EXPORT inline QGString operator+( const char *s1, const QGString &s2 )
+{
+    QGString tmp( s1 );
+    tmp += s2;
+    return tmp;
+}
+
+Q_EXPORT inline QGString operator+( const QGString &s1, char c2 )
+{
+    QGString tmp( s1.data() );
+    tmp += c2;
+    return tmp;
+}
+
+Q_EXPORT inline QGString operator+( char c1, const QGString &s2 )
+{
+    QGString tmp;
+    tmp += c1;
+    tmp += s2;
+    return tmp;
+}
+
+#endif // QGSTRING_H