diff --git a/src/Makefile.sources b/src/Makefile.sources index 0da4abe05..98b622889 100644 --- a/src/Makefile.sources +++ b/src/Makefile.sources @@ -36,7 +36,6 @@ HB_BASE_sources = \ hb-face.hh \ hb-font.cc \ hb-font.hh \ - hb-iter.hh \ hb-kern.hh \ hb-machinery.hh \ hb-map.cc \ diff --git a/src/hb-iter.hh b/src/hb-iter.hh deleted file mode 100644 index a269968db..000000000 --- a/src/hb-iter.hh +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright © 2018 Google, Inc. - * - * This is part of HarfBuzz, a text shaping library. - * - * Permission is hereby granted, without written agreement and without - * license or royalty fees, to use, copy, modify, and distribute this - * software and its documentation for any purpose, provided that the - * above copyright notice and the following two paragraphs appear in - * all copies of this software. - * - * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR - * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES - * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN - * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - * DAMAGE. - * - * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, - * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - * FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS - * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO - * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. - * - * Google Author(s): Behdad Esfahbod - */ - -#ifndef HB_ITER_HH -#define HB_ITER_HH - -#include "hb.hh" - - -/* Unified iterator object. - * - * The goal of this template is to make the same iterator interface - * available to all types, and make it very easy and compact to use. - * Iterator objects are small, light-weight, objects that can be - * copied by value. If the collection / object being iterated on - * is writable, then the iterator points to lvalues, otherwise it - * returns rvalues. - * - * The way to declare, initialize, and use iterators, eg.: - * - * Iter s (src); - * Iter t (dst); - * for (; s && t; s++, t++) - * *s = *t; - */ - -template -struct Iter; - -#if 0 -template -struct Iter -{ - Iter (const T &c); -}; -#endif - -template -struct Iter -{ - /* Type of items. */ - typedef T Value; - - /* Constructors. */ - Iter (T *array_, int length_) : - array (array_), length (MAX (length_, 0)) {} - template - Iter (T (&array_)[length_]) : - array (array_), length (length_) {} - - /* Emptiness. */ - explicit_operator bool () const { return length; } - - /* Current item. */ - T &operator * () - { - if (unlikely (!length)) return CrapOrNull(T); - return *array; - } - T &operator -> () { return (operator *); } - - /* Next. */ - Iter & operator ++ () - { - if (unlikely (!length)) return *this; - array++; - length--; - return *this; - } - /* Might return void, or a copy of pre-increment iterator. */ - void operator ++ (int) - { - if (unlikely (!length)) return; - array++; - length--; - } - - /* Some iterators might implement len(). */ - unsigned int len () const { return length; } - - /* Some iterators might implement fast-forward. - * Only implement it if it's constant-time. */ - void operator += (unsigned int n) - { - n = MIN (n, length); - array += n; - length -= n; - } - - /* Some iterators might implement random-access. - * Only implement it if it's constant-time. */ - Iter & operator [] (unsigned int i) - { - if (unlikely (i >= length)) return CrapOrNull(T); - return array[i]; - } - - private: - T *array; - unsigned int length; -}; - -/* XXX Remove - * Just to test these compile. */ -static inline void -m () -{ - const int src[10] = {}; - int dst[20]; - - Iter s (src); - Iter s2 (src, 5); - Iter t (dst); - - s2 = s; - - for (; s && t; ++s, ++t) - { - *t = *s; - } -} - -#endif /* HB_ITER_HH */ diff --git a/src/hb-machinery.hh b/src/hb-machinery.hh index 2e0a074f2..a3bd3be4a 100644 --- a/src/hb-machinery.hh +++ b/src/hb-machinery.hh @@ -32,7 +32,6 @@ #include "hb.hh" #include "hb-blob.hh" -#include "hb-iter.hh" #include "hb-array.hh" #include "hb-vector.hh"