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

📄 iterator.cpp

📁 ACE自适配通信环境(ADAPTIVE Communication Environment)是可以自由使用、开放源码的面向对象(OO)框架(Framework)
💻 CPP
字号:
// -*- C++ -*-// Iterator.cpp,v 4.7 2003/11/01 11:15:22 dhinton Exp// Copyright (C) 1989 Free Software Foundation, Inc.// written by Douglas C. Schmidt (schmidt@cs.wustl.edu)// This file is part of GNU GPERF.// This program is free software; you can redistribute it and/or// modify it under the terms of the GNU General Public License// as published by the Free Software Foundation; either version 2// of the License, or (at your option) any later version.// This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.#include "Iterator.h"ACE_RCSID(src, Iterator, "Iterator.cpp,v 4.7 2003/11/01 11:15:22 dhinton Exp")#if defined (ACE_HAS_GPERF)#include "ace/os_include/os_ctype.h"// Constructor for Iterator.Iterator::Iterator (char *s,                    int lo,                    int hi,                    int word_end,                    int bad_val,                    int key_end)  : str (s),    end (key_end),    end_word (word_end),    error_value (bad_val),    hi_bound (hi),    lo_bound (lo){}// Provide an Iterator, returning the ``next'' value from the list of// valid values given in the constructor.intIterator::operator() (void){  // Variables to record the Iterator's status when handling ranges,  // e.g., 3-12.  static int size;  static int curr_value;  static int upper_bound;  if (size)    {      if (++curr_value >= upper_bound)        size = 0;      return curr_value;    }  else    {      while (*str)        switch (*str)          {          default: return error_value;          case ',': str++; break;          case '$': str++; return end_word;          case '0': case '1': case '2': case '3': case '4':          case '5': case '6': case '7': case '8': case '9':            for (curr_value = 0; isdigit (*str); str++)              curr_value = curr_value * 10 + *str - '0';            if (*str == '-')              {                for (size = 1, upper_bound = 0;                     isdigit (*++str);                     upper_bound = upper_bound * 10 + *str - '0');                if (upper_bound <= curr_value || upper_bound > hi_bound)                  return error_value;              }            return curr_value >= lo_bound && curr_value <= hi_bound              ? curr_value : error_value;          }      return end;    }}#endif /* ACE_HAS_GPERF */

⌨️ 快捷键说明

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