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

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

?? gsm_sorted_sms_store.h

?? Gsm手機(jī)(短信息,電話簿)開發(fā)庫C++源代碼
?? H
字號:
// *************************************************************************
// * GSM TA/ME library
// *
// * File:    gsm_sorted_sms_store.h
// *
// * Purpose: Sorted SMS store (residing in files or in the ME)
// *
// * Author:  Peter Hofmann (software@pxh.de)
// *
// * Created: 14.8.1999
// *************************************************************************

#ifndef GSM_SORTED_SMS_STORE_H
#define GSM_SORTED_SMS_STORE_H

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

using namespace std;

namespace gsmlib
{
  // MapKey for SortedSMSStore
  
  class SortedSMSStore;
  typedef MapKey<SortedSMSStore> SMSMapKey;

  // maps key (see SortedSMSStore::SortOrder) to entry
  
  typedef multimap<SMSMapKey, SMSStoreEntry*> SMSStoreMap;

  // iterator for SortedSMSStore that hides the "second" member of the map
  
  typedef SMSStoreMap::iterator SMSStoreMapIterator;
  class SortedSMSStoreIterator : public SMSStoreMapIterator
  {
  public:
    SortedSMSStoreIterator() {}
    SortedSMSStoreIterator(SMSStoreMap::iterator i) :
      SMSStoreMapIterator(i) {}

    SMSStoreEntry &operator*()
      {return *((SMSStoreMap::iterator)*this)->second;}

    SMSStoreEntry *operator->()
      {return ((SMSStoreMap::iterator)*this)->second;}
  };

  // The class SortedSMSStore makes the SMS store more manageable:
  // - empty slots in the ME phonebook are hidden by the API
  // - the class transparently handles stores that reside in files

  class SortedSMSStore : public RefBase, public NoCopy
  {
  private:

    bool _changed;              // true if file has changed after last save
    bool _fromFile;             // true if store read from file
    bool _madeBackupFile;       // true if backup file was created
    SortOrder _sortOrder;       // sort order of the _sortedSMSStore
                                // (default is ByDate)
    bool _readonly;             // =true if read from stdin
    string _filename;           // name of the file if store from file
    SMSStoreMap _sortedSMSStore; // store from file
    SMSStoreRef _meSMSStore;    // store if from ME

    unsigned int _nextIndex;    // next index to use for file-based store

    // initial read of SMS file
    void readSMSFile(istream &pbs, string filename) throw(GsmException);
    
    // synchronize SortedSMSStore with file (no action if in ME)
    void sync(bool fromDestructor) throw(GsmException);
    
    // throw an exception if _readonly is set
    void checkReadonly() throw(GsmException);

  public:
    // iterator defs
    typedef SortedSMSStoreIterator iterator;
    typedef SMSStoreMap::size_type size_type;

    // constructor for file-based store
    // read from file
    SortedSMSStore(string filename) throw(GsmException);
    // read from stdin or start empty and write to stdout
    SortedSMSStore(bool fromStdin) throw(GsmException);

    // constructor for ME-based store
    SortedSMSStore(SMSStoreRef meSMSStore) throw(GsmException);

    // handle sorting
    void setSortOrder(SortOrder newOrder);
    SortOrder sortOrder() const {return _sortOrder;}
    
    // store traversal commands
    // these are suitable to use stdc++ lib algorithms and iterators
    
    // traversal commands
    iterator begin() {return _sortedSMSStore.begin();}
    iterator end() {return _sortedSMSStore.end();}

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

    // existing iterators may be invalidated after an insert operation
    // return position
    // insert only writes to available positions
    // warning: insert fails silently if size() == max_size()
    iterator insert(const SMSStoreEntry& x) throw(GsmException);
    iterator insert(iterator position, const SMSStoreEntry& x)
      throw(GsmException);

    SMSStoreMap::size_type count(Address &key)
      {
        assert(_sortOrder == ByAddress);
        return _sortedSMSStore.count(SMSMapKey(*this, key));
      }
    iterator find(Address &key)
      {
        assert(_sortOrder == ByAddress);
        return _sortedSMSStore.find(SMSMapKey(*this, key));
      }
    iterator lower_bound(Address &key)
      {
        assert(_sortOrder == ByAddress);
        return _sortedSMSStore.lower_bound(SMSMapKey(*this, key));
      }
    iterator upper_bound(Address &key)
      {
        assert(_sortOrder == ByAddress);
        return _sortedSMSStore.upper_bound(SMSMapKey(*this, key));
      }
    pair<iterator, iterator> equal_range(Address &key)
      {
        assert(_sortOrder == ByAddress);
        return _sortedSMSStore.equal_range(SMSMapKey(*this, key));
      }

