Added GetCount() to wxList and wxDaynArray git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@734 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			149 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/////////////////////////////////////////////////////////////////////////////
 | 
						|
// Name:        list.h
 | 
						|
// Purpose:     wxList, wxStringList classes
 | 
						|
// Author:      Julian Smart
 | 
						|
// Modified by:
 | 
						|
// Created:     29/01/98
 | 
						|
// RCS-ID:      $Id$
 | 
						|
// Copyright:   (c) 1998 Julian Smart
 | 
						|
// Licence:   	wxWindows license
 | 
						|
/////////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef _WX_LISTH__
 | 
						|
#define _WX_LISTH__
 | 
						|
 | 
						|
#ifdef __GNUG__
 | 
						|
#pragma interface "list.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#include "wx/defs.h"
 | 
						|
#include "wx/object.h"
 | 
						|
 | 
						|
class WXDLLEXPORT wxList;
 | 
						|
 | 
						|
#define wxKEY_NONE    0
 | 
						|
#define wxKEY_INTEGER 1
 | 
						|
#define wxKEY_STRING  2
 | 
						|
class WXDLLEXPORT wxNode: public wxObject
 | 
						|
{
 | 
						|
  DECLARE_DYNAMIC_CLASS(wxNode)
 | 
						|
 private:
 | 
						|
 
 | 
						|
  wxObject *data;
 | 
						|
  wxNode *next;
 | 
						|
  wxNode *previous;
 | 
						|
 | 
						|
 public:
 | 
						|
  wxList *list;
 | 
						|
 | 
						|
  // Optional key stuff
 | 
						|
  union
 | 
						|
  {
 | 
						|
    long integer;
 | 
						|
    char *string;
 | 
						|
  } key;
 | 
						|
 | 
						|
  wxNode(wxList *the_list = (wxList *) NULL, wxNode *last_one = (wxNode *) NULL, wxNode *next_one = (wxNode *) NULL, wxObject *object = (wxObject *) NULL);
 | 
						|
  wxNode(wxList *the_list, wxNode *last_one, wxNode *next_one,
 | 
						|
         wxObject *object, long the_key);
 | 
						|
  wxNode(wxList *the_list, wxNode *last_one, wxNode *next_one,
 | 
						|
         wxObject *object, const char *the_key);
 | 
						|
  ~wxNode(void);
 | 
						|
 | 
						|
  inline wxNode *Next(void) const { return next; }
 | 
						|
  inline wxNode *Previous(void) const { return previous; }
 | 
						|
  inline wxObject *Data(void) const { return (wxObject *)data; }
 | 
						|
  inline void SetData(wxObject *the_data) { data = the_data; }
 | 
						|
};
 | 
						|
 | 
						|
// type of compare function for list sort operation (as in 'qsort')
 | 
						|
typedef int (*wxSortCompareFunction)(const void *elem1, const void *elem2);
 | 
						|
typedef int (*wxListIterateFunction)(wxObject *o);
 | 
						|
 | 
						|
class WXDLLEXPORT wxList: public wxObject
 | 
						|
{
 | 
						|
  DECLARE_DYNAMIC_CLASS(wxList)
 | 
						|
 | 
						|
 public:
 | 
						|
  int n;
 | 
						|
  int destroy_data;
 | 
						|
  wxNode *first_node;
 | 
						|
  wxNode *last_node;
 | 
						|
  unsigned int key_type;
 | 
						|
 | 
						|
  wxList(void);
 | 
						|
  wxList(const unsigned int the_key_type);
 | 
						|
  wxList(int N, wxObject *Objects[]);
 | 
						|
  wxList(wxObject *object, ...);
 | 
						|
  
 | 
						|
  ~wxList(void);
 | 
						|
 | 
						|
  inline int Number(void) const { return n; }
 | 
						|
  inline int GetCount(void) const { return n; }
 | 
						|
 | 
						|
  // Append to end of list
 | 
						|
  wxNode *Append(wxObject *object);
 | 
						|
 | 
						|
  // Insert at front of list
 | 
						|
  wxNode *Insert(wxObject *object);
 | 
						|
 | 
						|
  // Insert before given node
 | 
						|
  wxNode *Insert(wxNode *position, wxObject *object);
 | 
						|
 | 
						|
  // Keyed append
 | 
						|
  wxNode *Append(long key, wxObject *object);
 | 
						|
  wxNode *Append(const char *key, wxObject *object);
 | 
						|
 | 
						|
  bool DeleteNode(wxNode *node);
 | 
						|
  bool DeleteObject(wxObject *object);  // Finds object pointer and
 | 
						|
                                        // deletes node (and object if
 | 
						|
                                        // DeleteContents is on)
 | 
						|
  virtual void Clear(void);             // Delete all nodes
 | 
						|
 | 
						|
  inline wxNode *First(void) const { return first_node; }
 | 
						|
  inline wxNode *Last(void) const { return last_node; }
 | 
						|
  wxNode *Nth(int i) const;                  // nth node counting from 0
 | 
						|
 | 
						|
  // Keyed search
 | 
						|
  virtual wxNode *Find(long key) const;
 | 
						|
  virtual wxNode *Find(const char *key) const;
 | 
						|
 | 
						|
  virtual wxNode *Member(wxObject *object) const;
 | 
						|
 | 
						|
  inline void DeleteContents(int destroy) { destroy_data = destroy; }
 | 
						|
                                             // Instruct it to destroy user data
 | 
						|
                                             // when deleting nodes
 | 
						|
  // this function allows the sorting of arbitrary lists by giving
 | 
						|
  // a function to compare two list elements.
 | 
						|
  void Sort(const wxSortCompareFunction compfunc);
 | 
						|
 | 
						|
  wxObject *FirstThat(wxListIterateFunction func);
 | 
						|
  void ForEach(wxListIterateFunction func);
 | 
						|
  wxObject *LastThat(wxListIterateFunction func);
 | 
						|
};
 | 
						|
 | 
						|
// String list class. N.B. this always copies strings
 | 
						|
// with Add and deletes them itself.
 | 
						|
class WXDLLEXPORT wxStringList: public wxList
 | 
						|
{
 | 
						|
  DECLARE_DYNAMIC_CLASS(wxStringList)
 | 
						|
 | 
						|
 public:
 | 
						|
  wxStringList(void);
 | 
						|
  wxStringList(const wxStringList& list);
 | 
						|
  wxStringList(const char *first ...);
 | 
						|
  ~wxStringList(void);
 | 
						|
 | 
						|
  virtual wxNode *Add(const char *s);
 | 
						|
  virtual void Delete(const char *s);
 | 
						|
  virtual char **ListToArray(bool new_copies = FALSE) const;
 | 
						|
  virtual void Sort(void);
 | 
						|
  virtual bool Member(const char *s) const;
 | 
						|
  virtual void Clear(void);
 | 
						|
  void operator= (const wxStringList& list);
 | 
						|
  char* operator[] (int i) const;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 | 
						|
    // _WX_LISTH__
 |