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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ftcmru.c

?? 智能設(shè)備中PDF閱讀器的源碼!用于windows mobile2003或者WM5以上
?? C
字號(hào):
/***************************************************************************/
/*                                                                         */
/*  ftcmru.c                                                               */
/*                                                                         */
/*    FreeType MRU support (body).                                         */
/*                                                                         */
/*  Copyright 2003, 2004, 2006 by                                          */
/*  David Turner, Robert Wilhelm, and Werner Lemberg.                      */
/*                                                                         */
/*  This file is part of the FreeType project, and may only be used,       */
/*  modified, and distributed under the terms of the FreeType project      */
/*  license, LICENSE.TXT.  By continuing to use, modify, or distribute     */
/*  this file you indicate that you have read the license and              */
/*  understand and accept it fully.                                        */
/*                                                                         */
/***************************************************************************/


#include <ft2build.h>
#include FT_CACHE_H
#include "ftcmru.h"
#include FT_INTERNAL_OBJECTS_H
#include FT_INTERNAL_DEBUG_H

#include "ftcerror.h"


  FT_LOCAL_DEF( void )
  FTC_MruNode_Prepend( FTC_MruNode  *plist,
                       FTC_MruNode   node )
  {
    FTC_MruNode  first = *plist;


    if ( first )
    {
      FTC_MruNode  last = first->prev;


#ifdef FT_DEBUG_ERROR
      {
        FTC_MruNode  cnode = first;


        do
        {
          if ( cnode == node )
          {
            fprintf( stderr, "FTC_MruNode_Prepend: invalid action!\n" );
            exit( 2 );
          }
          cnode = cnode->next;

        } while ( cnode != first );
      }
#endif

      first->prev = node;
      last->next  = node;
      node->next  = first;
      node->prev  = last;
    }
    else
    {
      node->next = node;
      node->prev = node;
    }
    *plist = node;
  }


  FT_LOCAL_DEF( void )
  FTC_MruNode_Up( FTC_MruNode  *plist,
                  FTC_MruNode   node )
  {
    FTC_MruNode  first = *plist;


    FT_ASSERT( first != NULL );

    if ( first != node )
    {
      FTC_MruNode  prev, next, last;


#ifdef FT_DEBUG_ERROR
      {
        FTC_MruNode  cnode = first;
        do
        {
          if ( cnode == node )
            goto Ok;
          cnode = cnode->next;

        } while ( cnode != first );

        fprintf( stderr, "FTC_MruNode_Up: invalid action!\n" );
        exit( 2 );
      Ok:
      }
#endif
      prev = node->prev;
      next = node->next;

      prev->next = next;
      next->prev = prev;

      last = first->prev;

      last->next  = node;
      first->prev = node;

      node->next = first;
      node->prev = last;

      *plist = node;
    }
  }


  FT_LOCAL_DEF( void )
  FTC_MruNode_Remove( FTC_MruNode  *plist,
                      FTC_MruNode   node )
  {
    FTC_MruNode  first = *plist;
    FTC_MruNode  prev, next;


    FT_ASSERT( first != NULL );

#ifdef FT_DEBUG_ERROR
      {
        FTC_MruNode  cnode = first;


        do
        {
          if ( cnode == node )
            goto Ok;
          cnode = cnode->next;

        } while ( cnode != first );

        fprintf( stderr, "FTC_MruNode_Remove: invalid action!\n" );
        exit( 2 );
      Ok:
      }
#endif

    prev = node->prev;
    next = node->next;

    prev->next = next;
    next->prev = prev;

    if ( node == next )
    {
      FT_ASSERT( first == node );
      FT_ASSERT( prev  == node );

      *plist = NULL;
    }
    else if ( node == first )
        *plist = next;
  }


  FT_LOCAL_DEF( void )
  FTC_MruList_Init( FTC_MruList       list,
                    FTC_MruListClass  clazz,
                    FT_UInt           max_nodes,
                    FT_Pointer        data,
                    FT_Memory         memory )
  {
    list->num_nodes = 0;
    list->max_nodes = max_nodes;
    list->nodes     = NULL;
    list->clazz     = *clazz;
    list->data      = data;
    list->memory    = memory;
  }


  FT_LOCAL_DEF( void )
  FTC_MruList_Reset( FTC_MruList  list )
  {
    while ( list->nodes )
      FTC_MruList_Remove( list, list->nodes );

    FT_ASSERT( list->num_nodes == 0 );
  }


  FT_LOCAL_DEF( void )
  FTC_MruList_Done( FTC_MruList  list )
  {
    FTC_MruList_Reset( list );
  }


#ifndef FTC_INLINE
  FT_LOCAL_DEF( FTC_MruNode )
  FTC_MruList_Find( FTC_MruList  list,
                    FT_Pointer   key )
  {
    FTC_MruNode_CompareFunc  compare = list->clazz.node_compare;
    FTC_MruNode              first, node;


    first = list->nodes;
    node  = NULL;

    if ( first )
    {
      node = first;
      do
      {
        if ( compare( node, key ) )
        {
          if ( node != first )
            FTC_MruNode_Up( &list->nodes, node );

          return node;
        }

        node = node->next;

      } while ( node != first);
    }

    return NULL;
  }
