// Created: 12.09.97
// RCS-ID: $Id$
// Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
-// Licence: wxWindows license
+// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _DYNARRAY_H
#define _DYNARRAY_H
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "dynarray.h"
#endif
void Alloc(size_t uiSize); \
void Shrink(); \
\
- size_t GetCount() const { return m_nCount; } \
- bool IsEmpty() const { return m_nCount == 0; } \
- size_t Count() const { return m_nCount; } \
+ size_t GetCount() const { return m_nCount; } \
+ void SetCount(size_t n, T defval = T(0)); \
+ bool IsEmpty() const { return m_nCount == 0; } \
+ size_t Count() const { return m_nCount; } \
\
typedef T base_type; \
+ \
protected: \
T& Item(size_t uiIndex) const \
{ wxASSERT( uiIndex < m_nCount ); return m_pItems[uiIndex]; } \
void Sort(CMPFUNC fnCompare); \
\
private: \
- \
- void Grow(size_t nIncrement = 0); \
+ void Grow(size_t nIncrement = 0); \
+ bool Realloc(size_t nSize); \
\
size_t m_nSize, \
m_nCount; \
\
T *m_pItems; \
-};
+}
// ============================================================================
// The private helper macros containing the core of the array classes
{ return (T&)(base::Item(Count() - 1)); } \
\
int Index(T Item, bool bFromEnd = FALSE) const \
- { return base::Index(Item, bFromEnd); } \
+ { return base::Index((base_type)Item, bFromEnd); } \
\
void Add(T Item, size_t nInsert = 1) \
- { base::Add(Item, nInsert); } \
+ { base::Add((base_type)Item, nInsert); } \
void Insert(T Item, size_t uiIndex, size_t nInsert = 1) \
- { base::Insert(Item, uiIndex, nInsert) ; } \
+ { base::Insert((base_type)Item, uiIndex, nInsert) ; } \
\
void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
{ base::RemoveAt(uiIndex, nRemove); } \