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

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

?? gsm_sorted_phonebook_base.h

?? Gsm手機(短信息,電話簿)開發庫C++源代碼
?? H
字號:
// *************************************************************************
// * GSM TA/ME library
// *
// * File:    gsm_sorted_phonebook_base.h
// *
// * Purpose: Virtual base class for alphabetically sorted phonebook
// *          The infrastructure in this module allows custom backends for
// *          storing phonebook entries to be integrated into gsmlib
// *          (eg. LDAP- or RDBMS-based phonebook stores).
// *
// * Author:  Peter Hofmann (software@pxh.de)
// *
// * Created: 5.6.2000
// *************************************************************************

#ifndef GSM_SORTED_PHONEBOOK_BASE_H
#define GSM_SORTED_PHONEBOOK_BASE_H

#include <gsmlib/gsm_util.h>
#include <gsmlib/gsm_map_key.h>
#include <string>
#include <map>
#include <fstream>

using namespace std;

namespace gsmlib
{
  // a single entry in a phonebook

  class PhonebookEntryBase : public RefBase
  {
  protected:
    bool _changed;              // set to true if _telephone or _text changed
    string _telephone;
    string _text;
    int _index;                 // my position in the phonebook
                                // == -1 if not used (can only happen if
                                // phonebook is read from file)
    bool _useIndex;             // compare indices in operator==,
                                // use _index for inserting into
                                // Phonebook

  public:
    PhonebookEntryBase() :
      _changed(false), _index(-1), _useIndex(false) {}

    // convenience constructor
    PhonebookEntryBase(string telephone, string text, int index = -1) :
      _changed(false), _telephone(telephone), _text(text),
      _index(index), _useIndex(false) {}

    // accessor functions
    virtual void set(string telephone, string text, int index = -1,
                     bool useIndex = false)
      throw(GsmException);
    virtual string text() const throw(GsmException);
    virtual string telephone() const throw(GsmException);

    // return true if both telephone and text are empty
    bool empty() const throw(GsmException);

    // set to true if operator== should compare the _index as well
    void setUseIndex(bool useIndex)
      {_useIndex = useIndex;}
    bool useIndex() const {return _useIndex;}
    
    // equality operator
    // if one of the operands has _useIndex == true
    // takes _index and e._index into account
    bool operator==(const PhonebookEntryBase &e) const;

    // return index
    int index() const {return _index;}

    // return true if entry changed
    bool changed() const {return _changed;}

    // reset the changed status (ie. if synced to file)
    void resetChanged() {_changed = false;}

    // return deep copy of this entry
    virtual Ref<PhonebookEntryBase> clone();
    
    PhonebookEntryBase(const PhonebookEntryBase &e) throw(GsmException);
    PhonebookEntryBase &operator=(const PhonebookEntryBase &e)
      throw(GsmException);

    virtual ~PhonebookEntryBase() {}
  };

  // MapKey for sortedPhonebook
  
  class SortedPhonebookBase;
  typedef MapKey<SortedPhonebookBase> PhoneMapKey;

  // maps text or telephone to entry
  
  typedef multimap<PhoneMapKey, PhonebookEntryBase*> PhonebookMap;

  // iterator for SortedPhonebook that hides the "second" member of the map
  
  typedef PhonebookMap::iterator PhonebookMapIterator;
  class SortedPhonebookIterator : public PhonebookMapIterator
  {
  public:
    SortedPhonebookIterator() {}
    SortedPhonebookIterator(PhonebookMap::iterator i) :
      PhonebookMapIterator(i) {}

    PhonebookEntryBase &operator*()
      {return *((PhonebookMap::iterator)*this)->second;}

    PhonebookEntryBase *operator->()
      {return ((PhonebookMap::iterator)*this)->second;}
  };

  // virtual base class for sorted phonebooks

  class SortedPhonebookBase : public RefBase, public NoCopy
  {
  public:
    // iterator defs
    typedef SortedPhonebookIterator iterator;
    typedef PhonebookMap::size_type size_type;

    // return maximum telephone number length
    virtual unsigned int getMaxTelephoneLen() const = 0;

    // return maximum entry description length
    virtual unsigned int getMaxTextLen() const = 0;

    // handle sorting
    virtual void setSortOrder(SortOrder newOrder) = 0;
    virtual SortOrder sortOrder() const = 0;
    
    // phonebook traversal commands
    // these are suitable to use stdc++ lib algorithms and iterators
    
    // traversal commands
    virtual iterator begin() = 0;
    virtual iterator end() = 0;

    // the size macros return the number of used entries
    virtual int size() const = 0;
    virtual int max_size() const = 0;
    virtual int capacity() const = 0;
    virtual bool empty() const throw(GsmException) = 0;