#endif

  FT_LOCAL_DEF( FT_Error )
  FTC_MruList_New( FTC_MruList   list,
                   FT_Pointer    key,
                   FTC_MruNode  *anode )
  {
    FT_Error     error;
    FTC_MruNode  node;
    FT_Memory    memory = list->memory;


    if ( list->num_nodes >= list->max_nodes && list->max_nodes > 0 )
    {
      node = list->nodes->prev;

      FT_ASSERT( node );

      if ( list->clazz.node_reset )
      {
        FTC_MruNode_Up( &list->nodes, node );

        error = list->clazz.node_reset( node, key, list->data );
        if ( !error )
          goto Exit;
      }

      FTC_MruNode_Remove( &list->nodes, node );
      list->num_nodes--;

      if ( list->clazz.node_done )
        list->clazz.node_done( node, list->data );
    }
    else if ( FT_ALLOC( node, list->clazz.node_size ) )
        goto Exit;

    error = list->clazz.node_init( node, key, list->data );
    if ( error )
      goto Fail;

      FTC_MruNode_Prepend( &list->nodes, node );
      list->num_nodes++;

  Exit:
    *anode = node;
    return error;

  Fail:
    if ( list->clazz.node_done )
      list->clazz.node_done( node, list->data );

    FT_FREE( node );
    goto Exit;
  }


#ifndef FTC_INLINE
  FT_LOCAL_DEF( FT_Error )
  FTC_MruList_Lookup( FTC_MruList   list,
                      FT_Pointer    key,
                      FTC_MruNode  *anode )
  {
    FTC_MruNode  node;


    node = FTC_MruList_Find( list, key );
    if ( node == NULL )
      return FTC_MruList_New( list, key, anode );

    *anode = node;
    return 0;
  }
#endif /* FTC_INLINE */

  FT_LOCAL_DEF( void )
  FTC_MruList_Remove( FTC_MruList  list,
                      FTC_MruNode  node )
  {
    FTC_MruNode_Remove( &list->nodes, node );
    list->num_nodes--;

    {
      FT_Memory  memory = list->memory;


      if ( list->clazz.node_done )
       list->clazz.node_done( node, list->data );

      FT_FREE( node );
    }
  }


  FT_LOCAL_DEF( void )
  FTC_MruList_RemoveSelection( FTC_MruList              list,
                               FTC_MruNode_CompareFunc  selection,
                               FT_Pointer               key )
  {
    FTC_MruNode  first, node, next;


    first = list->nodes;
    while ( first && ( selection == NULL || selection( first, key ) ) )
    {
      FTC_MruList_Remove( list, first );
      first = list->nodes;
    }

    if ( first )
    {
      node = first->next;
      while ( node != first )
      {
        next = node->next;

        if ( selection( node, key ) )
          FTC_MruList_Remove( list, node );

        node = next;
      }
    }
  }


