wxWidgets: interface/wx/dynarray.h File Reference

| Version: 3.1.5

Classes | Macros | Typedefs
dynarray.h File Reference

## Classes
class | wxArray< T >
| The legacy dynamic array class, existing for compatibility only and NOT to be used in the new code. More...

## Macros
#define | WX_APPEND_ARRAY(wxArray_arrayToModify, wxArray_arrayToBeAppended)
| This macro may be used to append all elements of the wxArray_arrayToBeAppended array to the wxArray_arrayToModify. More...
#define | WX_CLEAR_ARRAY(wxArray_arrayToBeCleared)
| This macro may be used to delete all elements of the array before emptying it. More...
#define | WX_DECLARE_OBJARRAY(T, name)
| This macro declares a new object array class named name and containing the elements of type T. More...
#define | WX_DECLARE_EXPORTED_OBJARRAY(T, name)
#define | WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name, expmode)
#define | WX_DEFINE_ARRAY(T, name)
| This macro defines a new array class named name and containing the elements of type T. More...
#define | WX_DEFINE_EXPORTED_ARRAY(T, name)
#define | WX_DEFINE_USER_EXPORTED_ARRAY(T, name, exportspec)
#define | WX_DEFINE_OBJARRAY(name)
| This macro defines the methods of the array class name not defined by the WX_DECLARE_OBJARRAY() macro. More...
#define | WX_DEFINE_EXPORTED_OBJARRAY(name)
#define | WX_DEFINE_USER_EXPORTED_OBJARRAY(name)
#define | WX_DEFINE_SORTED_ARRAY(T, name)
| This macro defines a new sorted array class named name and containing the elements of type T. More...
#define | WX_DEFINE_SORTED_EXPORTED_ARRAY(T, name)
#define | WX_DEFINE_SORTED_USER_EXPORTED_ARRAY(T, name, expmode)
#define | WX_PREPEND_ARRAY(wxArray_arrayToModify, wxArray_arrayToBePrepended)
| This macro may be used to prepend all elements of the wxArray_arrayToBePrepended array to the wxArray_arrayToModify. More...

## Typedefs
typedef wxArray< int > | wxArrayInt
| Predefined specialization of wxArray<T> for standard types. More...
typedef wxArray< long > | wxArrayLong
typedef wxArray< short > | wxArrayShort
typedef wxArray< double > | wxArrayDouble
typedef wxArray< void * > | wxArrayPtrVoid

## Macro Definition Documentation

## ◆ WX_APPEND_ARRAY

#define WX_APPEND_ARRAY | ( |  | wxArray_arrayToModify,
|  |  | wxArray_arrayToBeAppended
| ) |  |

This macro may be used to append all elements of the wxArray_arrayToBeAppended array to the wxArray_arrayToModify.

The two arrays must be of the same type.

## ◆ WX_CLEAR_ARRAY

#define WX_CLEAR_ARRAY | ( |  | wxArray_arrayToBeCleared | ) |

This macro may be used to delete all elements of the array before emptying it.

It cannot be used with wxObjArrays - but they will delete their elements anyway when you call Empty().

## ◆ WX_DECLARE_EXPORTED_OBJARRAY

#define WX_DECLARE_EXPORTED_OBJARRAY | ( |  | T,
|  |  | name
| ) |  |

## ◆ WX_DECLARE_OBJARRAY

#define WX_DECLARE_OBJARRAY | ( |  | T,
|  |  | name
| ) |  |

This macro declares a new object array class named name and containing the elements of type T.

An exported array is used when compiling wxWidgets as a DLL under Windows, and the array needs to be visible outside the DLL. A user-exported array is needed for exporting an array from a user DLL.

Example:

class MyClass;
WX_DECLARE_OBJARRAY(MyClass, wxArrayOfMyClass); // note: not "MyClass *"!
WX_DECLARE_OBJARRAY
#define WX_DECLARE_OBJARRAY(T, name)
This macro declares a new object array class named name and containing the elements of type T.
Definition: dynarray.h:687

You must use the WX_DEFINE_OBJARRAY() macro to define the array class; otherwise, you will get link errors.

## ◆ WX_DECLARE_USER_EXPORTED_OBJARRAY

#define WX_DECLARE_USER_EXPORTED_OBJARRAY | ( |  | T,
|  |  | name,
|  |  | expmode
| ) |  |

## ◆ WX_DEFINE_ARRAY

#define WX_DEFINE_ARRAY | ( |  | T,
|  |  | name
| ) |  |

This macro defines a new array class named name and containing the elements of type T.

An exported array is used when compiling wxWidgets as a DLL under Windows and the array needs to be visible outside the DLL. A user-exported array is needed for exporting an array from a user DLL.

Example:

WX_DEFINE_ARRAY_INT(int, MyArrayInt);
class MyClass;
WX_DEFINE_ARRAY(MyClass *, ArrayOfMyClass);
WX_DEFINE_ARRAY
#define WX_DEFINE_ARRAY(T, name)
This macro defines a new array class named name and containing the elements of type T.
Definition: dynarray.h:714

Note that wxWidgets predefines the following standard array classes: wxArrayInt, wxArrayLong, wxArrayShort, wxArrayDouble, wxArrayPtrVoid.

## ◆ WX_DEFINE_EXPORTED_ARRAY

#define WX_DEFINE_EXPORTED_ARRAY | ( |  | T,
|  |  | name
| ) |  |

## ◆ WX_DEFINE_EXPORTED_OBJARRAY

#define WX_DEFINE_EXPORTED_OBJARRAY | ( |  | name | ) |

## ◆ WX_DEFINE_OBJARRAY

#define WX_DEFINE_OBJARRAY | ( |  | name | ) |

This macro defines the methods of the array class name not defined by the WX_DECLARE_OBJARRAY() macro.

You must include the file <wx/arrimpl.cpp> before using this macro and you must have the full declaration of the class of array elements in scope! If you forget to do the first, the error will be caught by the compiler, but, unfortunately, many compilers will not give any warnings if you forget to do the second - but the objects of the class will not be copied correctly and their real destructor will not be called.

An exported array is used when compiling wxWidgets as a DLL under Windows and the array needs to be visible outside the DLL. A user-exported array is needed for exporting an array from a user DLL.

Example of usage:

// first declare the class!
class MyClass
{
public:
MyClass(const MyClass&);
// ...
virtual ~MyClass();
};
#include <wx/arrimpl.cpp>
WX_DEFINE_OBJARRAY(wxArrayOfMyClass);
WX_DEFINE_OBJARRAY
#define WX_DEFINE_OBJARRAY(name)
This macro defines the methods of the array class name not defined by the WX_DECLARE_OBJARRAY() macro...
Definition: dynarray.h:752

## ◆ WX_DEFINE_SORTED_ARRAY

#define WX_DEFINE_SORTED_ARRAY | ( |  | T,
|  |  | name
| ) |  |

This macro defines a new sorted array class named name and containing the elements of type T.

An exported array is used when compiling wxWidgets as a DLL under Windows and the array needs to be visible outside the DLL. A user-exported array is needed for exporting an array from a user DLL.

Example:

WX_DEFINE_SORTED_ARRAY_INT(int, MySortedArrayInt);
class MyClass;
WX_DEFINE_SORTED_ARRAY(MyClass *, ArrayOfMyClass);
WX_DEFINE_SORTED_ARRAY
#define WX_DEFINE_SORTED_ARRAY(T, name)
This macro defines a new sorted array class named name and containing the elements of type T.
Definition: dynarray.h:795

You will have to initialize the objects of this class by passing a comparison function to the array object constructor like this:

int CompareInts(int n1, int n2)
{
return n1 - n2;
}
MySortedArrayInt sorted(CompareInts);
int CompareMyClassObjects(MyClass *item1, MyClass *item2)
{
// sort the items by their address...
return Stricmp(item1->GetAddress(), item2->GetAddress());
}
ArrayOfMyClass another(CompareMyClassObjects);

## ◆ WX_DEFINE_SORTED_EXPORTED_ARRAY

#define WX_DEFINE_SORTED_EXPORTED_ARRAY | ( |  | T,
|  |  | name
| ) |  |

## ◆ WX_DEFINE_SORTED_USER_EXPORTED_ARRAY

#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY | ( |  | T,
|  |  | name,
|  |  | expmode
| ) |  |

## ◆ WX_DEFINE_USER_EXPORTED_ARRAY

#define WX_DEFINE_USER_EXPORTED_ARRAY | ( |  | T,
|  |  | name,
|  |  | exportspec
| ) |  |

## ◆ WX_DEFINE_USER_EXPORTED_OBJARRAY

#define WX_DEFINE_USER_EXPORTED_OBJARRAY | ( |  | name | ) |

## ◆ WX_PREPEND_ARRAY

#define WX_PREPEND_ARRAY | ( |  | wxArray_arrayToModify,
|  |  | wxArray_arrayToBePrepended
| ) |  |

This macro may be used to prepend all elements of the wxArray_arrayToBePrepended array to the wxArray_arrayToModify.

The two arrays must be of the same type.

## Typedef Documentation

## ◆ wxArrayDouble

typedef wxArray<double> wxArrayDouble

## ◆ wxArrayInt

typedef wxArray<int> wxArrayInt

Predefined specialization of wxArray<T> for standard types.

## ◆ wxArrayLong

typedef wxArray<long> wxArrayLong

## ◆ wxArrayPtrVoid

typedef wxArray<void*> wxArrayPtrVoid

## ◆ wxArrayShort

typedef wxArray<short> wxArrayShort