⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cache_list_t.h

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 H
字号:
/* -*- c++ -*- */// Cache_List_T.h,v 1.1 2000/04/27 23:43:19 jxh Exp#ifndef JAWS_CACHE_LIST_T_H#define JAWS_CACHE_LIST_T_H#include "ace/Malloc.h"#include "JAWS/Cache_Object.h"// Forward declarationstemplate <class EXT_ID, class FACTORY, class HASH_FUNC, class EQ_FUNC>class JAWS_Cache_Manager;template <class EXT_ID, class FACTORY, class HASH_FUNC, class EQ_FUNC>class JAWS_Cache_List_Item;template <class EXT_ID, class FACT, class H_FN, class E_FN>class JAWS_Cache_List// Roll my own heap here.  Eventually, a heap should be its own// standalone data structure.//// This version is not a heap, but a doubly linked list.  We are// trying to simplify all the heap operations to be O(1).{public:  typedef JAWS_Cache_Manager<EXT_ID, FACT, H_FN, E_FN> Cache_Manager;  typedef JAWS_Cache_List_Item<EXT_ID, FACT, H_FN, E_FN> Cache_List_Item;  JAWS_Cache_List (ACE_Allocator *alloc = 0, size_t maxsize = 8192);  // maxsize is the total number of objects the in memory cache is  // willing to manage  ~JAWS_Cache_List (void);  int is_empty (void) const;  int is_full (void) const;  size_t size (void) const;  size_t maxsize (void) const;  int maxsize (Cache_Manager *cm, size_t new_maxsize);  // attempt to grow (or shrink) the heap.  Return 0 on success, -1 on  // error.  int insert (const EXT_ID &ext_id, JAWS_Cache_Object *const &int_id);  // attempt to insert int_id into heap.  int remove (EXT_ID &ext_id, JAWS_Cache_Object *&int_id);  // attempt to remove the top element of heap.  int remove (void *item);  // treat item as a Cache_List_Item, and remove it from the heap  int adjust (void *item);  // treat item as a Cache_List_Item, and alter its heap positionprotected:  void insert_i (Cache_List_Item *item);  // insert item into heap.  void remove_i (Cache_List_Item *item);  // remove the element residing at pos, but do not delete it.  void remove_i (void);  // remove the element residing at the top of heap, but do not delete it.private:  ACE_Allocator *allocator_;  size_t maxsize_;  size_t size_;  Cache_List_Item *item_;  Cache_List_Item *head_;  Cache_List_Item *tail_;};template <class EXT_ID, class FACT, class H_FN, class E_FN>class JAWS_Cache_List_Item{  friend class JAWS_Cache_List<EXT_ID, FACT, H_FN, E_FN>;public:  typedef JAWS_Cache_List<EXT_ID, FACT, H_FN, E_FN> Cache_List;  JAWS_Cache_List_Item (const EXT_ID &ext_id, JAWS_Cache_Object *const &int_id);  unsigned int priority (void);private:  EXT_ID ext_id_;  JAWS_Cache_Object *int_id_;  JAWS_Cache_List_Item *next_;  JAWS_Cache_List_Item *prev_;};#if defined (ACE_TEMPLATES_REQUIRE_SOURCE)#include "JAWS/Cache_List_T.cpp"#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */#endif /* JAWS_CACHE_LIST_T_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -