add slist_tail/slist_head

This commit is contained in:
lixianjing 2023-06-21 17:56:04 +08:00
parent 90ef05a47f
commit cd34c329b0
4 changed files with 59 additions and 0 deletions

View File

@ -3,6 +3,7 @@
2023/06/21
* 修复action\_thread quit时间过长问题(感谢兆坤提供补丁)。
* 完善dialog的注释(感谢泽武提供补丁)
* 增加函数slist\_tail/slist\_head。
2023/06/20
* 修复 widget\_get\_style 获取非当前状态的 mutable 风格失败的问题(感谢智明提供补丁)

View File

@ -218,6 +218,33 @@ void* slist_head_pop(slist_t* slist) {
return data;
}
void* slist_tail(slist_t* slist) {
slist_node_t* iter = NULL;
return_value_if_fail(slist != NULL, NULL);
iter = slist->first;
return_value_if_fail(iter != NULL, NULL);
while (iter->next != NULL) {
iter = iter->next;
}
return iter->data;
}
void* slist_head(slist_t* slist) {
slist_node_t* iter = NULL;
return_value_if_fail(slist != NULL, NULL);
iter = slist->first;
if (iter == NULL) {
return NULL;
}
return iter->data;
}
bool_t slist_is_empty(slist_t* slist) {
return_value_if_fail(slist != NULL, TRUE);
return slist->first == NULL;

View File

@ -204,6 +204,24 @@ void* slist_tail_pop(slist_t* slist);
*/
void* slist_head_pop(slist_t* slist);
/**
* @method slist_tail
*
* @param {slist_t*} slist
*
* @return {void*} NULL
*/
void* slist_tail(slist_t* slist);
/**
* @method slist_head
*
* @param {slist_t*} slist
*
* @return {void*} NULL
*/
void* slist_head(slist_t* slist);
/**
* @method slist_is_empty
*

View File

@ -83,8 +83,21 @@ TEST(SList, tail_pop) {
ASSERT_EQ(slist_append(s, TO_POINTER(4)), RET_OK);
ASSERT_EQ(slist_append(s, TO_POINTER(5)), RET_OK);
ASSERT_EQ(TO_INT(slist_tail(s)), 5);
ASSERT_EQ(TO_INT(slist_tail(s)), 5);
ASSERT_EQ(TO_INT(slist_tail(s)), 5);
ASSERT_EQ(slist_size(s), 5);
ASSERT_EQ(TO_INT(slist_head(s)), 1);
ASSERT_EQ(TO_INT(slist_head(s)), 1);
ASSERT_EQ(TO_INT(slist_head(s)), 1);
ASSERT_EQ(slist_size(s), 5);
ASSERT_EQ(TO_INT(slist_tail_pop(s)), 5);
ASSERT_EQ(TO_INT(slist_tail(s)), 4);
ASSERT_EQ(TO_INT(slist_head_pop(s)), 1);
ASSERT_EQ(TO_INT(slist_head(s)), 2);
ASSERT_EQ(slist_size(s), 3);