| Version: 3.2.5

Classes | Macros
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_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...
#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)
| This macro declares a new object array class named name and containing the elements of type T. More...
#define | WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name, expmode)
| This macro declares a new object array class named name and containing the elements of type T. More...
#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)
| This macro defines a new array class named name and containing the elements of type T. More...
#define | WX_DEFINE_USER_EXPORTED_ARRAY(T, name, exportspec)
| This macro defines a new array class named name and containing the elements of type T. More...
#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)
| This macro defines the methods of the array class name not defined by the WX_DECLARE_OBJARRAY() macro. More...
#define | WX_DEFINE_USER_EXPORTED_OBJARRAY(name)
| This macro defines the methods of the array class name not defined by the WX_DECLARE_OBJARRAY() macro. More...
#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)
| This macro defines a new sorted array class named name and containing the elements of type T. More...
#define | WX_DEFINE_SORTED_USER_EXPORTED_ARRAY(T, name, expmode)
| This macro defines a new sorted array class named name and containing the elements of type T. More...

## Typedefs

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

## 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
| ) |  |

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:695

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

## ◆ 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 *"!

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
| ) |  |

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 *"!

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

## ◆ 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:722

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
| ) |  |

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);

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

## ◆ WX_DEFINE_EXPORTED_OBJARRAY

#define WX_DEFINE_EXPORTED_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:760

## ◆ 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_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:803

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
| ) |  |

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);

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_USER_EXPORTED_ARRAY

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

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);

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_USER_EXPORTED_ARRAY

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

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);

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

## ◆ WX_DEFINE_USER_EXPORTED_OBJARRAY

#define WX_DEFINE_USER_EXPORTED_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_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

Predefined specialization of wxArray<T> for standard types.

## ◆ wxArrayInt

typedef wxArray<int> wxArrayInt

Predefined specialization of wxArray<T> for standard types.

## ◆ wxArrayLong

typedef wxArray<long> wxArrayLong

Predefined specialization of wxArray<T> for standard types.

## ◆ wxArrayPtrVoid

typedef wxArray<void*> wxArrayPtrVoid

Predefined specialization of wxArray<T> for standard types.

## ◆ wxArrayShort

typedef wxArray<short> wxArrayShort

Predefined specialization of wxArray<T> for standard types.