summaryrefslogtreecommitdiff
path: root/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/vector.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/vector.cc')
-rw-r--r--Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/vector.cc202
1 files changed, 0 insertions, 202 deletions
diff --git a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/vector.cc b/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/vector.cc
deleted file mode 100644
index cf8906a333f..00000000000
--- a/Build/source/texk/lcdf-typetools/lcdf-typetools-src/include/lcdf/vector.cc
+++ /dev/null
@@ -1,202 +0,0 @@
-#ifndef LCDF_VECTOR_CC
-#define LCDF_VECTOR_CC
-
-/*
- * vector.{cc,hh} -- simple array template class
- * Eddie Kohler
- *
- * Copyright (c) 1999-2000 Massachusetts Institute of Technology
- * Copyright (c) 2001-2003 International Computer Science Institute
- * Copyright (c) 1999-2019 Eddie Kohler
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, subject to the conditions
- * listed in the Click LICENSE file. These conditions include: you must
- * preserve this copyright notice, and you cannot mention the copyright
- * holders in advertising related to the Software without their permission.
- * The Software is provided WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED. This
- * notice is a summary of the Click LICENSE file; the license in that file is
- * legally binding.
- */
-
-/* #include <lcdf/vector.hh> */
-
-template <class T>
-Vector<T>::Vector(const Vector<T> &x)
- : _l(0), _n(0), _capacity(0)
-{
- *this = x;
-}
-
-template <class T>
-Vector<T>::~Vector()
-{
- for (size_type i = 0; i < _n; i++)
- _l[i].~T();
- delete[] (unsigned char *)_l;
-}
-
-template <class T> Vector<T> &
-Vector<T>::operator=(const Vector<T> &o)
-{
- if (&o != this) {
- for (size_type i = 0; i < _n; i++)
- _l[i].~T();
-#ifdef VALGRIND_MAKE_MEM_NOACCESS
- if (_l && _n)
- VALGRIND_MAKE_MEM_NOACCESS(_l, _n * sizeof(T));
-#endif
- _n = 0;
- if (reserve(o._n)) {
- _n = o._n;
-#ifdef VALGRIND_MAKE_MEM_UNDEFINED
- if (_l && _n)
- VALGRIND_MAKE_MEM_UNDEFINED(_l, _n * sizeof(T));
-#endif
- for (size_type i = 0; i < _n; i++)
- new(velt(i)) T(o._l[i]);
- }
- }
- return *this;
-}
-
-template <class T> Vector<T> &
-Vector<T>::assign(size_type n, const T &x)
-{
- if (&x >= begin() && &x < end()) {
- T x_copy(x);
- return assign(n, x_copy);
- } else {
- resize(0, x);
- resize(n, x);
- return *this;
- }
-}
-
-template <class T> typename Vector<T>::iterator
-Vector<T>::insert(iterator it, const T &x)
-{
- assert(it >= begin() && it <= end());
- if (&x >= begin() && &x < end()) {
- T x_copy(x);
- return insert(it, x_copy);
- }
- if (_n == _capacity) {
- size_type pos = it - begin();
- if (!reserve(RESERVE_GROW))
- return end();
- it = begin() + pos;
- }
-#ifdef VALGRIND_MAKE_MEM_UNDEFINED
- VALGRIND_MAKE_MEM_UNDEFINED(velt(_n), sizeof(T));
-#endif
- for (iterator j = end(); j > it; ) {
- --j;
- new((void*) (j + 1)) T(*j);
- j->~T();
-#ifdef VALGRIND_MAKE_MEM_UNDEFINED
- VALGRIND_MAKE_MEM_UNDEFINED(j, sizeof(T));
-#endif
- }
- new((void*) it) T(x);
- _n++;
- return it;
-}
-
-template <class T> typename Vector<T>::iterator
-Vector<T>::erase(iterator a, iterator b)
-{
- if (b > a) {
- assert(a >= begin() && b <= end());
- iterator i = a, j = b;
- for (; j < end(); i++, j++) {
- i->~T();
-#ifdef VALGRIND_MAKE_MEM_UNDEFINED
- VALGRIND_MAKE_MEM_UNDEFINED(i, sizeof(T));
-#endif
- new((void*) i) T(*j);
- }
- for (; i < end(); i++)
- i->~T();
- _n -= b - a;
-#ifdef VALGRIND_MAKE_MEM_NOACCESS
- VALGRIND_MAKE_MEM_NOACCESS(_l + _n, (b - a) * sizeof(T));
-#endif
- return a;
- } else
- return b;
-}
-
-template <class T> bool
-Vector<T>::reserve_and_push_back(size_type want, const T *push_x)
-{
- if (push_x && push_x >= begin() && push_x < end()) {
- T x_copy(*push_x);
- return reserve_and_push_back(want, &x_copy);
- }
-
- if (want < 0)
- want = (_capacity > 0 ? _capacity * 2 : 4);
-
- if (want > _capacity) {
- T *new_l = (T *)new unsigned char[sizeof(T) * want];
- if (!new_l)
- return false;
-#ifdef VALGRIND_MAKE_MEM_NOACCESS
- VALGRIND_MAKE_MEM_NOACCESS(new_l + _n, (want - _n) * sizeof(T));
-#endif
-
- for (size_type i = 0; i < _n; i++) {
- new(velt(new_l, i)) T(_l[i]);
- _l[i].~T();
- }
- delete[] (unsigned char *)_l;
-
- _l = new_l;
- _capacity = want;
- }
-
- if (push_x)
- push_back(*push_x);
- return true;
-}
-
-template <class T> void
-Vector<T>::resize(size_type n, const T &x)
-{
- if (&x >= begin() && &x < end()) {
- T x_copy(x);
- resize(n, x_copy);
- } else if (n <= _capacity || reserve(n)) {
- for (size_type i = n; i < _n; i++)
- _l[i].~T();
-#ifdef VALGRIND_MAKE_MEM_NOACCESS
- if (n < _n)
- VALGRIND_MAKE_MEM_NOACCESS(_l + n, (_n - n) * sizeof(T));
- if (_n < n)
- VALGRIND_MAKE_MEM_UNDEFINED(_l + _n, (n - _n) * sizeof(T));
-#endif
- for (size_type i = _n; i < n; i++)
- new(velt(i)) T(x);
- _n = n;
- }
-}
-
-template <class T> void
-Vector<T>::swap(Vector<T> &x)
-{
- T *l = _l;
- _l = x._l;
- x._l = l;
-
- size_type n = _n;
- _n = x._n;
- x._n = n;
-
- size_type cap = _capacity;
- _capacity = x._capacity;
- x._capacity = cap;
-}
-
-#endif