亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人免费在线视频观看| 欧美人妖巨大在线| 日本二三区不卡| 欧美一区二区三区视频在线观看| 欧美成人伊人久久综合网| 国产欧美综合色| 一区二区高清在线| 青青青伊人色综合久久| 成人aaaa免费全部观看| 欧美日韩免费观看一区二区三区 | 国产精品天天摸av网| 一区二区国产视频| 国产中文字幕精品| 欧美无人高清视频在线观看| 精品国产亚洲在线| 亚洲黄色免费电影| 激情都市一区二区| 色中色一区二区| 精品对白一区国产伦| 亚洲女性喷水在线观看一区| 青青草国产成人99久久| 91香蕉视频黄| 26uuu精品一区二区在线观看| 最新欧美精品一区二区三区| 青青草国产精品亚洲专区无| 色综合色综合色综合色综合色综合| 欧美一区欧美二区| 1000部国产精品成人观看| 秋霞成人午夜伦在线观看| 日本电影欧美片| 中文字幕精品在线不卡| 日本不卡的三区四区五区| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩欧美另类在线| 一区二区三区精密机械公司| 国产传媒一区在线| 日韩视频在线你懂得| 夜夜嗨av一区二区三区| 成人精品免费网站| www国产成人免费观看视频 深夜成人网| 亚洲成人免费看| 99久久婷婷国产精品综合| 国产日韩欧美高清在线| 韩国精品主播一区二区在线观看| 欧美日韩精品久久久| 亚洲免费色视频| 国产不卡高清在线观看视频| 精品av久久707| 日韩精品电影一区亚洲| 欧美中文字幕亚洲一区二区va在线 | 午夜欧美视频在线观看| 99天天综合性| 国产精品乱码一区二区三区软件| 国内成+人亚洲+欧美+综合在线| 91精品国产综合久久香蕉麻豆| 国产真实乱子伦精品视频| 欧美日韩精品一区二区三区四区 | 91久久精品一区二区| 中文字幕精品一区二区三区精品| 国产一区在线观看麻豆| 精品美女一区二区| 精品一区二区免费| 日韩精品一区二区三区视频| 三级一区在线视频先锋| 色8久久精品久久久久久蜜| 亚洲欧美综合另类在线卡通| 99视频在线精品| 亚洲视频香蕉人妖| 91在线国产观看| 亚洲色图清纯唯美| 91麻豆自制传媒国产之光| 综合自拍亚洲综合图不卡区| 99久久久久久| 一区二区三区中文字幕电影| 欧美系列日韩一区| 亚洲第一成年网| 69av一区二区三区| 久久精品国内一区二区三区| 精品欧美乱码久久久久久| 激情六月婷婷久久| 久久色.com| 成人综合在线网站| 最新中文字幕一区二区三区| 91黄色激情网站| 爽好久久久欧美精品| 欧美一级午夜免费电影| 久久99国产精品免费| 国产亚洲制服色| av一区二区久久| 亚洲一二三区不卡| 91麻豆精品国产91久久久使用方法| 日韩高清欧美激情| 26uuu精品一区二区| 成人成人成人在线视频| 亚洲人午夜精品天堂一二香蕉| 91黄色免费网站| 免费成人在线观看| 国产日本亚洲高清| 色狠狠一区二区三区香蕉| 亚洲成人动漫在线观看| 精品国产制服丝袜高跟| 成人高清av在线| 亚洲国产欧美在线人成| 精品国产三级a在线观看| 丁香婷婷综合五月| 亚洲风情在线资源站| 欧美精品一区二区三区四区| jiyouzz国产精品久久| 亚洲一级二级三级| 欧美v日韩v国产v| av在线免费不卡| 性做久久久久久久免费看| 久久综合色综合88| 色婷婷综合久久久中文一区二区| 日本特黄久久久高潮| 国产精品欧美精品| 91麻豆精品国产| 成人国产视频在线观看| 日韩电影在线看| 国产精品毛片大码女人| 91精品国产全国免费观看 | 亚洲丝袜制服诱惑| 欧美日韩高清一区二区三区| 国产一区二区剧情av在线| 亚洲乱码国产乱码精品精98午夜| 日韩一区二区精品葵司在线| bt欧美亚洲午夜电影天堂| 日韩国产在线观看| 亚洲欧美日韩国产中文在线| 欧美精品一区二区三| 欧美在线综合视频| 欧美一区二区在线观看| 成人网在线播放| 美腿丝袜在线亚洲一区| 亚洲免费观看在线观看| 久久久影视传媒| 91精品久久久久久久91蜜桃| 91免费版在线| 国产高清在线精品| 日韩精品免费视频人成| 亚洲精品伦理在线| 国产亚洲欧美日韩在线一区| 欧美日韩国产高清一区二区三区 | 国产精品天干天干在观线| 日韩一卡二卡三卡四卡| 欧美亚洲综合在线| 97国产精品videossex| 国产在线视视频有精品| 日本不卡视频在线观看| 亚洲一区二区欧美| 亚洲欧美综合在线精品| 久久精品一区二区三区不卡牛牛 | 激情六月婷婷综合| 日韩中文欧美在线| 亚洲一级片在线观看| 亚洲人成在线播放网站岛国 | 91性感美女视频| 国产精品夜夜嗨| 久久99精品国产| 美国毛片一区二区| 亚洲1区2区3区4区| 亚洲免费在线观看| 日韩伦理电影网| 中文字幕乱码一区二区免费| 久久久久国色av免费看影院| 日韩一本二本av| 欧美剧情片在线观看| 在线观看区一区二| 在线观看精品一区| 色又黄又爽网站www久久| 成人激情动漫在线观看| 成人一区二区三区| 国产福利一区二区| 国产成人av一区二区三区在线| 激情久久五月天| 韩国av一区二区| 韩国欧美一区二区| 国产一区二区三区av电影| 九九精品视频在线看| 男人的天堂亚洲一区| 久久精品国产一区二区| 久久99久久99精品免视看婷婷| 蜜桃av一区二区| 极品少妇xxxx精品少妇| 国产一区二区精品久久99| 国产一区二区三区四区在线观看 | 中文欧美字幕免费| 国产精品久久久久久久久搜平片 | 91美女片黄在线观看91美女| 色婷婷综合久久久中文一区二区| 91蝌蚪porny九色| 在线一区二区三区四区五区| 欧美日韩综合不卡| 欧美精品色综合| 日韩一卡二卡三卡| 久久品道一品道久久精品| 欧美高清在线视频| 亚洲欧美日韩成人高清在线一区| 一区二区三区精品久久久| 三级不卡在线观看|