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

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

?? hash_bucket_t.cpp

?? 一個開源的網絡開發庫ACE
?? CPP
字號:
// Hash_Bucket_T.cpp,v 1.1 2000/04/27 23:43:20 jxh Exp

#ifndef JAWS_HASH_BUCKET_T_CPP
#define JAWS_HASH_BUCKET_T_CPP

#include "JAWS/Hash_Bucket_T.h"

// -----------------
// Hash_Bucket_Item
// -----------------

template <class EXT_ID, class INT_ID>
JAWS_Hash_Bucket_Item<EXT_ID, INT_ID>
::JAWS_Hash_Bucket_Item (const EXT_ID &ext_id, const INT_ID &int_id,
                        JAWS_Hash_Bucket_Item<EXT_ID, INT_ID> *next,
                        JAWS_Hash_Bucket_Item<EXT_ID, INT_ID> *prev)
  : ext_id_ (ext_id),
    int_id_ (int_id),
    next_ (next),
    prev_ (prev)
{
}

template <class EXT_ID, class INT_ID>
JAWS_Hash_Bucket_Item<EXT_ID, INT_ID>
::JAWS_Hash_Bucket_Item (JAWS_Hash_Bucket_Item<EXT_ID, INT_ID> *next,
                        JAWS_Hash_Bucket_Item<EXT_ID, INT_ID> *prev)
  : next_ (next),
    prev_ (prev)
{
}

template <class EXT_ID, class INT_ID>
JAWS_Hash_Bucket_Item<EXT_ID, INT_ID>::~JAWS_Hash_Bucket_Item (void)
{
  this->next_ = 0;
  this->prev_ = 0;
}


// ---------------------
// Hash_Bucket_DLCStack
// ---------------------

template <class EXT_ID, class INT_ID>
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::
JAWS_Hash_Bucket_DLCStack (ACE_Allocator *alloc)
  : allocator_ (alloc),
    head_ (0),
    tail_ (0)
{
  if (this->allocator_ == 0)
    this->allocator_ = ACE_Allocator::instance ();
}