    // existing iterators remain valid after an insert or erase operation

    // return position
    // insert only writes to available positions
    // warning: insert fails silently if size() == max_size()
    virtual iterator insert(const PhonebookEntryBase& x) throw(GsmException)
      = 0;
    virtual iterator insert(iterator position, const PhonebookEntryBase& x)
      throw(GsmException) = 0;

    virtual PhonebookMap::size_type count(string &key) = 0;
    virtual iterator find(string &key) = 0;
    virtual iterator lower_bound(string &key) = 0;
    virtual iterator upper_bound(string &key) = 0;
    virtual pair<iterator, iterator> equal_range(string &key) = 0;

    virtual PhonebookMap::size_type count(int key) = 0;
    virtual iterator find(int key) = 0;
    virtual iterator lower_bound(int key) = 0;
    virtual iterator upper_bound(int key) = 0;
    virtual pair<iterator, iterator> equal_range(int key) = 0;

    virtual size_type erase(string &key) throw(GsmException) = 0;
    virtual size_type erase(int key) throw(GsmException) = 0;
    virtual void erase(iterator position) throw(GsmException) = 0;
    virtual void erase(iterator first, iterator last) throw(GsmException) = 0;
    virtual void clear() throw(GsmException) = 0;

    // synchronize SortedPhonebookBase with storage
    virtual void sync() throw(GsmException) = 0;

    virtual ~SortedPhonebookBase() {}
  };

  typedef Ref<SortedPhonebookBase> SortedPhonebookRef;


  // base factory class for custom backends
  class CustomPhonebookFactory
  {
  public:
    // return sorted phonebook object given the source specification
    // (eg. database name, URL, etc.)
    virtual SortedPhonebookRef createPhonebook(string source)
      throw(GsmException) = 0;
  };

  // registry for custom backends
  
  class CustomPhonebookRegistry
  {
    // registered factories
    static map<string, CustomPhonebookFactory*> *_factoryList;

  public:
    // register a factory class for a specific backend
    // (case does not matter for backend name)
    static void registerCustomPhonebookFactory(string backendName,
                                        CustomPhonebookFactory *factory)
      throw(GsmException);
      
    
    // return a phonebook object given the backend name and the source
    // specification
    static SortedPhonebookRef
    createPhonebook(string backendName, string source) throw(GsmException);
  };

};

