#ifndef __Array__H
#define __Array__H

#include "WimpLib:std.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct Array Array;

Array* New_Array   (int elem_size, int grow_count) throws(mem);
void   Delete_Array(Array*);

int    Array_Count (const Array*);

void*  Array_Insert(Array*, int index, const void* pobj) throws(mem index);
void   Array_Remove(Array*, int index) throws(index);
void   Array_Delete(Array*, int start, int end /* Exclusive */) throws(index);
void   Array_Clear (Array*);

void*  Array_Get   (const Array*, int index) throws(index);
int    Array_Find  (const Array*, int start, const void* pobj) throws(index);

#ifdef __cplusplus
}
#endif

#endif
