Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(432)

Unified Diff: gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/positions.h

Issue 10804012: Add native Windows binary for gperf. (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/positions.h
===================================================================
--- gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/positions.h (revision 0)
+++ gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/positions.h (revision 0)
@@ -0,0 +1,171 @@
+/* This may look like C code, but it is really -*- C++ -*- */
+
+/* A set of byte positions.
+
+ Copyright (C) 1989-1998, 2000, 2002 Free Software Foundation, Inc.
+ Written by Douglas C. Schmidt <schmidt@ics.uci.edu>
+ and Bruno Haible <bruno@clisp.org>.
+
+ This file is part of GNU GPERF.
+
+ GNU GPERF 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, or (at your option)
+ any later version.
+
+ GNU GPERF 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; see the file COPYING.
+ If not, write to the Free Software Foundation, Inc.,
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+#ifndef positions_h
+#define positions_h 1
+
+/* This class denotes a set of byte positions, used to access a keyword. */
+
+class Positions
+{
+ friend class PositionIterator;
+ friend class PositionReverseIterator;
+public:
+ /* Denotes the last char of a keyword, depending on the keyword's length. */
+ enum { LASTCHAR = -1 };
+
+ /* Maximum key position specifiable by the user, 1-based.
+ Note that MAX_KEY_POS-1 must fit into the element type of _positions[],
+ below. */
+ enum { MAX_KEY_POS = 255 };
+
+ /* Maximum possible size. Since duplicates are eliminated and the possible
+ 0-based positions are -1 .. MAX_KEY_POS-1, this is: */
+ enum { MAX_SIZE = MAX_KEY_POS + 1 };
+
+ /* Constructors. */
+ Positions ();
+ Positions (int pos1);
+ Positions (int pos1, int pos2);
+
+ /* Copy constructor. */
+ Positions (const Positions& src);
+
+ /* Assignment operator. */
+ Positions& operator= (const Positions& src);
+
+ /* Accessors. */
+ bool is_useall () const;
+ int operator[] (unsigned int index) const;
+ unsigned int get_size () const;
+
+ /* Write access. */
+ void set_useall (bool useall);
+ int * pointer ();
+ void set_size (unsigned int size);
+
+ /* Sorts the array in reverse order.
+ Returns true if there are no duplicates, false otherwise. */
+ bool sort ();
+
+ /* Creates an iterator, returning the positions in descending order. */
+ PositionIterator iterator () const;
+ /* Creates an iterator, returning the positions in descending order,
+ that apply to strings of length <= maxlen. */
+ PositionIterator iterator (int maxlen) const;
+ /* Creates an iterator, returning the positions in ascending order. */
+ PositionReverseIterator reviterator () const;
+ /* Creates an iterator, returning the positions in ascending order,
+ that apply to strings of length <= maxlen. */
+ PositionReverseIterator reviterator (int maxlen) const;
+
+ /* Set operations. Assumes the array is in reverse order. */
+ bool contains (int pos) const;
+ void add (int pos);
+ void remove (int pos);
+
+ /* Output in external syntax. */
+ void print () const;
+
+private:
+ /* The special case denoted by '*'. */
+ bool _useall;
+ /* Number of positions. */
+ unsigned int _size;
+ /* Array of positions. 0 for the first char, 1 for the second char etc.,
+ LASTCHAR for the last char. */
+ int _positions[MAX_SIZE];
+};
+
+/* This class denotes an iterator through a set of byte positions. */
+
+class PositionIterator
+{
+ friend class Positions;
+public:
+ /* Copy constructor. */
+ PositionIterator (const PositionIterator& src);
+
+ /* End of iteration marker. */
+ enum { EOS = -2 };
+
+ /* Retrieves the next position, or EOS past the end. */
+ int next ();
+
+ /* Returns the number of remaining positions, i.e. how often next() will
+ return a value != EOS. */
+ unsigned int remaining () const;
+
+private:
+ /* Initializes an iterator through POSITIONS. */
+ PositionIterator (Positions const& positions);
+ /* Initializes an iterator through POSITIONS, ignoring positions >= maxlen. */
+ PositionIterator (Positions const& positions, int maxlen);
+
+ const Positions& _set;
+ unsigned int _index;
+};
+
+/* This class denotes an iterator in reverse direction through a set of
+ byte positions. */
+
+class PositionReverseIterator
+{
+ friend class Positions;
+public:
+ /* Copy constructor. */
+ PositionReverseIterator (const PositionReverseIterator& src);
+
+ /* End of iteration marker. */
+ enum { EOS = -2 };
+
+ /* Retrieves the next position, or EOS past the end. */
+ int next ();
+
+ /* Returns the number of remaining positions, i.e. how often next() will
+ return a value != EOS. */
+ unsigned int remaining () const;
+
+private:
+ /* Initializes an iterator through POSITIONS. */
+ PositionReverseIterator (Positions const& positions);
+ /* Initializes an iterator through POSITIONS, ignoring positions >= maxlen. */
+ PositionReverseIterator (Positions const& positions, int maxlen);
+
+ const Positions& _set;
+ unsigned int _index;
+ unsigned int _minindex;
+};
+
+#ifdef __OPTIMIZE__
+
+#include <string.h>
+#define INLINE inline
+#include "positions.icc"
+#undef INLINE
+
+#endif
+
+#endif
Property changes on: gperf\src\gperf\3.0.1\gperf-3.0.1-src\src\positions.h
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/output.cc ('k') | gperf/src/gperf/3.0.1/gperf-3.0.1-src/src/positions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698