#endif // GSM_SORTED_PHONEBOOK_BASE_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区不卡在线播放 | 欧美日韩免费不卡视频一区二区三区| 国产午夜精品理论片a级大结局| 日韩成人伦理电影在线观看| 中文字幕欧美三区| 国产一区二区三区在线观看免费| 久久免费美女视频| 成人爱爱电影网址| 中文字幕在线观看不卡视频| av不卡免费电影| 亚洲电影在线免费观看| 欧美三电影在线| 九九精品一区二区| 国产精品私房写真福利视频| 色狠狠一区二区三区香蕉| 丝袜美腿亚洲色图| 久久亚洲影视婷婷| 99久免费精品视频在线观看| 夜夜爽夜夜爽精品视频| 欧美老肥妇做.爰bbww| 狠狠狠色丁香婷婷综合激情| 亚洲欧洲成人av每日更新| 欧美日韩一卡二卡三卡| 韩国女主播成人在线观看| 国产精品久久久久久福利一牛影视 | 欧美日韩综合在线| 黄页视频在线91| 亚洲欧美日韩中文字幕一区二区三区| 欧美三区在线视频| 国产不卡免费视频| 亚洲福利一区二区三区| 久久精品视频网| 欧美亚洲一区二区三区四区| 极品瑜伽女神91| 一区二区欧美精品| 欧美不卡一区二区三区四区| 91麻豆精品在线观看| 蜜臀99久久精品久久久久久软件| 欧美国产一区视频在线观看| 9191久久久久久久久久久| 国产成人精品免费网站| 丁香亚洲综合激情啪啪综合| 午夜在线电影亚洲一区| 欧美国产一区二区在线观看| 日韩一区二区精品在线观看| 91免费版pro下载短视频| 久久精品免费看| 亚洲图片一区二区| 1024亚洲合集| 国产亚洲成年网址在线观看| 欧美肥胖老妇做爰| 欧美自拍偷拍午夜视频| 国产成人精品午夜视频免费| 蜜桃视频一区二区三区| 香蕉加勒比综合久久| 亚洲欧美一区二区不卡| 国产三级一区二区| 精品国产一区二区在线观看| 欧美人动与zoxxxx乱| 91免费精品国自产拍在线不卡| 国产麻豆一精品一av一免费| 奇米一区二区三区av| 亚洲电影第三页| 亚洲精品日韩综合观看成人91| 久久精品一区蜜桃臀影院| 日韩欧美中文字幕精品| 欧美人妖巨大在线| 69堂精品视频| 欧美日免费三级在线| 欧美亚洲国产一区二区三区 | 视频一区二区欧美| 亚洲综合一区在线| 日韩久久一区二区| 亚洲免费色视频| 亚洲制服丝袜在线| 亚洲午夜久久久久久久久电影网 | 91麻豆国产在线观看| 99视频精品全部免费在线| 99r国产精品| thepron国产精品| 91在线视频官网| 日本乱码高清不卡字幕| 91国偷自产一区二区使用方法| 日本精品一级二级| 欧美性大战xxxxx久久久| 欧美日韩精品一区二区在线播放| 欧美探花视频资源| 91.com在线观看| 日韩欧美国产综合在线一区二区三区| 欧美久久久久久久久| 日韩视频免费观看高清完整版在线观看 | 天堂久久久久va久久久久| 五月婷婷综合网| 琪琪一区二区三区| 高清视频一区二区| 色综合久久精品| 4438x亚洲最大成人网| 精品福利一二区| 国产精品成人在线观看| 一区二区日韩av| 九一九一国产精品| av在线播放成人| 欧美日韩免费观看一区二区三区| 日韩一区二区免费在线观看| 国产亚洲一区二区三区| 亚洲人成伊人成综合网小说| 舔着乳尖日韩一区| 国产精品91xxx| 91国内精品野花午夜精品| 欧美久久久久久蜜桃| 久久久国产午夜精品 | 天天影视网天天综合色在线播放| 日韩影视精彩在线| 国产精品夜夜嗨| 在线观看网站黄不卡| 日韩欧美自拍偷拍| 亚洲免费观看高清| 九色综合国产一区二区三区| 99久久99久久综合| 日韩一区和二区| 最新热久久免费视频| 日本不卡在线视频| aaa欧美色吧激情视频| 欧美精品v国产精品v日韩精品 | 亚洲男女毛片无遮挡| 国产中文字幕精品| 欧美艳星brazzers| 欧美国产日韩精品免费观看| 日韩成人精品视频| 色天天综合久久久久综合片| 精品久久人人做人人爽| 亚洲欧美韩国综合色| 国产福利一区二区三区| 欧美精品乱码久久久久久按摩| 亚洲国产高清在线观看视频| av午夜一区麻豆| 日韩视频免费直播| 婷婷丁香久久五月婷婷| 色一情一乱一乱一91av| 久久久天堂av| 美女在线观看视频一区二区| 91福利区一区二区三区| 国产精品色婷婷| 国产美女精品一区二区三区| 欧美一区二区三区系列电影| 一区二区三区成人| gogo大胆日本视频一区| 久久精品网站免费观看| 久久av中文字幕片| 欧美久久一区二区| 午夜久久久久久| 在线精品视频免费观看| 自拍av一区二区三区| 成人午夜av电影| 国产日韩欧美精品综合| 韩国三级中文字幕hd久久精品| 777精品伊人久久久久大香线蕉| 一区二区三区四区精品在线视频| 国产98色在线|日韩| 国产亚洲精品资源在线26u| 激情文学综合丁香| 日韩免费一区二区| 日产国产高清一区二区三区| 欧美精品国产精品| 亚洲国产精品欧美一二99| 精品1区2区3区| 午夜视频一区在线观看| 欧美视频一区在线| 亚洲一区二区三区国产| 欧美美女一区二区三区| 视频一区二区三区在线| 日韩视频免费直播| 韩国av一区二区| 国产亚洲一区字幕| av中文字幕亚洲| 亚洲人吸女人奶水| 色婷婷av一区二区三区大白胸| 亚洲综合一区二区| 3d成人h动漫网站入口| 狠狠久久亚洲欧美| 国产精品女主播av| 91丨porny丨蝌蚪视频| 亚洲综合免费观看高清完整版| 色视频成人在线观看免| 亚洲国产精品久久不卡毛片| 日韩一二三区不卡| 国产精品白丝jk白祙喷水网站| 国产精品国产自产拍高清av王其| 91视频你懂的| 亚洲成人动漫一区| 精品999在线播放| 精久久久久久久久久久| 国产精品国产a| 欧美日韩国产三级| 狠狠色综合色综合网络| 中文字幕一区日韩精品欧美| 在线看一区二区| 捆绑调教美女网站视频一区| 亚洲国产精品av| 欧美日韩高清在线|