| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- ///////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/gtk/private/string.h
 
- // Purpose:     wxGtkString class declaration
 
- // Author:      Vadim Zeitlin
 
- // Created:     2006-10-19
 
- // Copyright:   (c) 2006 Vadim Zeitlin <vadim@wxwindows.org>
 
- // Licence:     wxWindows licence
 
- ///////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_GTK_PRIVATE_STRING_H_
 
- #define _WX_GTK_PRIVATE_STRING_H_
 
- // ----------------------------------------------------------------------------
 
- // Convenience class for g_freeing a gchar* on scope exit automatically
 
- // ----------------------------------------------------------------------------
 
- class wxGtkString
 
- {
 
- public:
 
-     explicit wxGtkString(gchar *s) : m_str(s) { }
 
-     ~wxGtkString() { g_free(m_str); }
 
-     const gchar *c_str() const { return m_str; }
 
-     operator gchar *() const { return m_str; }
 
- private:
 
-     gchar *m_str;
 
-     wxDECLARE_NO_COPY_CLASS(wxGtkString);
 
- };
 
- // ----------------------------------------------------------------------------
 
- // list for sorting collated strings
 
- // ----------------------------------------------------------------------------
 
- #include "wx/string.h"
 
- #include "wx/vector.h"
 
- #include "wx/sharedptr.h"
 
- class wxGtkCollatableString
 
- {
 
- public:
 
-     wxGtkCollatableString( const wxString &label, gchar *key )
 
-     {
 
-         m_label = label;
 
-         m_key = key;
 
-     }
 
-     ~wxGtkCollatableString()
 
-     {
 
-         if (m_key)
 
-             g_free( m_key );
 
-     }
 
-     wxString     m_label;
 
-     gchar       *m_key;
 
- };
 
- class wxGtkCollatedArrayString
 
- {
 
- public:
 
-     wxGtkCollatedArrayString() { }
 
-     int Add( const wxString &new_label )
 
-     {
 
-         int index = 0;
 
-         gchar *new_key_lower = g_utf8_casefold( new_label.utf8_str(), -1);
 
-         gchar *new_key = g_utf8_collate_key( new_key_lower, -1);
 
-         g_free( new_key_lower );
 
-         wxSharedPtr<wxGtkCollatableString> new_ptr( new wxGtkCollatableString( new_label, new_key ) );
 
-         wxVector< wxSharedPtr<wxGtkCollatableString> >::iterator iter;
 
-         for (iter = m_list.begin(); iter != m_list.end(); ++iter)
 
-         {
 
-             wxSharedPtr<wxGtkCollatableString> ptr = *iter;
 
-             gchar *key = ptr->m_key;
 
-             if (strcmp(key,new_key) >= 0)
 
-             {
 
-                 m_list.insert( iter, new_ptr );
 
-                 return index;
 
-             }
 
-             index ++;
 
-         }
 
-         m_list.push_back( new_ptr );
 
-         return index;
 
-     }
 
-     size_t GetCount()
 
-     {
 
-         return m_list.size();
 
-     }
 
-     wxString At( size_t index )
 
-     {
 
-         return m_list[index]->m_label;
 
-     }
 
-     void Clear()
 
-     {
 
-         m_list.clear();
 
-     }
 
-     void RemoveAt( size_t index )
 
-     {
 
-         m_list.erase( m_list.begin() + index );
 
-     }
 
- private:
 
-     wxVector< wxSharedPtr<wxGtkCollatableString> > m_list;
 
- };
 
- #endif // _WX_GTK_PRIVATE_STRING_H_
 
 
  |