/* END */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区视频在线看| av一本久道久久综合久久鬼色| 国产亚洲制服色| 欧美三日本三级三级在线播放| 国产最新精品精品你懂的| 一级女性全黄久久生活片免费| 精品国产91久久久久久久妲己| 在线精品视频免费播放| 国产成a人无v码亚洲福利| 午夜精品福利视频网站| 中文字幕欧美区| 久久色视频免费观看| 欧美日韩国产a| 色激情天天射综合网| 国产高清不卡一区二区| 日本亚洲视频在线| 亚洲免费三区一区二区| 中文字幕久久午夜不卡| 精品三级av在线| 69堂国产成人免费视频| 色狠狠桃花综合| 成人av在线播放网址| 国产剧情一区二区| 老司机一区二区| 午夜精品久久久久| 亚洲成在人线在线播放| 亚洲一区二区三区视频在线 | 麻豆成人91精品二区三区| 亚洲小说欧美激情另类| 亚洲日本免费电影| 亚洲欧洲精品一区二区三区| 国产亚洲女人久久久久毛片| 欧美videos中文字幕| 欧美美女一区二区三区| 欧美伊人精品成人久久综合97| 91免费国产视频网站| 成人免费高清在线观看| 成人黄色av网站在线| 成人成人成人在线视频| 成人美女视频在线观看18| 国产成人自拍高清视频在线免费播放| 免费观看在线综合| 久久国产视频网| 精品一区免费av| 国产一区二区三区综合| 精品一区二区免费| 国产一区二区三区香蕉| 成人永久免费视频| 成人美女视频在线观看| 91在线精品一区二区三区| 一本大道av伊人久久综合| 91免费看`日韩一区二区| 欧美中文一区二区三区| 在线看国产一区二区| 欧美男同性恋视频网站| 日韩一区二区三区电影在线观看| 日韩免费视频一区二区| 久久婷婷综合激情| 日韩美女视频一区二区| 夜夜揉揉日日人人青青一国产精品| 亚洲无人区一区| 另类小说视频一区二区| 国产成人免费视频| 色婷婷精品久久二区二区蜜臀av| 精品视频1区2区| 欧美va亚洲va在线观看蝴蝶网| 国产免费观看久久| 亚洲精品日韩综合观看成人91| 亚洲成av人在线观看| 久久99精品国产麻豆不卡| 成人精品一区二区三区四区| 色婷婷香蕉在线一区二区| 欧美一区二区成人6969| 国产日产欧美一区二区视频| 亚洲精品免费在线| 精品一区二区三区在线播放视频 | 日韩一区二区免费在线观看| 精品久久久久久久久久久院品网| 亚洲国产精品99久久久久久久久 | 久久久国产精品麻豆 | 国产精品一区免费在线观看| 波多野结衣中文字幕一区二区三区| 色婷婷综合久久| 欧美成人欧美edvon| 亚洲视频一区二区在线| 日本亚洲天堂网| 99国产精品久久久久久久久久| 欧美日本高清视频在线观看| 久久综合成人精品亚洲另类欧美| 国产揄拍国内精品对白| 91最新地址在线播放| 欧美一区二区视频观看视频| 亚洲欧美在线另类| 理论电影国产精品| 欧美制服丝袜第一页| 亚洲国产精品av| 麻豆成人av在线| 欧美天堂一区二区三区| 欧美激情一区不卡| 美腿丝袜亚洲综合| 欧美性色黄大片手机版| 国产精品视频一二| 日韩成人精品在线观看| 日本久久一区二区三区| 国产欧美日本一区视频| 日韩高清电影一区| 色中色一区二区| 久久婷婷色综合| 蜜桃视频一区二区三区| 欧美影院午夜播放| 国产精品成人免费| 国产一区二区免费在线| 91精品国产色综合久久不卡电影| 亚洲最新在线观看| 波多野结衣91| 国产日韩av一区| 黄一区二区三区| 3d动漫精品啪啪1区2区免费| 一级做a爱片久久| 91视频观看视频| 国产日韩欧美精品综合| 精品夜夜嗨av一区二区三区| 欧美精品高清视频| 偷窥国产亚洲免费视频| 欧美综合视频在线观看| |精品福利一区二区三区| 国产suv一区二区三区88区| 欧美成人精精品一区二区频| 日韩av电影一区| 欧美性大战久久久久久久蜜臀| 亚洲男同性恋视频| 91最新地址在线播放| 自拍偷拍亚洲欧美日韩| 色综合久久九月婷婷色综合| 日韩一区中文字幕| 91丝袜美腿高跟国产极品老师 | 亚洲成人动漫精品| 欧美视频一区在线| 亚洲成人动漫在线免费观看| 欧美性生交片4| 天使萌一区二区三区免费观看| 欧美精品免费视频| 日韩精品亚洲专区| 欧美成人a∨高清免费观看| 精品亚洲成av人在线观看| 2017欧美狠狠色| 国产乱码精品一区二区三区五月婷 | 一区二区三区四区激情| 欧美亚洲高清一区二区三区不卡| 亚洲高清一区二区三区| 欧美二区三区91| 久久精品久久综合| 国产午夜一区二区三区| av电影在线观看完整版一区二区| 日韩美女精品在线| 欧美嫩在线观看| 狠狠色综合日日| 国产精品少妇自拍| 91精品福利视频| 视频一区视频二区中文| 26uuu久久综合| 99视频超级精品| 亚洲国产精品嫩草影院| 日韩欧美国产不卡| 丰满亚洲少妇av| 一个色综合网站| 欧美成人女星排行榜| 国产成人av一区二区三区在线| 国产精品国产三级国产普通话三级 | 国产日产欧美精品一区二区三区| 成人午夜电影久久影院| 亚洲韩国一区二区三区| 久久亚洲一区二区三区明星换脸| 成人动漫中文字幕| 香蕉乱码成人久久天堂爱免费| 精品免费视频一区二区| av在线不卡观看免费观看| 亚洲成人午夜电影| 国产精品午夜在线观看| 欧美日韩综合在线免费观看| 国内外成人在线视频| 一区二区三区国产精品| 精品动漫一区二区三区在线观看 | 欧美va亚洲va在线观看蝴蝶网| 风间由美性色一区二区三区| 天天亚洲美女在线视频| 国产片一区二区| 91精品婷婷国产综合久久性色 | 欧美在线视频日韩| 极品美女销魂一区二区三区| 亚洲欧美日韩在线| 欧美成人在线直播| 精品1区2区3区| 成人免费视频caoporn| 老司机精品视频线观看86| 一区二区欧美国产| 亚洲国产高清在线| 26uuu国产日韩综合| 欧美日韩综合在线免费观看| jlzzjlzz亚洲女人18|