    SMSStoreMap::size_type count(Timestamp &key)
      {
        assert(_sortOrder == ByDate);
        return _sortedSMSStore.count(SMSMapKey(*this, key));
      }
    iterator find(Timestamp &key)
      {
        assert(_sortOrder == ByDate);
        return _sortedSMSStore.find(SMSMapKey(*this, key));
      }
    iterator lower_bound(Timestamp &key)
      {
        assert(_sortOrder == ByDate);
        return _sortedSMSStore.lower_bound(SMSMapKey(*this, key));
      }
    iterator upper_bound(Timestamp &key)
      {
        assert(_sortOrder == ByDate);
        return _sortedSMSStore.upper_bound(SMSMapKey(*this, key));
      }
    pair<iterator, iterator> equal_range(Timestamp &key)
      {
        assert(_sortOrder == ByDate);
        return _sortedSMSStore.equal_range(SMSMapKey(*this, key));
      }

    SMSStoreMap::size_type count(int key)
      {
        assert(_sortOrder == ByIndex || _sortOrder == ByType);
        return _sortedSMSStore.count(SMSMapKey(*this, key));
      }
    iterator find(int key)
      {
        assert(_sortOrder == ByIndex || _sortOrder == ByType);
        return _sortedSMSStore.find(SMSMapKey(*this, key));
      }
    iterator lower_bound(int key)
      {
        assert(_sortOrder == ByIndex || _sortOrder == ByType);
        return _sortedSMSStore.lower_bound(SMSMapKey(*this, key));
      }
    iterator upper_bound(int key)
      {
        assert(_sortOrder == ByIndex || _sortOrder == ByType);
        return _sortedSMSStore.upper_bound(SMSMapKey(*this, key));
      }
    pair<iterator, iterator> equal_range(int key)
      {
        assert(_sortOrder == ByIndex || _sortOrder == ByType);
        return _sortedSMSStore.equal_range(SMSMapKey(*this, key));
      }

    size_type erase(Address &key) throw(GsmException);
    size_type erase(int key) throw(GsmException);
    size_type erase(Timestamp &key) throw(GsmException);
    void erase(iterator position) throw(GsmException);
    void erase(iterator first, iterator last) throw(GsmException);
    void clear() throw(GsmException);

    // synchronize SortedPhonebook with file (no action if in ME)
    void sync() throw(GsmException) {sync(false);}
    
    // destructor
    // writes back change to file if store is in file
    ~SortedSMSStore();
  };

  typedef Ref<SortedSMSStore> SortedSMSStoreRef;
};

