|
version 1.5.20.1, 2015/06/25 00:36:47
|
version 1.12.4.1, 2025/08/21 15:40:07
|
|
Line 12 terms:
|
Line 12 terms:
|
| All of the documentation and software included in the ELWIX and AITNET |
All of the documentation and software included in the ELWIX and AITNET |
| Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org> |
| |
|
| Copyright 2004 - 2015 | Copyright 2004 - 2024 |
| by Michael Pounov <misho@elwix.org>. All rights reserved. |
by Michael Pounov <misho@elwix.org>. All rights reserved. |
| |
|
| Redistribution and use in source and binary forms, with or without |
Redistribution and use in source and binary forms, with or without |
|
Line 53 typedef struct _tagArray {
|
Line 53 typedef struct _tagArray {
|
| void **arr_data; |
void **arr_data; |
| } array_t; |
} array_t; |
| |
|
| |
#define array_Data(_arr) ((_arr) ? (_arr)->arr_data : NULL) |
| #define array_Size(_arr) ((_arr) ? (_arr)->arr_num : 0) |
#define array_Size(_arr) ((_arr) ? (_arr)->arr_num : 0) |
| #define array_Last(_arr) (array_Size((_arr)) ? (_arr)->arr_last : -1) |
#define array_Last(_arr) (array_Size((_arr)) ? (_arr)->arr_last : -1) |
| #define array_Zero(_arr) (assert((_arr)), memset((_arr)->arr_data, 0, \ | #define array_Zero(_arr) (assert((_arr)), (_arr)->arr_last = -1, \ |
| array_Size((_arr)) * sizeof(intptr_t))) | memset((_arr)->arr_data, 0, array_Size((_arr)) * sizeof(intptr_t))) |
| |
|
| #define array_Ptr(_arr, _d) ((_arr) ? (_arr)->arr_data[_d] : NULL) | #define array_Ptr(_arr, _d) ((_arr && (_arr)->arr_data) ? (_arr)->arr_data[_d] : NULL) |
| #define array_Get2(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), ((_arr)->arr_data + _d)) |
#define array_Get2(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), ((_arr)->arr_data + _d)) |
| #define array_Get(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), (_arr)->arr_data[_d]) | #define array_Get(_arr, _d) (assert((_arr) && (_arr)->arr_data), (_arr)->arr_data[_d]) |
| #define array(_arr, _d, _type) (assert((_arr) && (_arr)->arr_num > _d), \ | #define array(_arr, _d, _type) (assert((_arr) && (_arr)->arr_data), ((_type) (_arr)->arr_data[_d])) |
| ((_type) (_arr)->arr_data[_d])) | #define array_Set(_arr, _d, _ptr) do { int __d = _d; assert((_arr) && (_arr)->arr_num > __d); \ |
| #define array_Set(_arr, _d, _ptr) do { assert((_arr) && (_arr)->arr_num > _d); \ | if ((_arr)->arr_last < __d) \ |
| if ((_arr)->arr_last < _d) \ | (_arr)->arr_last = __d; \ |
| (_arr)->arr_last = _d; \ | (_arr)->arr_data[__d] = (void*) (_ptr); \ |
| (_arr)->arr_data[_d] = (void*) (_ptr); \ | |
| } while (0) |
} while (0) |
| #define array_Del(_arr, _d, _fri) do { assert((_arr) && (_arr)->arr_num > _d); \ | #define array_Del(_arr, _d, _fri) do { int __d = _d; assert((_arr) && (_arr)->arr_num > __d); \ |
| if (_fri && (_arr)->arr_data[_d]) \ | if (_fri && (_arr)->arr_data[__d]) \ |
| e_free((_arr)->arr_data[_d]); \ | e_free((_arr)->arr_data[__d]); \ |
| (_arr)->arr_data[_d] = NULL; \ | (_arr)->arr_data[__d] = NULL; \ |
| } while (0) |
} while (0) |
| |
#define array_Var(_arr, _d) (assert((_arr) && (_arr)->arr_num > _d), (ait_val_t*) (_arr)->arr_data[_d]) |
| |
|
| |
#ifdef __cplusplus |
| |
extern "C" { |
| |
#endif |
| |
|
| /* |
/* |
| * array_Init() - Create and initialize dynamic array |
* array_Init() - Create and initialize dynamic array |
| * |
* |
|
Line 82 typedef struct _tagArray {
|
Line 87 typedef struct _tagArray {
|
| */ |
*/ |
| array_t *array_Init(int numItems); |
array_t *array_Init(int numItems); |
| /* |
/* |
| |
* array_Init2() - Initialize dynamic array |
| |
* |
| |
* @arr = Allocated array variable |
| |
* @numItems = Number of Items |
| |
* return: NULL error, != NULL allocated memory for array |
| |
*/ |
| |
array_t *array_Init2(array_t * __restrict arr, int numItems); |
| |
/* |
| * array_Destroy() - Free and destroy dynamic array |
* array_Destroy() - Free and destroy dynamic array |
| * |
* |
| * @parr = Array |
* @parr = Array |
|
Line 89 array_t *array_Init(int numItems);
|
Line 102 array_t *array_Init(int numItems);
|
| */ |
*/ |
| void array_Destroy(array_t ** __restrict parr); |
void array_Destroy(array_t ** __restrict parr); |
| /* |
/* |
| |
* array_Destroy2() - Free data in dynamic array |
| |
* |
| |
* @parr = Array |
| |
* return: none |
| |
*/ |
| |
void array_Destroy2(array_t * __restrict arr); |
| |
/* |
| * array_Free() - Free all data in dynamic array items |
* array_Free() - Free all data in dynamic array items |
| * (WARNING! If assign static array dont use this!!!) |
* (WARNING! If assign static array dont use this!!!) |
| * |
* |
|
Line 96 void array_Destroy(array_t ** __restrict parr);
|
Line 116 void array_Destroy(array_t ** __restrict parr);
|
| * return: none |
* return: none |
| */ |
*/ |
| void array_Free(array_t * __restrict arr); |
void array_Free(array_t * __restrict arr); |
| |
/* |
| |
* array_Reset() - Reset array to initial state |
| |
* |
| |
* @parr = Array |
| |
* @purge = Purge all data, if <>0 then will be free entire data memory |
| |
* return: none |
| |
*/ |
| |
void array_Reset(array_t * __restrict arr, int purge); |
| |
|
| /* |
/* |
| * array_From() - Create and fill array from array with pointers |
* array_From() - Create and fill array from array with pointers |
|
Line 195 int array_Push(array_t * __restrict arr, void *data, i
|
Line 223 int array_Push(array_t * __restrict arr, void *data, i
|
| */ |
*/ |
| int array_Pop(array_t * __restrict arr, void ** __restrict data, int nodel); |
int array_Pop(array_t * __restrict arr, void ** __restrict data, int nodel); |
| |
|
| |
#ifdef __cplusplus |
| |
} |
| |
#endif |
| |
|
| #endif |
#endif |