亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? list.c

?? 打魔獸戰網的都知道他是什么
?? C
字號:
/* * Copyright (C) 1998,1999,2000  Ross Combs (rocombs@cs.nmsu.edu) * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */#define LIST_INTERNAL_ACCESS#include "common/setup_before.h"#ifdef HAVE_STDDEF_H# include <stddef.h>#else# ifndef NULL#  define NULL ((void *)0)# endif#endif#ifdef STDC_HEADERS# include <stdlib.h>#else# ifdef HAVE_MALLOC_H#  include <malloc.h># endif#endif#ifdef HAVE_ASSERT_H# include <assert.h>#endif#include "common/eventlog.h"#include "common/xalloc.h"#include "common/list.h"#include "common/setup_after.h"static t_elem listhead;extern t_list * list_create(void){    t_list * new;        new = xmalloc(sizeof(t_list));    new->head = NULL;    new->tail = NULL;    new->len = 0;        return new;}extern int list_destroy(t_list * list){    if (!list)    {        eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");        return -1;    }        if (list->head)	eventlog(eventlog_level_error,__FUNCTION__,"got non-empty list");        xfree(list);        return 0;}extern unsigned int list_get_length(t_list const * list){    if (!list)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");	return 0;    }        return list->len;}extern int list_prepend_data(t_list * list, void * data){    t_elem * elem;        assert(list != NULL);    elem = xmalloc(sizeof(t_elem));    elem->data = data;    if (list->head)       list->head->prev = elem;    elem->next = list->head;    elem->prev = NULL;    list->head = elem;    if (!list->tail)	list->tail = elem;    list->len++;        return 0;}extern int list_append_data(t_list * list, void * data){    t_elem * elem;        assert(list != NULL);    elem = xmalloc(sizeof(t_elem));    elem->data = data;    elem->next = NULL;    if (!list->head)    	{	  list->head = elem;	  elem->prev = NULL;	}    if (list->tail)    	{	  elem->prev = list->tail;	  list->tail->next = elem;	}    list->tail = elem;    list->len++;        return 0;}extern t_elem * list_get_elem_by_data(t_list const * list, void const * data){    t_elem * curr;        if (!list)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");	return NULL;    }        LIST_TRAVERSE(list,curr)	if (curr->data==data)	    return curr;        return NULL;}extern t_elem const * list_get_elem_by_data_const(t_list const * list, void const * data){    t_elem const * curr;        if (!list)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");	return NULL;    }        LIST_TRAVERSE_CONST(list,curr)	if (curr->data==data)	    return curr;        return NULL;}extern int list_remove_elem(t_list * list, t_elem ** elem){    t_elem * target;        if (!list)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");	return -1;    }    if (!elem)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL *elem");	return -1;    }    target = *elem;     if (target->prev)    {      target->prev->next = target->next;    }    if (target->next)    {      target->next->prev = target->prev;    }    if (target == list->tail)    {      list->tail = target->prev;    }    if (target == list->head)    {      list->head = target->next;      *elem = &listhead;    }    else      *elem = target->prev;    target->next = NULL;    target->prev = NULL;    xfree(target);        list->len--;        return 0;}extern int list_remove_data(t_list * list, void const * data, t_elem ** elem){    if (!list)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");	return -1;    }        if (!(*elem = list_get_elem_by_data(list,data)))	return -1;        return list_remove_elem(list,elem);}extern int elem_set_data(t_elem * elem, void * data){    if (!elem)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem");	return -1;    }        elem->data = data;        return 0;}extern void * elem_get_data(t_elem const * elem){    if (!elem)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem");	return NULL;    }        return elem->data;}extern void * list_get_data_by_pos(t_list const * list, unsigned int pos){    t_elem const * curr;    unsigned int   len;        len = 0;    LIST_TRAVERSE_CONST(list,curr)	if (len++==pos)	    return curr->data;        eventlog(eventlog_level_error,__FUNCTION__,"requested position %u but len=%u",pos,len);    return NULL;}#ifdef LIST_DEBUGextern t_elem * list_get_first_real(t_list const * list, char const * fn, unsigned int ln)#elseextern t_elem * list_get_first(t_list const * list)#endif{    if (!list)    {#ifdef LIST_DEBUG	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list from %s:%u",fn,ln);#else	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");#endif	return NULL;    }            return list->head;}#ifdef LIST_DEBUGextern t_elem const * list_get_first_const_real(t_list const * list, char const * fn, unsigned int ln)#elseextern t_elem const * list_get_first_const(t_list const * list)#endif{    if (!list)    {#ifdef LIST_DEBUG	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list from %s:%u",fn,ln);#else	eventlog(eventlog_level_error,__FUNCTION__,"got NULL list");#endif	return NULL;    }        return list->head;}extern t_elem * elem_get_next_real(t_list const * list, t_elem const * elem, char const * fn, unsigned int ln){    if (!elem)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem from %s:%u",fn,ln);	return NULL;    }        if (elem == &listhead)        return list->head;    else        return elem->next;}extern t_elem const * elem_get_next_const(t_list const * list, t_elem const * elem){    if (!elem)    {	eventlog(eventlog_level_error,__FUNCTION__,"got NULL elem");	return NULL;    }        if (elem == &listhead)        return list->head;    else        return elem->next;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99国产精品视频免费观看| 国产99久久久国产精品免费看| 亚洲婷婷在线视频| 亚洲欧美激情小说另类| 亚洲aⅴ怡春院| 国产揄拍国内精品对白| 国产91丝袜在线18| 欧美人妇做爰xxxⅹ性高电影 | 日韩亚洲国产中文字幕欧美| 欧美一级欧美一级在线播放| 久久精品一区二区三区av| 亚洲人成电影网站色mp4| 蜜臀久久久久久久| 99国产精品国产精品毛片| 日韩西西人体444www| 亚洲精品国产无天堂网2021| 精品中文av资源站在线观看| 自拍av一区二区三区| 亚洲成人av免费| 97精品电影院| 欧美经典一区二区| 日本vs亚洲vs韩国一区三区| 99久久99久久免费精品蜜臀| 91精品在线免费观看| 国产精品国产a级| 黄色精品一二区| 欧美日韩夫妻久久| 最新国产成人在线观看| 国内不卡的二区三区中文字幕| 欧美精品亚洲二区| 天天综合网天天综合色| 欧美午夜一区二区| 中文字幕一区二区三区四区不卡| 日韩国产欧美在线视频| 欧洲人成人精品| 亚洲欧美日韩系列| 91污在线观看| 亚洲欧美日韩综合aⅴ视频| 国产一区二区三区在线观看精品| 欧美日韩和欧美的一区二区| 一区二区免费在线播放| 色一区在线观看| 亚洲一区二区三区小说| 欧美日韩午夜在线| 日韩成人一区二区三区在线观看| 日韩无一区二区| 国产馆精品极品| 一区二区三区日韩欧美精品| 欧美人成免费网站| 久久精品国产一区二区| 欧美国产丝袜视频| 欧美日韩小视频| 国产呦萝稀缺另类资源| 久久久精品天堂| 精品视频1区2区| 免费的成人av| 亚洲人成网站色在线观看| 日韩欧美的一区| 91首页免费视频| 麻豆久久一区二区| 中文字幕av一区二区三区免费看 | 国产性色一区二区| 成人va在线观看| 精品亚洲aⅴ乱码一区二区三区| 久久久精品黄色| 91精品国产色综合久久不卡电影| 成人免费毛片aaaaa**| 伦理电影国产精品| 一区二区激情小说| 国产日韩欧美a| 日韩一区国产二区欧美三区| av不卡一区二区三区| 美女网站视频久久| 亚洲男女毛片无遮挡| 中文字幕国产精品一区二区| 久久综合丝袜日本网| 欧美一区二区三区在线| 欧美日韩大陆一区二区| 色婷婷精品久久二区二区蜜臂av | 欧美日韩精品电影| 欧美性高清videossexo| 91小视频免费观看| 91精品办公室少妇高潮对白| 色爱区综合激月婷婷| 欧美怡红院视频| 日韩一级免费观看| 18成人在线观看| 丝袜美腿亚洲综合| 精品影院一区二区久久久| 懂色av噜噜一区二区三区av| 色久综合一二码| 欧美人妇做爰xxxⅹ性高电影 | 色婷婷综合五月| 欧美一级理论性理论a| 日本一二三不卡| 亚洲欧美国产三级| 毛片不卡一区二区| 欧美色图在线观看| 国产精品成人午夜| 亚洲国产成人av好男人在线观看| 国内精品国产成人国产三级粉色| 92精品国产成人观看免费| 欧美日韩国产一区| 欧美xingq一区二区| 亚洲综合久久久| 不卡一区二区在线| 国产精品久久久久久福利一牛影视| 青青草国产成人99久久| 欧美日韩电影在线| 亚洲午夜一区二区| 成人妖精视频yjsp地址| 1区2区3区精品视频| 亚洲国产精品激情在线观看| 精品制服美女久久| 欧美电视剧免费全集观看| 亚洲精品老司机| 成人avav在线| 欧美国产综合一区二区| 国产成人免费在线观看| 精品999在线播放| 韩国成人在线视频| 久久亚洲春色中文字幕久久久| 污片在线观看一区二区| 欧美日韩一级片网站| 午夜伦理一区二区| 欧美色图激情小说| 精品一区二区av| 国产偷国产偷精品高清尤物| 韩国精品免费视频| 亚洲免费高清视频在线| 91精品国产免费久久综合| 亚洲国产va精品久久久不卡综合| 在线日韩国产精品| 九九热在线视频观看这里只有精品 | 免费成人av资源网| 日韩三级精品电影久久久| 极品少妇一区二区| 综合av第一页| 欧美精品丝袜中出| 成人综合激情网| 樱花影视一区二区| 精品日韩99亚洲| 一本色道久久综合精品竹菊| 艳妇臀荡乳欲伦亚洲一区| 久久久精品影视| 91福利社在线观看| 高潮精品一区videoshd| 五月婷婷综合网| 一区二区三区高清不卡| 亚洲精品在线观看视频| 欧美丝袜丝交足nylons图片| 久久99这里只有精品| 一区二区三区四区在线免费观看| 精品第一国产综合精品aⅴ| 色噜噜久久综合| aa级大片欧美| 91在线一区二区| 激情国产一区二区| 美女视频黄久久| 日韩不卡一区二区| 日韩极品在线观看| 亚洲午夜国产一区99re久久| 亚洲视频你懂的| 亚洲精品免费在线播放| 日韩三级精品电影久久久| 精品婷婷伊人一区三区三| 色综合久久久网| 99麻豆久久久国产精品免费| 国产精品一级二级三级| 狠狠久久亚洲欧美| 国产一区二区精品久久99| 久久精品国产精品亚洲综合| 蜜臀av一区二区三区| 国产高清精品在线| 91在线一区二区| 色婷婷综合视频在线观看| 欧美性生交片4| 久久综合狠狠综合| 亚洲品质自拍视频| 国产真实乱子伦精品视频| 欧美色视频一区| 欧美日韩的一区二区| 国产欧美一区二区三区在线看蜜臀 | 亚洲小说春色综合另类电影| 欧美电影在线免费观看| 国产精品美日韩| 国产精品网曝门| 国产日韩欧美精品在线| 亚洲自拍另类综合| 99视频在线观看一区三区| 欧美韩国日本一区| 成人免费av在线| 久久伊99综合婷婷久久伊| 亚欧色一区w666天堂| 色婷婷精品大在线视频 | 99久久精品国产麻豆演员表| 日韩手机在线导航| 夜夜亚洲天天久久| 成人天堂资源www在线| 欧美成人精品福利|