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

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

?? cache_heap_t.cpp

?? 一個開源的網絡開發庫ACE
?? CPP
字號:
// Cache_Heap_T.cpp,v 1.2 2000/05/31 19:15:07 jxh Exp

#ifndef JAWS_CACHE_HEAP_T_CPP
#define JAWS_CACHE_HEAP_T_CPP

#include "JAWS/Cache_Heap_T.h"
#include "JAWS/Cache_Manager_T.h"

template <class EXT_ID, class FACT, class H_FN, class E_FN>
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::JAWS_Cache_Heap (ACE_Allocator *alloc,
                                                       size_t maxsize)
  : allocator_ (alloc),
    maxsize_ (maxsize),
    size_ (0)
{
  if (this->allocator_ == 0)
    this->allocator_ = ACE_Allocator::instance ();

  size_t memsize
    = this->maxsize_ * sizeof (Cache_Heap_Item *);

  this->heap_ = (Cache_Heap_Item **) this->allocator_->malloc (memsize);
  if (this->heap_)
    {
      for (size_t i = 0; i < this->maxsize_; i++)
        this->heap_[i] = 0;
    }
  else
    {
      this->maxsize_ = 0;
      // should indicate something
    }
}

template <class EXT_ID, class FACT, class H_FN, class E_FN>
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::~JAWS_Cache_Heap (void)
{
  if (this->heap_ != 0)
    {
      for (size_t i = 0; i < this->maxsize_; i++)
        {
          if (this->heap_[i])
            {
              ACE_DES_FREE_TEMPLATE4(this->heap_[i], this->allocator_->free,
                                     JAWS_Cache_Heap_Item,
                                     EXT_ID, FACT, H_FN, E_FN);

              this->heap_[i] = 0;
            }
        }
      this->allocator_->free (this->heap_);
      this->heap_ = 0;
    }

  this->allocator_ = 0;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::is_empty (void) const
{
  return (this->size_ == 0);
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::is_full (void) const
{
  return (this->size_ == this->maxsize_);
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> size_t
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::size (void) const
{
  return this->size_;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> size_t
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::maxsize (void) const
{
  return this->maxsize_;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::maxsize (Cache_Manager *cm,
                                                size_t new_maxsize)
{
  int result = -1;

  size_t memsize
    = new_maxsize * sizeof (Cache_Heap_Item *);

  Cache_Heap_Item **new_heap
    = (Cache_Heap_Item **) this->allocator_->malloc (memsize);
  if (new_heap)
    {
      while (new_maxsize < this->size_)
        cm->FLUSH_i ();

      for (size_t i = 0; i < new_maxsize; i++)
        if (i < this->size_)
          new_heap[i] = this->heap_[i];
        else
          new_heap[i] = 0;

      Cache_Heap_Item ** volatile temp = this->heap_;
      this->heap_ = new_heap;
      this->maxsize_ = new_maxsize;
      this->allocator_->free (temp);
      result = 0;
    }

  return result;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> void
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::insert_i (Cache_Heap_Item *item)
{
  /* ASSERT: this->size_ < this->maxsize_ */

  size_t i;

  for (i = this->size_ + 1; i > 1; i /= 2)
    {
      if (item->priority () > this->heap_[i/2 - 1]->priority ())
        break;

      this->heap_[i-1] = this->heap_[i/2 - 1];
      this->heap_[i-1]->heap_idx_ = i-1;
    }

  this->heap_[i-1] = item;
  this->heap_[i-1]->heap_idx_ = i-1;
  this->size_++;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::insert (const EXT_ID &ext_id,
                                               JAWS_Cache_Object *const &int_id)
{
  if (this->is_full ())
    return -1;

  Cache_Heap_Item *item;
  ACE_NEW_MALLOC_RETURN (item,
                         (Cache_Heap_Item *)
                         this->allocator_->malloc (sizeof (Cache_Heap_Item)),
                         Cache_Heap_Item (ext_id, int_id), -1);

  this->insert_i (item);

  return 0;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> void
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::remove_i (void)
{
  /* ASSERT: this->size_ > 0 */
  this->size_--;
  Cache_Heap_Item *temp = this->heap_[this->size_];
  this->heap_[this->size_] = 0;

  size_t i = 1;
  while (2*i <= this->size_)
    {
      size_t child = 2*i;
      if ((child < this->size_)
          && (this->heap_[2*i]->priority ()
              < this->heap_[2*i - 1]->priority ()))
        child = 2*i + 1;

      if (temp->priority () < this->heap_[child-1]->priority ())
        break;

      this->heap_[i-1] = this->heap_[child-1];
      this->heap_[i-1]->heap_idx_ = i-1;
      i = child;
    }

  if (this->size_ > 0)
    {
      this->heap_[i-1] = temp;
      this->heap_[i-1]->heap_idx_ = i-1;
    }
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> void
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::remove_i (size_t pos)
{
  Cache_Heap_Item *item = this->heap_[pos];

  if (pos > 0)
    {
      int i = pos + 1;
      do
        {
          this->heap_[i-1] = this->heap_[i/2 - 1];
          this->heap_[i-1]->heap_idx_ = i-1;
          i /= 2;
        }
      while (i > 1);
    }

  this->heap_[0] = item;

  this->remove_i ();
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::remove (EXT_ID &ext_id,
                                               JAWS_Cache_Object *&int_id)
{
  if (this->is_empty ())
    return -1;

  Cache_Heap_Item *item = this->heap_[0];
  item->int_id_->heap_item (0);

  this->remove_i ();

  ext_id = item->ext_id_;
  int_id = item->int_id_;

  ACE_DES_FREE_TEMPLATE4(item, this->allocator_->free,
                         JAWS_Cache_Heap_Item,
                         EXT_ID, FACT, H_FN, E_FN);

  item = 0;
  return 0;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::remove (void *item)
{
  if (item == 0)
    return 0;

  Cache_Heap_Item *real_item = (Cache_Heap_Item *) item;

  // Make sure the item is where it thinks it is.
  if (this->heap_[real_item->heap_idx_] != real_item)
    return -1;

  real_item->int_id_->heap_item (0);
  this->remove_i (real_item->heap_idx_);

  ACE_DES_FREE_TEMPLATE4(real_item, this->allocator_->free,
                         JAWS_Cache_Heap_Item,
                         EXT_ID, FACT, H_FN, E_FN);

  real_item = 0;

  return 0;
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> int
JAWS_Cache_Heap<EXT_ID,FACT,H_FN,E_FN>::adjust (void *item)
{
  if (item == 0)
    return 0;

  Cache_Heap_Item *real_item = (Cache_Heap_Item *) item;

  // Make sure the item is where it thinks it is.
  if (this->heap_[real_item->heap_idx_] != real_item)
    return -1;

  this->remove_i (real_item->heap_idx_);
  this->insert_i (real_item);

  return 0;
}


template <class EXT_ID, class FACT, class H_FN, class E_FN>
JAWS_Cache_Heap_Item<EXT_ID,FACT,H_FN,E_FN>::
JAWS_Cache_Heap_Item (const EXT_ID &ext_id, JAWS_Cache_Object *const &int_id)
  : ext_id_ (ext_id),
    int_id_ (int_id),
    heap_idx_ (0)
{
  this->int_id_->heap_item (this);
}

template <class EXT_ID, class FACT, class H_FN, class E_FN> unsigned int
JAWS_Cache_Heap_Item<EXT_ID,FACT,H_FN,E_FN>::priority (void)
{
  return this->int_id_->priority ();
}


#endif /* JAWS_CACHE_HEAP_T_CPP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天天av天天翘天天综合网| 亚洲精选一二三| 欧美一区二区精品在线| 欧美伦理电影网| 欧美军同video69gay| 欧美欧美欧美欧美| 欧美大胆人体bbbb| 久久噜噜亚洲综合| 国产精品久久久久桃色tv| 亚洲欧美一区二区视频| 一区二区不卡在线播放 | 91久久精品一区二区三| 色妹子一区二区| 欧美日韩视频不卡| 精品处破学生在线二十三| 国产肉丝袜一区二区| 亚洲天堂2016| 日本亚洲最大的色成网站www| 久久国产精品色婷婷| 国产高清亚洲一区| 色综合久久88色综合天天 | 精品国产乱码久久久久久牛牛| 日韩精品中文字幕一区二区三区| 欧美成人艳星乳罩| 亚洲色图在线播放| 三级不卡在线观看| 成人黄色在线视频| 欧美偷拍一区二区| 久久久久久免费网| 亚洲午夜精品网| 国产一区二区剧情av在线| 99re视频精品| 久久网站热最新地址| 亚洲天堂中文字幕| 国产精品一区二区男女羞羞无遮挡 | 午夜精品一区二区三区免费视频 | 91麻豆精品国产| 国产欧美日韩在线| 亚洲国产日韩一区二区| 狠狠色狠狠色综合| 欧美欧美欧美欧美首页| 国产精品美女久久久久高潮| 美女精品一区二区| 欧美午夜片在线看| 最近中文字幕一区二区三区| 日本午夜精品一区二区三区电影| 成人夜色视频网站在线观看| 欧美一级免费观看| 一区二区三区高清在线| 成人va在线观看| 精品美女在线播放| 免费成人小视频| 欧美日韩精品一区视频| 亚洲色图视频网站| 成人免费毛片高清视频| 精品不卡在线视频| 蜜桃av一区二区| av一区二区三区| 制服丝袜日韩国产| 亚洲主播在线播放| 99vv1com这只有精品| 国产免费久久精品| 韩日av一区二区| 精品福利一区二区三区| 蜜桃av一区二区三区| 欧美顶级少妇做爰| 亚洲主播在线观看| 欧美亚洲综合久久| 亚洲成人av电影| 欧美日韩黄色影视| 亚洲chinese男男1069| 欧美丝袜丝交足nylons| 亚洲一区在线看| 欧美日韩一级黄| 丝瓜av网站精品一区二区| 欧美视频在线观看一区| 亚洲一区中文日韩| 欧美日韩精品电影| 蜜臀久久99精品久久久久宅男| 欧美精品国产精品| 蜜桃av一区二区三区电影| 欧美精品高清视频| 青草国产精品久久久久久| 91精品国产一区二区三区蜜臀| 日本欧美大码aⅴ在线播放| 欧美一区二区三区啪啪| 久久99九九99精品| 国产欧美日韩综合| 一本久道中文字幕精品亚洲嫩| 亚洲一区二区视频在线观看| 欧美日韩亚洲国产综合| 日韩av一级片| 久久精品男人天堂av| 色综合中文综合网| 日韩午夜激情av| 国产精品自拍网站| 中文字幕亚洲区| 欧美日韩精品一区二区三区四区 | 亚洲在线中文字幕| 欧美夫妻性生活| 国产乱码精品一区二区三区忘忧草 | 制服丝袜成人动漫| 精品一区二区三区在线播放| 国产亚洲一区字幕| 欧美影院一区二区| 久久99热国产| 亚洲天堂福利av| 日韩一二在线观看| 成人精品电影在线观看| 亚洲一级片在线观看| 精品国产a毛片| 色综合久久99| 国产精品一区一区| 午夜婷婷国产麻豆精品| 欧美极品少妇xxxxⅹ高跟鞋| 欧美乱妇20p| 成人黄色777网| 精品一区二区精品| 亚洲一区在线视频| 欧美激情在线观看视频免费| 7777女厕盗摄久久久| 粉嫩在线一区二区三区视频| 亚洲成av人片一区二区| 中文字幕在线免费不卡| 精品99999| 91精品福利在线一区二区三区| 色婷婷综合久久久久中文一区二区 | 欧美日韩国产精品成人| 成人性生交大片免费看在线播放| 日本网站在线观看一区二区三区| 综合久久综合久久| 久久久久久久电影| 精品久久久久香蕉网| 欧美日韩国产系列| 色狠狠桃花综合| 99久久精品免费看| 不卡的看片网站| 成人一区二区在线观看| 国产高清在线观看免费不卡| 国产综合色产在线精品| 蓝色福利精品导航| 久久精品国产亚洲5555| 性做久久久久久免费观看欧美| 中文字幕一区二区三区在线观看| 国产视频在线观看一区二区三区 | 污片在线观看一区二区| 一区二区三区电影在线播| 国产精品系列在线| 国产精品久久午夜夜伦鲁鲁| 欧美国产1区2区| 国产女主播一区| 中文字幕一区在线观看视频| 亚洲日本免费电影| 亚洲一区二区三区四区的| 亚洲小说欧美激情另类| 亚洲成av人影院| 日本sm残虐另类| 国内精品视频一区二区三区八戒 | 一区二区三区国产| 亚洲成人三级小说| 日韩成人精品在线观看| 日本网站在线观看一区二区三区 | 国产日韩欧美精品在线| 国产精品三级在线观看| 亚洲视频1区2区| 亚洲国产一区二区视频| 免费一级片91| 粉嫩av一区二区三区| 91色porny| 欧美色偷偷大香| 日韩视频在线永久播放| 国产午夜精品一区二区三区视频 | 日韩视频在线观看一区二区| 日韩欧美二区三区| 日本一区二区三区dvd视频在线| 国产精品乱码久久久久久 | 欧美一二三四区在线| 精品久久99ma| 日韩毛片精品高清免费| 天堂蜜桃一区二区三区| 国产激情一区二区三区四区| 色网站国产精品| 精品久久久久久久人人人人传媒| 国产精品国产三级国产aⅴ原创| 亚洲区小说区图片区qvod| 日韩av网站免费在线| 懂色av中文字幕一区二区三区| 在线中文字幕一区二区| 久久在线免费观看| 亚洲综合激情小说| 国产露脸91国语对白| 91免费观看国产| 日韩一二三区视频| 亚洲一区二区三区四区五区中文| 久久国产精品露脸对白| 色94色欧美sute亚洲13| 久久久五月婷婷| 日韩综合在线视频| 91亚洲国产成人精品一区二三| 精品国产免费久久|