template <class EXT_ID, class INT_ID>
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::
~JAWS_Hash_Bucket_DLCStack (void)
{
  this->reset ();
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::
is_empty (void) const
{
  return this->head_ == 0 && this->tail_ == 0;
}

template <class EXT_ID, class INT_ID> JAWS_HASH_BUCKET_ITEM *
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::
push (const EXT_ID &ext_id, const INT_ID &int_id)
{
  size_t malloc_size = sizeof (JAWS_HASH_BUCKET_ITEM);
  JAWS_HASH_BUCKET_ITEM *item;
  ACE_NEW_MALLOC_RETURN (item,
                         (JAWS_HASH_BUCKET_ITEM *)
                         this->allocator_->malloc (malloc_size),
                         JAWS_HASH_BUCKET_ITEM (ext_id, int_id), 0);

  if (item != 0)
    {
      if (this->is_empty ())
        {
          this->head_ = item;
          this->tail_ = item;
          item->next_ = this->head_;
          item->prev_ = this->tail_;
        }
      else
        {
          item->next_ = this->head_;
          item->prev_ = this->tail_;
          this->head_->prev_ = item;
          this->tail_->next_ = item;
          this->head_ = item;
        }
    }

  return item;
}

template <class EXT_ID, class INT_ID> JAWS_HASH_BUCKET_ITEM *
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::pop (void)
{
  JAWS_HASH_BUCKET_ITEM *item = 0;

  if (! this->is_empty ())
    {
      item = this->head_;
      if (this->head_ == this->tail_)
        {
          this->head_ = this->tail_ = 0;
        }
      else
        {
          this->head_ = this->head_->next_;
          this->head_->prev_ = this->tail_;
          this->tail_->next_ = this->head_;
        }
      item->next_ = 0;
      item->prev_ = 0;
    }

  return item;
}

template <class EXT_ID, class INT_ID> void
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::reset (void)
{
  JAWS_HASH_BUCKET_ITEM *item = 0;

  while ((item = this->pop ()) != 0)
    this->remove (item);
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack<EXT_ID, INT_ID>::remove (JAWS_HASH_BUCKET_ITEM *item)
{
  int result = 0;

  if (item != 0)
    {
      if (item->next_ != 0 && item->prev_ != 0)
        {
          if (item->next_ != item)
            {
              if (this->head_ == item)
                this->head_ = item->next_;
              if (this->tail_ == item)
                this->tail_ = item->prev_;
              item->next_->prev_ = item->prev_;
              item->prev_->next_ = item->next_;
            }
          else
            {
              this->head_ = this->tail_ = 0;
            }
          item->next_ = 0;
          item->prev_ = 0;
        }

      if (item->next_ == 0 && item->prev_ == 0)
        {
          ACE_DES_FREE_TEMPLATE2 (item, this->allocator_->free,
                                  JAWS_Hash_Bucket_Item, EXT_ID, INT_ID);
        }
      else
        result = -1;
    }

  return result;
}


// ------------------------------
// Hash_Bucket_DLCStack_Iterator
// ------------------------------

template <class EXT_ID, class INT_ID>
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::
JAWS_Hash_Bucket_DLCStack_Iterator (const JAWS_HASH_BUCKET_DLCSTACK &dlcstack)
  : dlcstack_ (dlcstack),
    next_ (0),
    prev_ (0),
    done_ (0)
{
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::first (void)
{
  int result = 0;

  if (! this->dlcstack_.is_empty ())
    {
      result = 1;
      this->next_ = this->dlcstack_.head_;
      this->prev_ = this->dlcstack_.tail_;
      this->done_ = 0;
    }

  return result;
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::last (void)
{
  return this->first ();
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::advance (void)
{
  int result = 1;

  if (this->next_ != 0)
    {
      this->prev_ = this->next_;
      this->next_ = this->next_->next_;
      if (this->next_ == this->dlcstack_.head_)
        {
          this->done_ = 1;
          result = 0;
        }
    }
  else
    result = this->first ();

  return result;
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::revert (void)
{
  int result = 1;

  if (this->prev_ != 0)
    {
      this->next_ = this->prev_;
      this->prev_ = this->prev_->prev_;
      if (this->prev_ == this->dlcstack_.tail_)
        {
          this->done_ = 1;
          result = 0;
        }
    }
  else
    result = this->last ();

  return result;
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::
next (JAWS_HASH_BUCKET_ITEM *&item)
{
  if (this->next_ == 0)
    this->first ();

  item = this->next_;
  return ! this->done ();
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::
next (JAWS_HASH_BUCKET_ITEM *&item) const
{
  item = this->next_;
  return ! this->done ();
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::
prev (JAWS_HASH_BUCKET_ITEM *&item)
{
  if (this->prev_ == 0)
    this->last ();

  item = this->prev_;
  return ! this->done ();
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::
prev (JAWS_HASH_BUCKET_ITEM *&item) const
{
  item = this->prev_;
  return ! this->done ();
}

template <class EXT_ID, class INT_ID> int
JAWS_Hash_Bucket_DLCStack_Iterator<EXT_ID, INT_ID>::done (void) const
{
  return this->done_;
}


// --------------------
// Hash_Bucket_Manager
// --------------------

template <class EXT_ID, class INT_ID, class EQ_FUNC>
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>
::JAWS_Hash_Bucket_Manager (ACE_Allocator *alloc)
  : dlcstack_ (alloc)
{
  if (alloc == 0)
    this->dlcstack_.allocator_ = ACE_Allocator::instance ();
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::open (ACE_Allocator *alloc)
{
  this->dlcstack_.allocator_ = alloc;
  if (alloc == 0)
    this->dlcstack_.allocator_ = ACE_Allocator::instance ();

  return 0;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC>
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::~JAWS_Hash_Bucket_Manager (void)
{
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::close (void)
{
  this->dlcstack_.reset ();
  return 0;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> JAWS_HASH_BUCKET_ITEM *
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>
::find_i (const EXT_ID &ext_id) const
{
  JAWS_HASH_BUCKET_DLCSTACK_ITERATOR iter (this->dlcstack_);
  JAWS_HASH_BUCKET_ITEM *item = 0;

  if (iter.first ())
    while (!iter.done ())
      {
        iter.next (item);
        if (item && EQ_FUNC (item->ext_id_, ext_id))
          break;
        iter.advance ();
      }

  return (item && EQ_FUNC (item->ext_id_, ext_id)) ? item : 0;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::find (const EXT_ID &ext_id,
                                                      INT_ID &int_id) const
{
  int result = -1;
  JAWS_HASH_BUCKET_ITEM *item = this->find_i (ext_id);

  if (item)
    {
      int_id = item->int_id_;
      result = 0;
    }

  return result;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>
::find (const EXT_ID &ext_id) const
{
  INT_ID dummy_id;
  return this->find (ext_id, dummy_id);
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::bind (const EXT_ID &ext_id,
                                                      const INT_ID &int_id)
{
  int result = 0;

  if (this->find (ext_id) == 0)
    {
      result = 1;
    }
  else
    {
      if (this->dlcstack_.push (ext_id, int_id) == 0)
        result = -1;
    }

  return result;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::trybind (const EXT_ID &ext_id,
                                                         INT_ID &int_id)
{
  int result = 0;

  if (this->find (ext_id, int_id) == 0)
    {
      result = 1;
    }
  else
    {
      if (this->dlcstack_.push (ext_id, int_id) == 0)
        result = -1;
    }

  return result;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::rebind (const EXT_ID &ext_id,
                                                        const INT_ID &int_id,
                                                        EXT_ID &old_ext_id,
                                                        INT_ID &old_int_id)
{
  int result = 0;
  JAWS_HASH_BUCKET_ITEM *item = this->find_i (ext_id);

  if (item)
    {
      result = 1;
      old_ext_id = item->ext_id_;
      old_int_id = item->int_id_;
      this->dlcstack_.remove (item);
    }

  if (this->dlcstack_.push (ext_id, int_id) == 0)
    result = -1;

  return result;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::unbind (const EXT_ID &ext_id,
                                                        INT_ID &int_id)
{
  int result = -1;
  JAWS_HASH_BUCKET_ITEM *item = this->find_i (ext_id);

  if (item)
    {
      result = 0;
      int_id = item->int_id_;
      this->dlcstack_.remove (item);
    }

  return result;
}

template <class EXT_ID, class INT_ID, class EQ_FUNC> int
JAWS_Hash_Bucket_Manager<EXT_ID,INT_ID,EQ_FUNC>::unbind (const EXT_ID &ext_id)
{
  INT_ID dummy_id;
  return this->unbind (ext_id, dummy_id);
}

#endif /* JAWS_HASH_BUCKET_T_CPP */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩毛片高清在线播放| 国产精品的网站| 成人亚洲一区二区一| 亚洲夂夂婷婷色拍ww47| 精品毛片乱码1区2区3区| 色激情天天射综合网| 精品在线播放午夜| 夜夜夜精品看看| 国产精品第五页| 国产亚洲一二三区| 欧美一区二区三区免费观看视频| 99久久国产综合色|国产精品| 美女任你摸久久| 亚洲一二三级电影| 综合久久久久久| 国产精品乱子久久久久| 久久久久久免费网| 欧美一区二区三区播放老司机| 色综合久久中文综合久久牛| 大美女一区二区三区| 激情综合五月天| 免费成人在线观看视频| 偷拍与自拍一区| 一区二区欧美精品| 一区二区久久久久久| 亚洲激情在线激情| 亚洲欧美一区二区三区孕妇| 欧美国产日韩一二三区| 国产网站一区二区| 久久综合狠狠综合久久综合88| 日韩一区二区中文字幕| 欧美精品久久99| 欧美狂野另类xxxxoooo| 欧美日韩国产另类一区| 欧美性xxxxx极品少妇| 一本大道av伊人久久综合| 99久久精品国产精品久久| 91在线视频官网| 99精品视频在线播放观看| eeuss鲁一区二区三区| 盗摄精品av一区二区三区| 高清av一区二区| 丁香六月综合激情| 成人av资源站| 91精品福利视频| 欧美主播一区二区三区美女| 在线观看欧美日本| 欧美日韩在线不卡| 欧美日韩精品电影| 日韩午夜激情免费电影| 精品国产三级a在线观看| 久久综合久久综合九色| 久久精品一二三| 国产精品久久久久一区二区三区| 成人欧美一区二区三区1314| 亚洲精品美腿丝袜| 天天综合网 天天综合色| 男人的天堂久久精品| 激情成人午夜视频| 岛国精品一区二区| 欧美系列一区二区| 精品日韩一区二区三区免费视频| 久久久亚洲精品石原莉奈| 国产精品久久久久aaaa| 一区二区三区高清在线| 日日欢夜夜爽一区| 国产一区二区三区观看| 99久久综合99久久综合网站| 欧美三级蜜桃2在线观看| 精品国产伦理网| 18欧美乱大交hd1984| 亚洲1区2区3区视频| 激情综合五月婷婷| 色综合一区二区| 欧美一区二区视频网站| 中文字幕免费观看一区| 亚洲午夜在线观看视频在线| 国产精品综合一区二区| 在线观看日韩av先锋影音电影院| 精品免费一区二区三区| 亚洲精品国产a| 久久国产精品免费| 一本一道久久a久久精品| 日韩三级免费观看| 亚洲天堂免费看| 另类欧美日韩国产在线| 色系网站成人免费| 精品理论电影在线观看| 一区二区三区毛片| 国产电影一区二区三区| 精品视频免费在线| 亚洲国产精品成人综合| 热久久国产精品| 99国产精品一区| 精品粉嫩aⅴ一区二区三区四区| 亚洲美女电影在线| 国产一区91精品张津瑜| 69精品人人人人| 最新久久zyz资源站| 看电影不卡的网站| 欧美日韩一区不卡| 一色屋精品亚洲香蕉网站| 美女精品一区二区| 一本到一区二区三区| 久久久精品日韩欧美| 免费看精品久久片| 欧美日韩国产影片| 亚洲精品老司机| 成人开心网精品视频| 精品国产免费久久 | 久久夜色精品一区| 午夜一区二区三区视频| 成人丝袜18视频在线观看| 精品少妇一区二区三区在线播放 | 日韩**一区毛片| 色哟哟一区二区| 国产精品欧美久久久久无广告| 蜜桃精品在线观看| 欧美精品粉嫩高潮一区二区| 亚洲激情图片一区| 99re热这里只有精品免费视频 | 亚洲欧美日韩国产中文在线| 国产成人在线视频免费播放| 日韩欧美国产综合| 五月天激情综合网| 欧美三级中文字| 亚洲第一狼人社区| 欧美三级韩国三级日本三斤| 夜夜嗨av一区二区三区中文字幕| 97久久超碰国产精品电影| 国产精品乱码一区二区三区软件| 国产精品一二一区| 久久亚洲精精品中文字幕早川悠里| 奇米影视7777精品一区二区| 911国产精品| 天使萌一区二区三区免费观看| 欧美日韩综合色| 亚洲第一狼人社区| 91精品国产综合久久蜜臀| 日韩电影免费在线观看网站| 91精品国产色综合久久不卡蜜臀| 国产午夜精品久久久久久免费视 | 精品理论电影在线| 久久精品av麻豆的观看方式| 精品国产网站在线观看| 国产麻豆成人精品| 国产日韩欧美精品电影三级在线| 国产一二三精品| 日本一区二区三区久久久久久久久不 | 国产精品久线在线观看| 99视频精品在线| 亚洲精品一卡二卡| 欧美日韩免费不卡视频一区二区三区| 五月激情丁香一区二区三区| 日韩一区二区在线看片| 韩国女主播一区| 国产精品丝袜一区| 色综合久久久久综合体| 亚洲综合在线观看视频| 在线不卡中文字幕| 韩国v欧美v亚洲v日本v| 国产精品福利影院| 欧美日韩综合色| 激情综合一区二区三区| 国产精品美日韩| 欧美色窝79yyyycom| 久久9热精品视频| 国产精品久久久久永久免费观看| 色欧美片视频在线观看| 日韩av高清在线观看| 国产欧美精品区一区二区三区 | 91在线视频18| 天天综合网 天天综合色| 精品国产3级a| 91丝袜美腿高跟国产极品老师 | 91小视频在线免费看| 性做久久久久久免费观看欧美| 日韩欧美一区二区视频| 成人毛片老司机大片| 同产精品九九九| 欧美激情综合五月色丁香| 欧美日韩黄色一区二区| 国产成人综合在线播放| 午夜精品一区二区三区免费视频 | 午夜一区二区三区视频| 欧美国产一区在线| 欧美日韩国产大片| 国产大片一区二区| 午夜欧美视频在线观看| 欧美高清在线一区| 91麻豆精品91久久久久同性| 99免费精品视频| 精品一区二区三区影院在线午夜| 亚洲美女屁股眼交| 国产欧美日韩在线看| 91精品国产高清一区二区三区| 91啪九色porn原创视频在线观看| 久久精品99国产精品日本| 亚洲成av人在线观看| 国产精品国产自产拍高清av|