#endif // GSM_SORTED_SMS_STORE_H

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
7777精品伊人久久久大香线蕉 | 欧美性极品少妇| 午夜婷婷国产麻豆精品| 国产亚洲欧美激情| 久久蜜桃av一区精品变态类天堂| 91精品国产一区二区三区| 欧美色涩在线第一页| 欧美日韩一级视频| 91精品国产综合久久福利| 精品国产污网站| 久久久精品综合| 亚洲欧洲色图综合| 亚洲已满18点击进入久久| 视频一区视频二区在线观看| 免费xxxx性欧美18vr| 精品一区二区影视| 国产精品99久久久久| 国产成人精品影视| 色婷婷综合久久久中文一区二区 | 欧美一级精品在线| 亚洲精品在线电影| 亚洲视频中文字幕| 亚洲v精品v日韩v欧美v专区| 极品少妇一区二区| 91首页免费视频| 精品视频1区2区| 久久久精品日韩欧美| 有坂深雪av一区二区精品| 日韩成人一区二区| 国产成人av电影| 欧美日韩国产经典色站一区二区三区| 4438x亚洲最大成人网| 国产日韩精品久久久| 亚洲激情图片qvod| 精品一区二区成人精品| 99久久婷婷国产综合精品电影| 在线观看日产精品| 久久久精品tv| 日韩av中文在线观看| 不卡av在线免费观看| 日韩一区二区三区在线视频| 中文字幕亚洲欧美在线不卡| 美女性感视频久久| 91黄色免费版| 欧美激情在线一区二区三区| 91精品国产综合久久精品麻豆| 国产性色一区二区| 青青青伊人色综合久久| 在线视频亚洲一区| 国产亚洲欧美日韩日本| 麻豆精品国产91久久久久久| 色哟哟一区二区在线观看| 欧美电影免费观看高清完整版 | 一区二区三区在线免费观看| 国产一区二区在线观看视频| 在线观看日韩一区| 中文字幕亚洲成人| 国产成人精品影视| 久久理论电影网| 久久99精品久久只有精品| 欧美日韩不卡一区| 亚洲国产美女搞黄色| 色哟哟一区二区在线观看| 欧美极品少妇xxxxⅹ高跟鞋| 狠狠色综合播放一区二区| 欧美一级淫片007| 天堂va蜜桃一区二区三区| 欧美日韩黄视频| 亚洲香蕉伊在人在线观| 欧美视频第二页| 一区二区三区91| 欧美亚洲一区三区| 亚洲最快最全在线视频| 777久久久精品| 一区二区三区日韩欧美| 一本一道综合狠狠老| 亚洲欧美日韩国产综合| 91成人看片片| 亚洲狠狠丁香婷婷综合久久久| 91视频精品在这里| 亚洲人成电影网站色mp4| 91在线你懂得| 亚洲在线中文字幕| 欧美亚一区二区| 日韩高清在线电影| 日韩女优制服丝袜电影| 韩国成人在线视频| 国产精品欧美一区喷水| av动漫一区二区| 一区二区激情视频| 欧美精品在欧美一区二区少妇| 日本在线观看不卡视频| 26uuu精品一区二区在线观看| 国产专区欧美精品| 亚洲欧洲日本在线| 在线播放视频一区| 国产乱人伦精品一区二区在线观看| 国产女同互慰高潮91漫画| 色综合咪咪久久| 美女一区二区三区| 国产精品久久久久一区二区三区| 色94色欧美sute亚洲线路二| 秋霞影院一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲免费观看高清完整版在线| 一本色道a无线码一区v| 日韩精品成人一区二区在线| 久久嫩草精品久久久精品一| 成人小视频在线观看| 五月天亚洲婷婷| 久久嫩草精品久久久精品| 97aⅴ精品视频一二三区| 免费成人av在线| 亚洲免费伊人电影| 精品国产一区二区亚洲人成毛片| 99视频超级精品| 精品一区二区三区免费视频| 亚洲黄色小视频| 久久久久久久国产精品影院| 欧美三级视频在线播放| 丁香六月综合激情| 麻豆精品久久精品色综合| 亚洲精品亚洲人成人网| 国产午夜精品美女毛片视频| 在线综合+亚洲+欧美中文字幕| 91免费观看在线| 国产九色精品成人porny| 日韩精品福利网| 亚洲一区中文日韩| 亚洲欧洲精品一区二区三区| 欧美精品一区二区在线观看| 欧美日韩国产首页在线观看| 不卡高清视频专区| 成人性生交大片免费看在线播放| 美女视频一区在线观看| 午夜精品久久久久影视| 亚洲一区二区在线观看视频| 国产精品久久久久aaaa| 国产欧美精品一区aⅴ影院| 日韩午夜电影在线观看| 欧美日韩的一区二区| 欧美日韩一区二区三区四区| 91视频91自| 色综合 综合色| 99久久久免费精品国产一区二区| 丁香桃色午夜亚洲一区二区三区| 美女精品一区二区| 免费美女久久99| 天堂久久一区二区三区| 午夜在线电影亚洲一区| 天天色综合成人网| 五月激情综合网| 免费人成精品欧美精品| 麻豆免费精品视频| 九九精品视频在线看| 狠狠色丁香婷婷综合| 国产精品一品二品| 成人动漫在线一区| 91一区二区在线| 欧美亚洲高清一区二区三区不卡| 色琪琪一区二区三区亚洲区| 欧美优质美女网站| 欧美美女直播网站| 欧美大胆一级视频| 国产精品久久久久久亚洲毛片| 一区视频在线播放| 亚洲国产欧美日韩另类综合 | 欧美这里有精品| 欧美二区三区91| 久久夜色精品一区| 国产亚洲一区二区在线观看| 国产精品福利在线播放| 亚洲激情av在线| 日韩和欧美一区二区三区| 久久电影网站中文字幕| 国产黄色精品网站| 在线精品视频小说1| 日韩一区二区三区视频| 中文字幕精品一区| 亚洲图片欧美综合| 国产一区二区在线电影| 色综合久久六月婷婷中文字幕| 3d成人动漫网站| 欧美国产乱子伦 | 国产欧美精品日韩区二区麻豆天美| 国产亚洲欧美日韩日本| 一区二区三区在线观看动漫| 久久99日本精品| 色播五月激情综合网| 欧美成人精精品一区二区频| 中文字幕一区二区三区四区 | 在线观看亚洲一区| 久久这里只有精品6| 一区二区欧美视频| 国产一区二区按摩在线观看| 在线视频综合导航| 欧美激情一区二区三区| 日本美女一区二区三区视频| 成人h精品动漫一区二区三区| 日韩欧美久久一区|