mirror of
https://github.com/go-vgo/robotgo.git
synced 2025-06-01 14:43:55 +00:00
34 lines
1.0 KiB
C
34 lines
1.0 KiB
C
#pragma once
|
|
#ifndef MMARRAY_H
|
|
#define MMARRAY_H
|
|
|
|
#include "types.h"
|
|
|
|
struct _MMPointArray {
|
|
MMPoint *array; /* Pointer to actual data. */
|
|
size_t count; /* Number of elements in array. */
|
|
size_t _allocedCount; /* Private; do not use outside of MMPointArray.c. */
|
|
};
|
|
|
|
typedef struct _MMPointArray MMPointArray;
|
|
typedef MMPointArray *MMPointArrayRef;
|
|
|
|
/* Creates array of an initial size (the maximum size is still limitless).
|
|
* This follows the "Create" Rule; i.e., responsibility for "destroying" the
|
|
* array is given to the caller. */
|
|
MMPointArrayRef createMMPointArray(size_t initialCount);
|
|
|
|
/* Frees memory occupied by |pointArray|. Does not accept NULL. */
|
|
void destroyMMPointArray(MMPointArrayRef pointArray);
|
|
|
|
/* Appends a point to an array, increasing the internal size if necessary. */
|
|
void MMPointArrayAppendPoint(MMPointArrayRef pointArray, MMPoint point);
|
|
|
|
/* Retrieve point from array. */
|
|
#define MMPointArrayGetItem(a, i) ((a)->array)[i]
|
|
|
|
/* Set point in array. */
|
|
#define MMPointArraySetItem(a, i, item) ((a)->array[i] = item)
|
|
|
|
#endif /* MMARRAY_H */
|