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

📄 rangemap.h

📁 SP是一个基于GNU C++编译器
💻 H
字号:
// Copyright (c) 1994 James Clark// See the file COPYING for copying permission.#ifndef RangeMap_INCLUDED#define RangeMap_INCLUDED 1#include "Vector.h"#include "Boolean.h"#include "ISet.h"#include "types.h"#include <stddef.h>#ifdef SP_NAMESPACEnamespace SP_NAMESPACE {#endiftemplate<class From, class To>struct RangeMapRange {  From fromMin;  From fromMax;  To toMin;};template<class From, class To> class RangeMapIter;template<class From, class To>class RangeMap {public:  RangeMap();  Boolean map(From, To &, From &alsoMax) const;  // Return 0 for no matches, 1 for 1, 2 for more than 1.  unsigned inverseMap(To, From &, ISet<WideChar> &, WideChar &count) const;  void addRange(From, From, To);private:  Vector<RangeMapRange<From,To> > ranges_;  friend class RangeMapIter<From,To>;};template<class From, class To>class RangeMapIter {public:  RangeMapIter(const RangeMap<From,To> &map);  Boolean next(From &fromMin, From &fromMax, To &toMin) {    if (!count_)      return 0;    else {      fromMin = ptr_->fromMin;      fromMax = ptr_->fromMax;      toMin = ptr_->toMin;      ptr_++;      count_--;      return 1;    }  }private:  size_t count_;  typename Vector<RangeMapRange<From,To> >::const_iterator ptr_;};#ifdef SP_NAMESPACE}#endif#endif /* not RangeMap_INCLUDED */#ifdef SP_DEFINE_TEMPLATES#include "RangeMap.cxx"#endif

⌨️ 快捷键说明

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