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

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

?? vlc_arrays.h

?? mips版本的VLC視頻服務器
?? H
?? 第 1 頁 / 共 2 頁
字號:
/***************************************************************************** * vlc_arrays.h : Arrays and data structures handling ***************************************************************************** * Copyright (C) 1999-2004 the VideoLAN team * $Id: e085f0378b432ed56392241bc3017a57c6f81c85 $ * * Authors: Samuel Hocevar <sam@zoy.org> *          Clément Stenac <zorglub@videolan.org> * * 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., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/#ifndef VLC_ARRAYS_H_#define VLC_ARRAYS_H_/** * \file * This file defines functions, structures and macros for handling arrays in vlc *//** * Simple dynamic array handling. Array is realloced at each insert/removal */#if defined( _MSC_VER ) && _MSC_VER < 1300 && !defined( UNDER_CE )#   define VLCCVP (void**) /* Work-around for broken compiler */#else#   define VLCCVP#endif#define INSERT_ELEM( p_ar, i_oldsize, i_pos, elem )                           \    do                                                                        \    {                                                                         \        if( !i_oldsize ) (p_ar) = NULL;                                       \        (p_ar) = VLCCVP realloc( p_ar, ((i_oldsize) + 1) * sizeof(*(p_ar)) ); \        if( (i_oldsize) - (i_pos) )                                           \        {                                                                     \            memmove( (p_ar) + (i_pos) + 1, (p_ar) + (i_pos),                  \                     ((i_oldsize) - (i_pos)) * sizeof( *(p_ar) ) );           \        }                                                                     \        (p_ar)[i_pos] = elem;                                                 \        (i_oldsize)++;                                                        \    }                                                                         \    while( 0 )#define REMOVE_ELEM( p_ar, i_oldsize, i_pos )                                 \    do                                                                        \    {                                                                         \        if( (i_oldsize) - (i_pos) - 1 )                                       \        {                                                                     \            memmove( (p_ar) + (i_pos),                                        \                     (p_ar) + (i_pos) + 1,                                    \                     ((i_oldsize) - (i_pos) - 1) * sizeof( *(p_ar) ) );       \        }                                                                     \        if( i_oldsize > 1 )                                                   \        {                                                                     \            (p_ar) = realloc( p_ar, ((i_oldsize) - 1) * sizeof( *(p_ar) ) );  \        }                                                                     \        else                                                                  \        {                                                                     \            free( p_ar );                                                     \            (p_ar) = NULL;                                                    \        }                                                                     \        (i_oldsize)--;                                                        \    }                                                                         \    while( 0 )#define TAB_INIT( count, tab )                  \  do {                                          \    (count) = 0;                                \    (tab) = NULL;                               \  } while(0)#define TAB_CLEAN( count, tab )                 \  do {                                          \    free( tab );                                \    (count)= 0;                                 \    (tab)= NULL;                                \  } while(0)#define TAB_APPEND_CAST( cast, count, tab, p )             \  do {                                          \    if( (count) > 0 )                           \        (tab) = cast realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \    else                                        \        (tab) = cast malloc( sizeof( void ** ) );    \    (tab)[count] = (p);                         \    (count)++;                                  \  } while(0)#define TAB_APPEND( count, tab, p )             \    TAB_APPEND_CAST( , count, tab, p )#define TAB_APPEND_CPP( type, count, tab, p )   \    TAB_APPEND_CAST( (type**), count, tab, p )#define TAB_FIND( count, tab, p, index )        \  do {                                          \        int _i_;                                \        (index) = -1;                           \        for( _i_ = 0; _i_ < (count); _i_++ )    \        {                                       \            if( (tab)[_i_] == (p) )             \            {                                   \                (index) = _i_;                  \                break;                          \            }                                   \        }                                       \  } while(0)#define TAB_REMOVE( count, tab, p )             \  do {                                          \        int _i_index_;                          \        TAB_FIND( count, tab, p, _i_index_ );   \        if( _i_index_ >= 0 )                    \        {                                       \            if( (count) > 1 )                   \            {                                   \                memmove( ((void**)(tab) + _i_index_),    \                         ((void**)(tab) + _i_index_+1),  \                         ( (count) - _i_index_ - 1 ) * sizeof( void* ) );\            }                                   \            (count)--;                          \            if( (count) == 0 )                  \            {                                   \                free( tab );                    \                (tab) = NULL;                   \            }                                   \        }                                       \  } while(0)#define TAB_INSERT_CAST( cast, count, tab, p, index ) do { \    if( (count) > 0 )                           \        (tab) = cast realloc( tab, sizeof( void ** ) * ( (count) + 1 ) ); \    else                                        \        (tab) = cast malloc( sizeof( void ** ) );       \    if( (count) - (index) > 0 )                 \        memmove( (void**)(tab) + (index) + 1,   \                 (void**)(tab) + (index),       \                 ((count) - (index)) * sizeof(*(tab)) );\    (tab)[(index)] = (p);                       \    (count)++;                                  \} while(0)#define TAB_INSERT( count, tab, p, index )      \    TAB_INSERT_CAST( , count, tab, p, index )/** * Binary search in a sorted array. The key must be comparable by < and > * \param entries array of entries * \param count number of entries * \param elem key to check within an entry (like .id, or ->i_id) * \param zetype type of the key * \param key value of the key * \param answer index of answer within the array. -1 if not found */#define BSEARCH( entries, count, elem, zetype, key, answer ) \   do {  \    int low = 0, high = count - 1;   \    answer = -1; \    while( low <= high ) {\        int mid = (low + high ) / 2; /* Just don't care about 2^30 tables */ \        zetype mid_val = entries[mid] elem;\        if( mid_val < key ) \            low = mid + 1; \        else if ( mid_val > key ) \            high = mid -1;  \        else    \        {   \            answer = mid;  break;   \        }\    } \ } while(0)/************************************************************************ * Dynamic arrays with progressive allocation ************************************************************************//* Internal functions */#define _ARRAY_ALLOC(array, newsize) {                                      \    (array).i_alloc = newsize;                                              \    (array).p_elems = VLCCVP realloc( (array).p_elems, (array).i_alloc *    \                                    sizeof(*(array).p_elems) );             \}#define _ARRAY_GROW1(array) {                                               \    if( (array).i_alloc < 10 )                                              \        _ARRAY_ALLOC(array, 10 )                                            \    else if( (array).i_alloc == (array).i_size )                            \        _ARRAY_ALLOC(array, (int)(array.i_alloc * 1.5) )                    \}#define _ARRAY_GROW(array,additional) {                                     \     int i_first = (array).i_alloc;                                         \     while( (array).i_alloc - i_first < additional )                        \     {                                                                      \         if( (array).i_alloc < 10 )                                         \            _ARRAY_ALLOC(array, 10 )                                        \        else if( (array).i_alloc == (array).i_size )                        \            _ARRAY_ALLOC(array, (int)((array).i_alloc * 1.5) )              \        else break;                                                         \     }                                                                      \}#define _ARRAY_SHRINK(array) {                                              \    if( (array).i_size > 10 && (array).i_size < (int)((array).i_alloc / 1.5) ) {  \        _ARRAY_ALLOC(array, (array).i_size + 5);                            \    }                                                                       \}#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))/* API */#define DECL_ARRAY(type) struct {                                           \    int i_alloc;                                                            \    int i_size;                                                             \    type *p_elems;                                                          \}#define TYPEDEF_ARRAY(type, name) typedef DECL_ARRAY(type) name;#define ARRAY_INIT(array)                                                   \  do {                                                                      \    (array).i_alloc = 0;                                                    \    (array).i_size = 0;                                                     \    (array).p_elems = NULL;                                                 \  } while(0)#define ARRAY_RESET(array)                                                  \  do {                                                                      \    (array).i_alloc = 0;                                                    \    (array).i_size = 0;                                                     \    free( (array).p_elems ); (array).p_elems = NULL;                        \  } while(0)#define ARRAY_APPEND(array, elem)                                           \  do {                                                                      \    _ARRAY_GROW1(array);                                                    \    (array).p_elems[(array).i_size] = elem;                                 \    (array).i_size++;                                                       \  } while(0)#define ARRAY_INSERT(array,elem,pos)                                        \  do {                                                                      \    _ARRAY_GROW1(array);                                                    \    if( (array).i_size - pos ) {                                            \        memmove( (array).p_elems + pos + 1, (array).p_elems + pos,          \                 ((array).i_size-pos) * sizeof(*(array).p_elems) );         \    }                                                                       \    (array).p_elems[pos] = elem;                                            \    (array).i_size++;                                                       \  } while(0)#define ARRAY_REMOVE(array,pos)                                             \  do {                                                                      \    if( (array).i_size - (pos) - 1 )                                        \    {                                                                       \        memmove( (array).p_elems + pos, (array).p_elems + pos + 1,          \                 ( (array).i_size - pos - 1 ) *sizeof(*(array).p_elems) );  \    }                                                                       \    (array).i_size--;                                                       \    _ARRAY_SHRINK(array);                                                   \  } while(0)#define ARRAY_VAL(array, pos) array.p_elems[pos]#define ARRAY_BSEARCH(array, elem, zetype, key, answer) \    BSEARCH( (array).p_elems, (array).i_size, elem, zetype, key, answer)#define FOREACH_ARRAY( item, array ) { \    int fe_idx; \    for( fe_idx = 0 ; fe_idx < (array).i_size ; fe_idx++ ) \    { \        item = (array).p_elems[fe_idx];#define FOREACH_END() } }/************************************************************************ * Dynamic arrays with progressive allocation (Preferred API) ************************************************************************/typedef struct vlc_array_t{    int i_count;    void ** pp_elems;} vlc_array_t;static inline void vlc_array_init( vlc_array_t * p_array ){    memset( p_array, 0, sizeof(vlc_array_t) );}static inline void vlc_array_clear( vlc_array_t * p_array ){    free( p_array->pp_elems );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区色| 久久久国产午夜精品| 亚洲愉拍自拍另类高清精品| 成人国产精品视频| 国产亚洲精品超碰| 国产麻豆精品在线| 国产精品麻豆视频| av中文字幕在线不卡| 亚洲人精品一区| 在线亚洲欧美专区二区| 午夜电影网一区| 精品国精品国产尤物美女| 国产精品538一区二区在线| 中文字幕欧美国产| 一道本成人在线| 亚洲成av人片www| 欧美草草影院在线视频| 高清国产午夜精品久久久久久| 中国av一区二区三区| 色噜噜狠狠成人中文综合| 亚洲国产精品久久不卡毛片| 日韩午夜激情av| 国产精品一级片在线观看| 亚洲欧洲日产国产综合网| 欧美在线观看一区| 日本不卡的三区四区五区| 久久人人97超碰com| bt7086福利一区国产| 亚洲第一狼人社区| 精品成人一区二区三区四区| 暴力调教一区二区三区| 日韩av在线播放中文字幕| 国产亚洲欧美日韩在线一区| 欧洲精品中文字幕| 狠狠色狠狠色合久久伊人| 中文字幕一区在线观看视频| 欧美日韩免费电影| 高清不卡在线观看| 日韩专区在线视频| 欧美激情在线观看视频免费| 欧美曰成人黄网| 国产原创一区二区| 亚洲福利视频导航| 国产精品久久久久毛片软件| 91精品国产免费| 91欧美一区二区| 九九久久精品视频| 亚洲成年人网站在线观看| 国产欧美一区二区在线| 在线电影国产精品| 91视频在线观看免费| 激情深爱一区二区| 亚洲国产日日夜夜| 中文字幕一区视频| 久久这里只精品最新地址| 91久久精品国产91性色tv| 国产激情一区二区三区四区| 手机精品视频在线观看| 中文字幕一区二区三区蜜月 | 欧美性猛片aaaaaaa做受| 国内精品伊人久久久久av影院| 亚洲免费毛片网站| 日韩精品中文字幕在线一区| 成人黄色一级视频| 麻豆国产欧美日韩综合精品二区 | 在线不卡中文字幕| 国产精品18久久久久| 亚欧色一区w666天堂| 日本一区免费视频| 欧美一区二区三区视频免费播放| 国产精品夜夜嗨| 韩国在线一区二区| 天天操天天色综合| 日韩美女精品在线| 久久伊人中文字幕| 91麻豆精品国产91久久久久| 91浏览器打开| 国产制服丝袜一区| 日本不卡视频在线观看| 亚洲主播在线播放| 日韩毛片视频在线看| 国产精品进线69影院| 精品久久人人做人人爰| 在线播放91灌醉迷j高跟美女| 91啪亚洲精品| 成人国产电影网| 狠狠色丁香婷婷综合久久片| 日韩精品五月天| 亚洲成人精品在线观看| 亚洲欧美电影一区二区| 国产精品美女www爽爽爽| 久久丝袜美腿综合| 正在播放亚洲一区| 日韩视频免费观看高清完整版| 欧美日韩一本到| 欧美在线一区二区三区| 欧美亚洲尤物久久| 激情五月婷婷综合| 久久精品一区二区三区不卡牛牛| 欧美亚洲另类激情小说| 色哟哟一区二区在线观看| 床上的激情91.| 国产99精品视频| 不卡一区二区三区四区| 成人av在线看| 欧美亚洲一区三区| 国产一区二区按摩在线观看| 紧缚奴在线一区二区三区| 免费看欧美美女黄的网站| 日韩av一区二区三区四区| 日本一不卡视频| 免费成人在线观看| 亚洲国产欧美日韩另类综合 | 亚洲精品在线网站| 亚洲精品在线三区| 国产女人水真多18毛片18精品视频 | 国产欧美精品国产国产专区| 国产精品丝袜一区| 亚洲人成人一区二区在线观看| 亚洲图片欧美激情| 亚洲高清免费观看高清完整版在线观看| 一区二区三区.www| 亚洲午夜视频在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎| 精品午夜久久福利影院| 波波电影院一区二区三区| 91福利视频网站| 欧美一区二区三区视频在线观看| 精品国产第一区二区三区观看体验| 精品少妇一区二区三区在线视频| 日韩一卡二卡三卡四卡| 亚洲国产成人私人影院tom| 一区二区免费在线播放| 蜜臀av性久久久久蜜臀av麻豆| 国产成人在线视频网站| 色欧美乱欧美15图片| 日韩欧美一区二区久久婷婷| 欧美国产日产图区| 亚洲成人先锋电影| 91婷婷韩国欧美一区二区| 欧美精品一级二级三级| 91麻豆精品国产91久久久久久久久 | 亚洲aⅴ怡春院| 日韩av网站在线观看| 免费高清成人在线| 国产一区二区三区久久悠悠色av| 成人激情黄色小说| 欧美日韩视频一区二区| 精品免费国产一区二区三区四区| 亚洲精品在线观看网站| 国产精品电影院| 亚洲一区二区三区四区在线 | 亚洲国产精品一区二区久久| 亚洲高清免费在线| 精久久久久久久久久久| 国产成人av在线影院| 欧美日韩一级大片网址| 国产精品毛片高清在线完整版| 日韩avvvv在线播放| 国产欧美精品区一区二区三区| 日韩免费观看高清完整版| 午夜精品一区二区三区免费视频| 国产一区二区精品在线观看| 欧美高清一级片在线| 国产精品短视频| 极品少妇一区二区三区精品视频| 欧洲一区在线观看| 一区在线观看视频| 国产精品中文字幕日韩精品| 欧美亚洲自拍偷拍| 亚洲色欲色欲www在线观看| 亚洲高清不卡在线| 99国产精品国产精品毛片| 精品国产三级电影在线观看| 天堂成人国产精品一区| 99久久精品免费观看| 欧美国产精品久久| 国产综合色产在线精品| 日韩网站在线看片你懂的| 水野朝阳av一区二区三区| 在线观看91视频| 综合久久给合久久狠狠狠97色| 粉嫩aⅴ一区二区三区四区| 精品少妇一区二区三区在线播放| 视频一区中文字幕| 欧美另类高清zo欧美| 亚洲444eee在线观看| 欧洲激情一区二区| 一区二区三区欧美日| 粉嫩蜜臀av国产精品网站| 久久久久久久久久久99999| 亚洲午夜精品在线| 欧洲国内综合视频| 亚洲一区二三区| 91电影在线观看| 亚洲.国产.中文慕字在线| 欧美日韩一区在线| 亚洲福利视频导航| 欧美日韩专区在线| 一区二区在线观看不卡|