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

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

?? vlc_arrays.h

?? mips版本的VLC視頻服務器
?? H
?? 第 1 頁 / 共 2 頁
字號:
    memset( p_array, 0, sizeof(vlc_array_t) );}static inline vlc_array_t * vlc_array_new( void ){    vlc_array_t * ret = (vlc_array_t *)malloc( sizeof(vlc_array_t) );    if( ret ) vlc_array_init( ret );    return ret;}static inline void vlc_array_destroy( vlc_array_t * p_array ){    if( !p_array )        return;    vlc_array_clear( p_array );    free( p_array );}/* Read */static inline intvlc_array_count( vlc_array_t * p_array ){    return p_array->i_count;}static inline void *vlc_array_item_at_index( vlc_array_t * p_array, int i_index ){    return p_array->pp_elems[i_index];}static inline intvlc_array_index_of_item( vlc_array_t * p_array, void * item ){    int i;    for( i = 0; i < p_array->i_count; i++)    {        if( p_array->pp_elems[i] == item )            return i;    }    return -1;}/* Write */static inline voidvlc_array_insert( vlc_array_t * p_array, void * p_elem, int i_index ){    TAB_INSERT_CAST( (void **), p_array->i_count, p_array->pp_elems, p_elem, i_index );}static inline voidvlc_array_append( vlc_array_t * p_array, void * p_elem ){    vlc_array_insert( p_array, p_elem, p_array->i_count );}static inline voidvlc_array_remove( vlc_array_t * p_array, int i_index ){    if( i_index >= 0 )    {        if( p_array->i_count > 1 )        {            memmove( p_array->pp_elems + i_index,                     p_array->pp_elems + i_index+1,                     ( p_array->i_count - i_index - 1 ) * sizeof( void* ) );        }        p_array->i_count--;        if( p_array->i_count == 0 )        {            free( p_array->pp_elems );            p_array->pp_elems = NULL;        }    }}/************************************************************************ * Dictionaries ************************************************************************//* This function is not intended to be crypto-secure, we only want it to be * fast and not suck too much. This one is pretty fast and did 0 collisions * in wenglish's dictionary. */static inline uint64_t DictHash( const char *psz_string, int hashsize ){    uint64_t i_hash = 0;    if( psz_string )    {        while( *psz_string )        {            i_hash += *psz_string++;            i_hash += i_hash << 10;            i_hash ^= i_hash >> 8;        }    }    return i_hash % hashsize;}typedef struct vlc_dictionary_entry_t{    char *   psz_key;    void *   p_value;    struct vlc_dictionary_entry_t * p_next;} vlc_dictionary_entry_t;typedef struct vlc_dictionary_t{    int i_size;    vlc_dictionary_entry_t ** p_entries;} vlc_dictionary_t;static void * const kVLCDictionaryNotFound = NULL;static inline void vlc_dictionary_init( vlc_dictionary_t * p_dict, int i_size ){    p_dict->p_entries = NULL;    if( i_size > 0 )    {        p_dict->p_entries = (vlc_dictionary_entry_t **)calloc( i_size, sizeof(*p_dict->p_entries) );        if( !p_dict->p_entries )            i_size = 0;    }    p_dict->i_size = i_size;}static inline void vlc_dictionary_clear( vlc_dictionary_t * p_dict,                                         void ( * pf_free )( void * p_data, void * p_obj ),                                         void * p_obj ){    if( p_dict->p_entries )    {        for( int i = 0; i < p_dict->i_size; i++ )        {            vlc_dictionary_entry_t * p_current, * p_next;            p_current = p_dict->p_entries[i];            while( p_current )            {                p_next = p_current->p_next;                if( pf_free != NULL )                    ( * pf_free )( p_current->p_value, p_obj );                free( p_current->psz_key );                free( p_current );                p_current = p_next;            }        }        free( p_dict->p_entries );        p_dict->p_entries = NULL;    }    p_dict->i_size = 0;}static inline void *vlc_dictionary_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_key ){    if( !p_dict->p_entries )        return kVLCDictionaryNotFound;    int i_pos = DictHash( psz_key, p_dict->i_size );    vlc_dictionary_entry_t * p_entry = p_dict->p_entries[i_pos];    if( !p_entry )        return kVLCDictionaryNotFound;    /* Make sure we return the right item. (Hash collision) */    do {        if( !strcmp( psz_key, p_entry->psz_key ) )            return p_entry->p_value;        p_entry = p_entry->p_next;    } while( p_entry );    return kVLCDictionaryNotFound;}static inline intvlc_dictionary_keys_count( const vlc_dictionary_t * p_dict ){    vlc_dictionary_entry_t * p_entry;    int i, count = 0;    if( !p_dict->p_entries )        return 0;    for( i = 0; i < p_dict->i_size; i++ )    {        for( p_entry = p_dict->p_entries[i]; p_entry; p_entry = p_entry->p_next ) count++;    }    return count;}static inline char **vlc_dictionary_all_keys( const vlc_dictionary_t * p_dict ){    vlc_dictionary_entry_t * p_entry;    char ** ppsz_ret;    int i, count = vlc_dictionary_keys_count( p_dict );    ppsz_ret = (char**)malloc(sizeof(char *) * (count + 1));    count = 0;    for( i = 0; i < p_dict->i_size; i++ )    {        for( p_entry = p_dict->p_entries[i]; p_entry; p_entry = p_entry->p_next )            ppsz_ret[count++] = strdup( p_entry->psz_key );    }    ppsz_ret[count] = NULL;    return ppsz_ret;}static inline void__vlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key,                         void * p_value, bool rebuild ){    if( !p_dict->p_entries )        vlc_dictionary_init( p_dict, 1 );    int i_pos = DictHash( psz_key, p_dict->i_size );    vlc_dictionary_entry_t * p_entry;    p_entry = (vlc_dictionary_entry_t *)malloc(sizeof(*p_entry));    p_entry->psz_key = strdup( psz_key );    p_entry->p_value = p_value;    p_entry->p_next = p_dict->p_entries[i_pos];    p_dict->p_entries[i_pos] = p_entry;    if( rebuild )    {        /* Count how many items there was */        int count;        for( count = 1; p_entry->p_next; count++ )            p_entry = p_entry->p_next;        if( count > 3 ) /* XXX: this need tuning */        {            /* Here it starts to be not good, rebuild a bigger dictionary */            struct vlc_dictionary_t new_dict;            int i_new_size = ( (p_dict->i_size+2) * 3) / 2; /* XXX: this need tuning */            int i;            vlc_dictionary_init( &new_dict, i_new_size );            for( i = 0; i < p_dict->i_size; i++ )            {                p_entry = p_dict->p_entries[i];                while( p_entry )                {                    __vlc_dictionary_insert( &new_dict, p_entry->psz_key,                                             p_entry->p_value,                                             false /* To avoid multiple rebuild loop */);                    p_entry = p_entry->p_next;                }            }            vlc_dictionary_clear( p_dict, NULL, NULL );            p_dict->i_size = new_dict.i_size;            p_dict->p_entries = new_dict.p_entries;        }    }}static inline voidvlc_dictionary_insert( vlc_dictionary_t * p_dict, const char * psz_key, void * p_value ){    __vlc_dictionary_insert( p_dict, psz_key, p_value, true );}static inline voidvlc_dictionary_remove_value_for_key( const vlc_dictionary_t * p_dict, const char * psz_key,                                     void ( * pf_free )( void * p_data, void * p_obj ),                                     void * p_obj ){    if( !p_dict->p_entries )        return;    int i_pos = DictHash( psz_key, p_dict->i_size );    vlc_dictionary_entry_t * p_entry = p_dict->p_entries[i_pos];    vlc_dictionary_entry_t * p_prev;    if( !p_entry )        return; /* Not found, nothing to do */    /* Hash collision */    p_prev = NULL;    do {        if( !strcmp( psz_key, p_entry->psz_key ) )        {            if( pf_free != NULL )                ( * pf_free )( p_entry->p_value, p_obj );            if( !p_prev )                p_dict->p_entries[i_pos] = p_entry->p_next;            else                p_prev->p_next = p_entry->p_next;            free( p_entry->psz_key );            free( p_entry );            return;        }        p_prev = p_entry;        p_entry = p_entry->p_next;    } while( p_entry );    /* No key was found */}#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美偷拍卡通变态| 26uuu国产一区二区三区| 成人免费一区二区三区在线观看| 国产成人自拍在线| 国产精品免费人成网站| 91精品福利在线| 午夜电影网亚洲视频| 欧美一区二区三区啪啪| 国产综合一区二区| 中文字幕在线免费不卡| 欧美亚一区二区| 青娱乐精品在线视频| 久久精品欧美一区二区三区麻豆| 成人激情免费电影网址| 午夜国产精品一区| 久久嫩草精品久久久久| 色av一区二区| 久久精品久久精品| 欧美国产1区2区| 欧美日韩大陆一区二区| 国产麻豆精品在线观看| 亚洲香蕉伊在人在线观| 精品国产乱码久久久久久久久| 成人动漫在线一区| 日韩在线一区二区| 中文字幕不卡一区| 欧美巨大另类极品videosbest | 国产精品久久久一区麻豆最新章节| 9i看片成人免费高清| 首页国产欧美久久| 国产精品视频在线看| 欧美日韩成人综合| 粉嫩一区二区三区性色av| 亚洲国产精品麻豆| 国产欧美1区2区3区| 欧美高清hd18日本| 99久久婷婷国产| 久久99精品久久久久久动态图 | 天天操天天综合网| 中文字幕av一区 二区| 欧美日韩精品电影| 99re这里都是精品| 国产乱人伦偷精品视频不卡| 午夜私人影院久久久久| 中文字幕制服丝袜成人av | 久久久久久久久久久黄色| 欧美日韩国产三级| 北条麻妃国产九九精品视频| 精品一区二区三区免费视频| 亚洲大片免费看| 国产精品网站一区| 精品国产麻豆免费人成网站| 欧美日韩日本视频| 在线免费观看日韩欧美| 成人免费看的视频| 国产高清久久久| 久久av中文字幕片| 日本不卡中文字幕| 亚洲成人久久影院| 亚洲一区二区四区蜜桃| 1024国产精品| 国产精品久久久爽爽爽麻豆色哟哟| 欧美成人精品福利| 日韩一级成人av| 91精品一区二区三区在线观看| 色又黄又爽网站www久久| 99亚偷拍自图区亚洲| 国产成人免费视频网站高清观看视频| 免费三级欧美电影| 五月天久久比比资源色| 亚洲va在线va天堂| 午夜久久福利影院| 午夜av电影一区| 五月婷婷激情综合| 日韩在线卡一卡二| 另类小说一区二区三区| 久久成人av少妇免费| 国内一区二区在线| 国产激情偷乱视频一区二区三区| 国产成人综合精品三级| 国产**成人网毛片九色| 成人黄色一级视频| 97久久精品人人做人人爽 | 波多野结衣中文一区| aaa欧美色吧激情视频| 成人精品免费网站| 97se狠狠狠综合亚洲狠狠| 在线观看中文字幕不卡| 91精品国产综合久久久蜜臀粉嫩 | 天天av天天翘天天综合网| 亚洲国产欧美日韩另类综合| 天堂精品中文字幕在线| 男男视频亚洲欧美| 国产黑丝在线一区二区三区| 91在线无精精品入口| 欧美午夜精品久久久久久孕妇 | 日韩一区二区三区在线观看| 中文字幕一区二区三中文字幕 | 亚洲激情图片小说视频| 午夜私人影院久久久久| 久久99精品久久久久| 成人高清av在线| 欧美主播一区二区三区| 日韩精品中文字幕一区二区三区| 久久久久久久久99精品| 亚洲日本成人在线观看| 日韩中文字幕麻豆| 国产成人免费视频网站| 欧美色爱综合网| 久久综合中文字幕| 亚洲欧美福利一区二区| 麻豆国产欧美日韩综合精品二区| 高清久久久久久| 在线视频国内自拍亚洲视频| 欧美xxxxx牲另类人与| 99精品国产热久久91蜜凸| 884aa四虎影成人精品一区| 欧美一级日韩不卡播放免费| 成人中文字幕电影| 国产精品久久久久天堂| 日韩国产欧美三级| 亚洲黄一区二区三区| 美国十次综合导航| 99久久精品免费观看| 91精品国产全国免费观看| 中文字幕制服丝袜一区二区三区 | 成人av片在线观看| 91精品国产高清一区二区三区蜜臀 | 丝袜亚洲另类丝袜在线| 中文字幕一区二区三区四区不卡| 韩日av一区二区| 免费在线观看成人| 久久久国产一区二区三区四区小说 | 日本va欧美va欧美va精品| 国模大尺度一区二区三区| 欧美va日韩va| 亚洲视频一区在线观看| 狠狠色2019综合网| 欧美三级蜜桃2在线观看| 国产欧美精品一区二区色综合| 一区二区三区中文字幕精品精品 | 国产成人欧美日韩在线电影| 国产亚洲美州欧州综合国| 国产欧美日韩在线视频| www.久久久久久久久| 国产精品毛片大码女人| 91黄视频在线| 国产精品亚洲午夜一区二区三区 | 亚洲精品视频在线| 国产精品精品国产色婷婷| 精品国产在天天线2019| 精品久久久久久无| 久久精品99国产精品| 欧美肥妇毛茸茸| 免费观看一级欧美片| 日韩亚洲欧美成人一区| 欧美xxxxx牲另类人与| 粉嫩av亚洲一区二区图片| 亚洲综合丝袜美腿| 成人网页在线观看| 亚洲综合一区二区精品导航| 欧美三级日韩三级| 丝袜美腿高跟呻吟高潮一区| 67194成人在线观看| 日本美女一区二区| 风流少妇一区二区| 9人人澡人人爽人人精品| 一区二区三区成人| 欧美大片一区二区三区| 91免费看视频| 青娱乐精品视频| 国产无一区二区| 91丨九色丨黑人外教| 亚洲成av人综合在线观看| 国产精品欧美一级免费| 日韩精品一区国产麻豆| 欧美另类高清zo欧美| 91麻豆免费看| 91老师片黄在线观看| 久久成人18免费观看| 蜜臀久久久久久久| 不卡一卡二卡三乱码免费网站| 免费人成在线不卡| 国产精品国产a| 一区二区视频在线| 96av麻豆蜜桃一区二区| 丁香另类激情小说| 韩国三级中文字幕hd久久精品| 五月激情综合网| 亚洲人吸女人奶水| 精品久久久久久久一区二区蜜臀| 久久久青草青青国产亚洲免观| 这里只有精品视频在线观看| 欧美日韩在线免费视频| 一区二区三区四区五区视频在线观看| 韩国在线一区二区| 国产日韩欧美精品一区| 蜜臀va亚洲va欧美va天堂 | 亚洲精品少妇30p| 国产亚洲精品bt天堂精选|