Merge branch 'refact/slguan' of https://github.com/taosdata/TDengine into refact/slguan
This commit is contained in:
commit
b41f8e17a6
|
@ -56,7 +56,7 @@ void* taosArrayPush(SArray* pArray, void* pData);
|
||||||
void taosArrayPop(SArray* pArray);
|
void taosArrayPop(SArray* pArray);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* get the data from array
|
||||||
* @param pArray
|
* @param pArray
|
||||||
* @param index
|
* @param index
|
||||||
* @return
|
* @return
|
||||||
|
@ -64,25 +64,33 @@ void taosArrayPop(SArray* pArray);
|
||||||
void* taosArrayGet(SArray* pArray, size_t index);
|
void* taosArrayGet(SArray* pArray, size_t index);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* get the pointer data from the array
|
||||||
|
* @param pArray
|
||||||
|
* @param index
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
void* taosArrayGetP(SArray* pArray, size_t index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the size of array
|
||||||
* @param pArray
|
* @param pArray
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
size_t taosArrayGetSize(SArray* pArray);
|
size_t taosArrayGetSize(SArray* pArray);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* insert data into array
|
||||||
* @param pArray
|
* @param pArray
|
||||||
* @param index
|
* @param index
|
||||||
* @param pData
|
* @param pData
|
||||||
*/
|
*/
|
||||||
void taosArrayInsert(SArray* pArray, int32_t index, void* pData);
|
void* taosArrayInsert(SArray* pArray, size_t index, void* pData);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @param pArray
|
* @param pArray
|
||||||
*/
|
*/
|
||||||
void taosArrayDestory(SArray* pArray);
|
void taosArrayDestroy(SArray* pArray);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,19 +38,21 @@ void* taosArrayInit(size_t size, size_t elemSize) {
|
||||||
return pArray;
|
return pArray;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void taosArrayResize(SArray* pArray) {
|
static int32_t taosArrayResize(SArray* pArray) {
|
||||||
assert(pArray->size >= pArray->capacity);
|
assert(pArray->size >= pArray->capacity);
|
||||||
|
|
||||||
size_t size = pArray->capacity;
|
size_t size = pArray->capacity;
|
||||||
size = (size << 1u);
|
size = (size << 1u);
|
||||||
|
|
||||||
void* tmp = realloc(pArray->pData, size * pArray->elemSize);
|
void* tmp = realloc(pArray->pData, size * pArray->elemSize);
|
||||||
if (tmp == NULL) {
|
if (tmp == NULL) { // reallocate failed, the original buffer remains
|
||||||
// todo
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
pArray->pData = tmp;
|
pArray->pData = tmp;
|
||||||
pArray->capacity = size;
|
pArray->capacity = size;
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* taosArrayPush(SArray* pArray, void* pData) {
|
void* taosArrayPush(SArray* pArray, void* pData) {
|
||||||
|
@ -59,7 +61,12 @@ void* taosArrayPush(SArray* pArray, void* pData) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pArray->size >= pArray->capacity) {
|
if (pArray->size >= pArray->capacity) {
|
||||||
taosArrayResize(pArray);
|
int32_t ret = taosArrayResize(pArray);
|
||||||
|
|
||||||
|
// failed to push data into buffer due to the failure of memory allocation
|
||||||
|
if (ret != 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void* dst = TARRAY_GET_ELEM(pArray, pArray->size);
|
void* dst = TARRAY_GET_ELEM(pArray, pArray->size);
|
||||||
|
@ -82,20 +89,32 @@ void* taosArrayGet(SArray* pArray, size_t index) {
|
||||||
return TARRAY_GET_ELEM(pArray, index);
|
return TARRAY_GET_ELEM(pArray, index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void* taosArrayGetP(SArray* pArray, size_t index) {
|
||||||
|
void* ret = taosArrayGet(pArray, index);
|
||||||
|
if (ret == NULL) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *(void**)ret;
|
||||||
|
}
|
||||||
|
|
||||||
size_t taosArrayGetSize(SArray* pArray) { return pArray->size; }
|
size_t taosArrayGetSize(SArray* pArray) { return pArray->size; }
|
||||||
|
|
||||||
void taosArrayInsert(SArray* pArray, int32_t index, void* pData) {
|
void* taosArrayInsert(SArray* pArray, size_t index, void* pData) {
|
||||||
if (pArray == NULL || pData == NULL) {
|
if (pArray == NULL || pData == NULL) {
|
||||||
return;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (index >= pArray->size) {
|
if (index >= pArray->size) {
|
||||||
taosArrayPush(pArray, pData);
|
return taosArrayPush(pArray, pData);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pArray->size >= pArray->capacity) {
|
if (pArray->size >= pArray->capacity) {
|
||||||
taosArrayResize(pArray);
|
int32_t ret = taosArrayResize(pArray);
|
||||||
|
|
||||||
|
if (ret < 0) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void* dst = TARRAY_GET_ELEM(pArray, index);
|
void* dst = TARRAY_GET_ELEM(pArray, index);
|
||||||
|
@ -105,9 +124,11 @@ void taosArrayInsert(SArray* pArray, int32_t index, void* pData) {
|
||||||
memcpy(dst, pData, pArray->elemSize);
|
memcpy(dst, pData, pArray->elemSize);
|
||||||
|
|
||||||
pArray->size += 1;
|
pArray->size += 1;
|
||||||
|
|
||||||
|
return dst;
|
||||||
}
|
}
|
||||||
|
|
||||||
void taosArrayDestory(SArray* pArray) {
|
void taosArrayDestroy(SArray* pArray) {
|
||||||
if (pArray == NULL) {
|
if (pArray == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue