aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/ragel5
diff options
context:
space:
mode:
authormonster <monster@ydb.tech>2022-07-07 14:41:37 +0300
committermonster <monster@ydb.tech>2022-07-07 14:41:37 +0300
commit06e5c21a835c0e923506c4ff27929f34e00761c2 (patch)
tree75efcbc6854ef9bd476eb8bf00cc5c900da436a2 /contrib/tools/ragel5
parent03f024c4412e3aa613bb543cf1660176320ba8f4 (diff)
downloadydb-06e5c21a835c0e923506c4ff27929f34e00761c2.tar.gz
fix ya.make
Diffstat (limited to 'contrib/tools/ragel5')
-rw-r--r--contrib/tools/ragel5/aapl/avlibasic.h67
-rw-r--r--contrib/tools/ragel5/aapl/avlikeyless.h64
-rw-r--r--contrib/tools/ragel5/aapl/avlimap.h77
-rw-r--r--contrib/tools/ragel5/aapl/avlimel.h79
-rw-r--r--contrib/tools/ragel5/aapl/avlimelkey.h76
-rw-r--r--contrib/tools/ragel5/aapl/avliset.h75
-rw-r--r--contrib/tools/ragel5/aapl/avlitree.h78
-rw-r--r--contrib/tools/ragel5/aapl/avlkeyless.h58
-rw-r--r--contrib/tools/ragel5/aapl/avlmel.h74
-rw-r--r--contrib/tools/ragel5/aapl/avlmelkey.h71
-rw-r--r--contrib/tools/ragel5/aapl/bsttable.h84
-rw-r--r--contrib/tools/ragel5/aapl/dlistmel.h70
-rw-r--r--contrib/tools/ragel5/aapl/dlistval.h70
-rw-r--r--contrib/tools/ragel5/aapl/insertsort.h94
-rw-r--r--contrib/tools/ragel5/aapl/quicksort.h185
-rw-r--r--contrib/tools/ragel5/aapl/resize.h344
16 files changed, 0 insertions, 1566 deletions
diff --git a/contrib/tools/ragel5/aapl/avlibasic.h b/contrib/tools/ragel5/aapl/avlibasic.h
deleted file mode 100644
index a48faaa8fb..0000000000
--- a/contrib/tools/ragel5/aapl/avlibasic.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLIBASIC_H
-#define _AAPL_AVLIBASIC_H
-
-#include "compare.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliBasic
- * \brief Linked AVL Tree in which the entire element structure is the key.
- *
- * AvliBasic is a linked AVL tree that does not distinguish between the
- * element that it contains and the key. The entire element structure is the
- * key that is used to compare the relative ordering of elements. This is
- * similar to the BstSet structure.
- *
- * AvliBasic does not assume ownership of elements in the tree. Items must be
- * explicitly de-allocated.
- */
-
-/*@}*/
-
-#define BASE_EL(name) name
-#define BASEKEY(name) name
-#define AVLMEL_CLASSDEF class Element, class Compare
-#define AVLMEL_TEMPDEF class Element, class Compare
-#define AVLMEL_TEMPUSE Element, Compare
-#define AvlTree AvliBasic
-#define AVL_BASIC
-#define WALKABLE
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASEKEY
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef AVL_BASIC
-#undef WALKABLE
-
-#endif /* _AAPL_AVLIBASIC_H */
diff --git a/contrib/tools/ragel5/aapl/avlikeyless.h b/contrib/tools/ragel5/aapl/avlikeyless.h
deleted file mode 100644
index 559b75afda..0000000000
--- a/contrib/tools/ragel5/aapl/avlikeyless.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright 2002, 2003 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLIKEYLESS_H
-#define _AAPL_AVLIKEYLESS_H
-
-#include "compare.h"
-#include "dlistmel.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliKeyless
- * \brief Linked AVL tree that has no insert/find/remove functions that take a
- * key.
- *
- * AvliKeyless is an implementation of the AVL tree rebalancing functionality
- * only. It provides the common code for the tiny AVL tree implementations.
- */
-
-/*@}*/
-
-#define BASE_EL(name) name
-#define BASELIST DListMel< Element, AvliTreeEl<Element> >
-#define AVLMEL_CLASSDEF class Element
-#define AVLMEL_TEMPDEF class Element
-#define AVLMEL_TEMPUSE Element
-#define AvlTree AvliKeyless
-#define WALKABLE
-#define AVL_KEYLESS
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASELIST
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef WALKABLE
-#undef AVL_KEYLESS
-
-#endif /* _AAPL_AVLIKEYLESS_H */
diff --git a/contrib/tools/ragel5/aapl/avlimap.h b/contrib/tools/ragel5/aapl/avlimap.h
deleted file mode 100644
index 38bfff752a..0000000000
--- a/contrib/tools/ragel5/aapl/avlimap.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLIMAP_H
-#define _AAPL_AVLIMAP_H
-
-#include "compare.h"
-#include "dlist.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliMap
- * \brief Linked key and value oriented AVL tree.
- *
- * AvliMap stores key and value pairs in elements that managed by the tree. It
- * is intendend to be similar to map template found in the STL. AvliMap
- * requires that a Key type, a Value type, and a class containing a compare()
- * routine for Key be given. Items can be inserted with just a key or with a
- * key and value pair.
- *
- * AvliMap assumes all elements in the tree are allocated on the heap and are
- * to be managed by the tree. This means that the class destructor will delete
- * the contents of the tree. A deep copy will cause existing elements to be
- * deleted first.
- *
- * \include ex_avlimap.cpp
- */
-
-/*@}*/
-
-#define AVLTREE_MAP
-#define BASE_EL(name) name
-#define BASEKEY(name) name
-#define BASELIST DList< AvliMapEl<Key,Value> >
-#define AVLMEL_CLASSDEF class Key, class Value, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Key, class Value, class Compare
-#define AVLMEL_TEMPUSE Key, Value, Compare
-#define AvlTree AvliMap
-#define Element AvliMapEl<Key,Value>
-#define WALKABLE
-
-#include "avlcommon.h"
-
-#undef AVLTREE_MAP
-#undef BASE_EL
-#undef BASEKEY
-#undef BASELIST
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef Element
-#undef WALKABLE
-
-#endif /* _AAPL_AVLIMAP_H */
diff --git a/contrib/tools/ragel5/aapl/avlimel.h b/contrib/tools/ragel5/aapl/avlimel.h
deleted file mode 100644
index 9442a9972d..0000000000
--- a/contrib/tools/ragel5/aapl/avlimel.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLIMEL_H
-#define _AAPL_AVLIMEL_H
-
-#include "compare.h"
-#include "dlistmel.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliMel
- * \brief Linked AVL tree for element appearing in multiple trees.
- *
- * AvliMel allows for an element to simultaneously be in multiple trees without
- * the trees interferring with one another. For each tree that the element is
- * to appear in, there must be a distinct set of AVL Tree management data that
- * can be unambiguously referenced with some base class name. This name
- * is passed to the tree as a template parameter and is used in the tree
- * algorithms.
- *
- * The element must use the same key type and value in each tree that it
- * appears in. If distinct keys are required, the AvliMelKey structure is
- * available.
- *
- * AvliMel does not assume ownership of elements in the tree. The destructor
- * will not delete the elements. If the user wishes to explicitly deallocate
- * all the items in the tree the empty() routine is available.
- *
- * \include ex_avlimel.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) BaseEl::name
-#define BASEKEY(name) name
-#define BASELIST DListMel< Element, BaseEl >
-#define AVLMEL_CLASSDEF class Element, class Key, \
- class BaseEl, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Element, class Key, \
- class BaseEl, class Compare
-#define AVLMEL_TEMPUSE Element, Key, BaseEl, Compare
-#define AvlTree AvliMel
-#define WALKABLE
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASEKEY
-#undef BASELIST
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef WALKABLE
-
-#endif /* _AAPL_AVLIMEL_H */
diff --git a/contrib/tools/ragel5/aapl/avlimelkey.h b/contrib/tools/ragel5/aapl/avlimelkey.h
deleted file mode 100644
index faa56e8354..0000000000
--- a/contrib/tools/ragel5/aapl/avlimelkey.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLIMELKEY_H
-#define _AAPL_AVLIMELKEY_H
-
-#include "compare.h"
-#include "dlistmel.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliMelKey
- * \brief Linked AVL tree for element appearing in multiple trees with different keys.
- *
- * AvliMelKey is similar to AvliMel, except that an additional template
- * parameter, BaseKey, is provided for resolving ambiguous references to
- * getKey(). This means that if an element is stored in multiple trees, each
- * tree can use a different key for ordering the elements in it. Using
- * AvliMelKey an array of data structures can be indexed with an O(log(n))
- * search on two or more of the values contained within it and without
- * allocating any additional data.
- *
- * AvliMelKey does not assume ownership of elements in the tree. The destructor
- * will not delete the elements. If the user wishes to explicitly deallocate
- * all the items in the tree the empty() routine is available.
- *
- * \include ex_avlimelkey.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) BaseEl::name
-#define BASEKEY(name) BaseKey::name
-#define BASELIST DListMel< Element, BaseEl >
-#define AVLMEL_CLASSDEF class Element, class Key, class BaseEl, \
- class BaseKey, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Element, class Key, class BaseEl, \
- class BaseKey, class Compare
-#define AVLMEL_TEMPUSE Element, Key, BaseEl, BaseKey, Compare
-#define AvlTree AvliMelKey
-#define WALKABLE
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASEKEY
-#undef BASELIST
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef WALKABLE
-
-#endif /* _AAPL_AVLIMELKEY_H */
diff --git a/contrib/tools/ragel5/aapl/avliset.h b/contrib/tools/ragel5/aapl/avliset.h
deleted file mode 100644
index cf5be365ee..0000000000
--- a/contrib/tools/ragel5/aapl/avliset.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLISET_H
-#define _AAPL_AVLISET_H
-
-#include "compare.h"
-#include "dlist.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliSet
- * \brief Linked Key-only oriented tree.
- *
- * AvliSet stores only keys in elements that are managed by the tree. AvliSet
- * requires that a Key type and a class containing a compare() routine
- * for Key be given. Items are inserted with just a key value.
- *
- * AvliSet assumes all elements in the tree are allocated on the heap and are
- * to be managed by the tree. This means that the class destructor will delete
- * the contents of the tree. A deep copy will cause existing elements to be
- * deleted first.
- *
- * \include ex_avliset.cpp
- */
-
-/*@}*/
-
-#define AVLTREE_SET
-#define BASE_EL(name) name
-#define BASEKEY(name) name
-#define BASELIST DList< AvliSetEl<Key> >
-#define AVLMEL_CLASSDEF class Key, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Key, class Compare
-#define AVLMEL_TEMPUSE Key, Compare
-#define AvlTree AvliSet
-#define Element AvliSetEl<Key>
-#define WALKABLE
-
-#include "avlcommon.h"
-
-#undef AVLTREE_SET
-#undef BASE_EL
-#undef BASEKEY
-#undef BASELIST
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef Element
-#undef WALKABLE
-
-#endif /* _AAPL_AVLISET_H */
diff --git a/contrib/tools/ragel5/aapl/avlitree.h b/contrib/tools/ragel5/aapl/avlitree.h
deleted file mode 100644
index b053c96fb1..0000000000
--- a/contrib/tools/ragel5/aapl/avlitree.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLITREE_H
-#define _AAPL_AVLITREE_H
-
-#include "compare.h"
-#include "dlistmel.h"
-
-/**
- * \addtogroup avlitree
- * @{
- */
-
-/**
- * \class AvliTree
- * \brief Linked AVL tree.
- *
- * AvliTree is the standard linked by-structure AVL tree. To use this
- * structure the user must define an element type and give it the necessary
- * properties. At the very least it must have a getKey() function that will be
- * used to compare the relative ordering of elements and tree management data
- * necessary for the AVL algorithm. An element type can acquire the management
- * data by inheriting the AvliTreeEl class.
- *
- * AvliTree does not presume to manage the allocation of elements in the tree.
- * The destructor will not delete the items in the tree, instead the elements
- * must be explicitly de-allocated by the user if necessary and when it is
- * safe to do so. The empty() routine will traverse the tree and delete all
- * items.
- *
- * Since the tree does not manage the elements, it can contain elements that
- * are allocated statically or that are part of another data structure.
- *
- * \include ex_avlitree.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) name
-#define BASEKEY(name) name
-#define BASELIST DListMel< Element, AvliTreeEl<Element> >
-#define AVLMEL_CLASSDEF class Element, class Key, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Element, class Key, class Compare
-#define AVLMEL_TEMPUSE Element, Key, Compare
-#define AvlTree AvliTree
-#define WALKABLE
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASEKEY
-#undef BASELIST
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef WALKABLE
-
-#endif /* _AAPL_AVLITREE_H */
diff --git a/contrib/tools/ragel5/aapl/avlkeyless.h b/contrib/tools/ragel5/aapl/avlkeyless.h
deleted file mode 100644
index 3080513655..0000000000
--- a/contrib/tools/ragel5/aapl/avlkeyless.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright 2002, 2003 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLKEYLESS_H
-#define _AAPL_AVLKEYLESS_H
-
-#include "compare.h"
-
-/**
- * \addtogroup avltree
- * @{
- */
-
-/**
- * \class AvlKeyless
- * \brief AVL tree that has no insert/find/remove functions that take a key.
- *
- * AvlKeyless is an implementation of the AVL tree rebalancing functionality
- * only. It provides the common code for the tiny AVL tree implementations.
- */
-
-/*@}*/
-
-#define BASE_EL(name) name
-#define AVLMEL_CLASSDEF class Element
-#define AVLMEL_TEMPDEF class Element
-#define AVLMEL_TEMPUSE Element
-#define AvlTree AvlKeyless
-#define AVL_KEYLESS
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-#undef AVL_KEYLESS
-
-#endif /* _AAPL_AVLKEYLESS_H */
diff --git a/contrib/tools/ragel5/aapl/avlmel.h b/contrib/tools/ragel5/aapl/avlmel.h
deleted file mode 100644
index 7bfad3b7d0..0000000000
--- a/contrib/tools/ragel5/aapl/avlmel.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLMEL_H
-#define _AAPL_AVLMEL_H
-
-#include "compare.h"
-
-/**
- * \addtogroup avltree
- * @{
- */
-
-/**
- * \class AvlMel
- * \brief AVL tree for elements appearing in multiple trees.
- *
- * AvlMel allows for an element to simultaneously be in multiple trees without
- * the trees interferring with one another. For each tree that the element is
- * to appear in, there must be a distinct set of AVL Tree management data that
- * can be unambiguously referenced with some base class name. This name
- * is passed to the tree as a template parameter and is used in the tree
- * algorithms.
- *
- * The element must use the same key type and value in each tree that it
- * appears in. If distinct keys are required, the AvlMelKey structure is
- * available.
- *
- * AvlMel does not assume ownership of elements in the tree. The destructor
- * will not delete the elements. If the user wishes to explicitly deallocate
- * all the items in the tree the empty() routine is available.
- *
- * \include ex_avlmel.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) BaseEl::name
-#define BASEKEY(name) name
-#define AVLMEL_CLASSDEF class Element, class Key, \
- class BaseEl, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Element, class Key, \
- class BaseEl, class Compare
-#define AVLMEL_TEMPUSE Element, Key, BaseEl, Compare
-#define AvlTree AvlMel
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASEKEY
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-
-#endif /* _AAPL_AVLMEL_H */
diff --git a/contrib/tools/ragel5/aapl/avlmelkey.h b/contrib/tools/ragel5/aapl/avlmelkey.h
deleted file mode 100644
index 9261cc8304..0000000000
--- a/contrib/tools/ragel5/aapl/avlmelkey.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_AVLMELKEY_H
-#define _AAPL_AVLMELKEY_H
-
-#include "compare.h"
-
-/**
- * \addtogroup avltree
- * @{
- */
-
-/**
- * \class AvlMelKey
- * \brief AVL tree for elements appearing in multiple trees with different keys.
- *
- * AvlMelKey is similar to AvlMel, except that an additional template
- * parameter, BaseKey, is provided for resolving ambiguous references to
- * getKey(). This means that if an element is stored in multiple trees, each
- * tree can use a different key for ordering the elements in it. Using
- * AvlMelKey an array of data structures can be indexed with an O(log(n))
- * search on two or more of the values contained within it and without
- * allocating any additional data.
- *
- * AvlMelKey does not assume ownership of elements in the tree. The destructor
- * will not delete the elements. If the user wishes to explicitly deallocate
- * all the items in the tree the empty() routine is available.
- *
- * \include ex_avlmelkey.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) BaseEl::name
-#define BASEKEY(name) BaseKey::name
-#define AVLMEL_CLASSDEF class Element, class Key, class BaseEl, \
- class BaseKey, class Compare = CmpOrd<Key>
-#define AVLMEL_TEMPDEF class Element, class Key, class BaseEl, \
- class BaseKey, class Compare
-#define AVLMEL_TEMPUSE Element, Key, BaseEl, BaseKey, Compare
-#define AvlTree AvlMelKey
-
-#include "avlcommon.h"
-
-#undef BASE_EL
-#undef BASEKEY
-#undef AVLMEL_CLASSDEF
-#undef AVLMEL_TEMPDEF
-#undef AVLMEL_TEMPUSE
-#undef AvlTree
-
-#endif /* _AAPL_AVLMELKEY_H */
diff --git a/contrib/tools/ragel5/aapl/bsttable.h b/contrib/tools/ragel5/aapl/bsttable.h
deleted file mode 100644
index 9898ebff16..0000000000
--- a/contrib/tools/ragel5/aapl/bsttable.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_BSTTABLE_H
-#define _AAPL_BSTTABLE_H
-
-#include "compare.h"
-#include "vector.h"
-
-/**
- * \addtogroup bst
- * @{
- */
-
-/**
- * \class BstTable
- * \brief Binary search table for structures that contain a key.
- *
- * This is the basic binary search table. It can be used to contain a
- * structure that has a key and possibly some data. The key should be a member
- * of the element class and accessible with getKey(). A class containing the
- * compare routine must be supplied.
- */
-
-/*@}*/
-
-#define BST_TEMPL_DECLARE class Element, class Key, \
- class Compare = CmpOrd<Key>, class Resize = ResizeExpn
-#define BST_TEMPL_DEF class Element, class Key, class Compare, class Resize
-#define BST_TEMPL_USE Element, Key, Compare, Resize
-#define GET_KEY(el) ((el).getKey())
-#define BSTTABLE
-
-#include "bstcommon.h"
-
-#undef BST_TEMPL_DECLARE
-#undef BST_TEMPL_DEF
-#undef BST_TEMPL_USE
-#undef GET_KEY
-#undef BSTTABLE
-
-/**
- * \fn BstTable::insert(const Key &key, Element **lastFound)
- * \brief Insert a new element with the given key.
- *
- * If the given key does not already exist in the table a new element is
- * inserted with the given key. A constructor taking only const Key& is used
- * to initialize the new element. If lastFound is given, it is set to the new
- * element created. If the insert fails then lastFound is set to the existing
- * element with the same key.
- *
- * \returns The new element created upon success, null upon failure.
- */
-
-/**
- * \fn BstTable::insertMulti(const Key &key)
- * \brief Insert a new element even if the key exists already.
- *
- * If the key exists already then the new element is placed next to some
- * element with the same key. InsertMulti cannot fail. A constructor taking
- * only const Key& is used to initialize the new element.
- *
- * \returns The new element created.
- */
-
-#endif /* _AAPL_BSTTABLE_H */
diff --git a/contrib/tools/ragel5/aapl/dlistmel.h b/contrib/tools/ragel5/aapl/dlistmel.h
deleted file mode 100644
index c6274acfbb..0000000000
--- a/contrib/tools/ragel5/aapl/dlistmel.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2001 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_DLISTMEL_H
-#define _AAPL_DLISTMEL_H
-
-/**
- * \addtogroup dlist
- * @{
- */
-
-/**
- * \class DListMel
- * \brief Doubly linked list for elements that may appear in multiple lists.
- *
- * This class is similar to DList, except that the user defined list element
- * can inherit from multple DListEl classes and consequently be an element in
- * multiple lists. In other words, DListMel allows a single instance of a data
- * structure to be an element in multiple lists without the lists interfereing
- * with one another.
- *
- * For each list that an element class is to appear in, the element must have
- * unique next and previous pointers that can be unambiguously refered to with
- * some base class name. This name is given to DListMel as a template argument
- * so it can use the correct next and previous pointers in its list
- * operations.
- *
- * DListMel does not assume ownership of elements in the list. If the elements
- * are known to reside on the heap and are not contained in any other list or
- * data structure, the provided empty() routine can be used to delete all
- * elements, however the destructor will not call this routine, it will simply
- * abandon all the elements. It is up to the programmer to explicitly
- * de-allocate items when it is safe to do so.
- *
- * \include ex_dlistmel.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) BaseEl::name
-#define DLMEL_TEMPDEF class Element, class BaseEl
-#define DLMEL_TEMPUSE Element, BaseEl
-#define DList DListMel
-
-#include "dlcommon.h"
-
-#undef BASE_EL
-#undef DLMEL_TEMPDEF
-#undef DLMEL_TEMPUSE
-#undef DList
-
-#endif /* _AAPL_DLISTMEL_H */
diff --git a/contrib/tools/ragel5/aapl/dlistval.h b/contrib/tools/ragel5/aapl/dlistval.h
deleted file mode 100644
index 21aaf1d456..0000000000
--- a/contrib/tools/ragel5/aapl/dlistval.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_DLISTVAL_H
-#define _AAPL_DLISTVAL_H
-
-/**
- * \addtogroup dlist
- * @{
- */
-
-/**
- * \class DListVal
- * \brief By-value doubly linked list.
- *
- * This class is a doubly linked list that does not require a list element
- * type to be declared. The user instead gives a type that is to be stored in
- * the list element. When inserting a new data item, the value is copied into
- * a newly allocated element. This list is inteded to behave and be utilized
- * like the list template found in the STL.
- *
- * DListVal is different from the other lists in that it allocates elements
- * itself. The raw element insert interface is still exposed for convenience,
- * however, the list assumes all elements in the list are allocated on the
- * heap and are to be managed by the list. The destructor WILL delete the
- * contents of the list. If the list is ever copied in from another list, the
- * existing contents are deleted first. This is in contrast to DList and
- * DListMel, which will never delete their contents to allow for statically
- * allocated elements.
- *
- * \include ex_dlistval.cpp
- */
-
-/*@}*/
-
-#define BASE_EL(name) name
-#define DLMEL_TEMPDEF class T
-#define DLMEL_TEMPUSE T
-#define DList DListVal
-#define Element DListValEl<T>
-#define DOUBLELIST_VALUE
-
-#include "dlcommon.h"
-
-#undef BASE_EL
-#undef DLMEL_TEMPDEF
-#undef DLMEL_TEMPUSE
-#undef DList
-#undef Element
-#undef DOUBLELIST_VALUE
-
-#endif /* _AAPL_DLISTVAL_H */
diff --git a/contrib/tools/ragel5/aapl/insertsort.h b/contrib/tools/ragel5/aapl/insertsort.h
deleted file mode 100644
index eb3e264954..0000000000
--- a/contrib/tools/ragel5/aapl/insertsort.h
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_INSERTSORT_H
-#define _AAPL_INSERTSORT_H
-
-#ifdef AAPL_NAMESPACE
-namespace Aapl {
-#endif
-
-/**
- * \addtogroup sort
- * @{
- */
-
-/**
- * \class InsertSort
- * \brief Insertion sort an array of data.
- *
- * InsertSort can be used to sort any array of objects of type T provided a
- * compare class is given. InsertSort is in-place. It does not require any
- * temporary storage.
- *
- * Objects are not made aware that they are being moved around in memory.
- * Assignment operators, constructors and destructors are never invoked by the
- * sort.
- *
- * InsertSort runs in O(n^2) time. It is most useful when sorting small arrays.
- * where it can outperform the O(n*log(n)) sorters due to its simplicity.
- * InsertSort is a not a stable sort. Elements with the same key will not have
- * their relative ordering preserved.
- */
-
-/*@}*/
-
-/* InsertSort. */
-template <class T, class Compare> class InsertSort
- : public Compare
-{
-public:
- /* Sorting interface routine. */
- void sort(T *data, long len);
-};
-
-
-/**
- * \brief Insertion sort an array of data.
- */
-template <class T, class Compare>
- void InsertSort<T,Compare>::sort(T *data, long len)
-{
- /* For each next largest spot in the sorted array... */
- for ( T *dest = data; dest < data+len-1; dest++ ) {
- /* Find the next smallest element in the unsorted array. */
- T *smallest = dest;
- for ( T *src = dest+1; src < data+len; src++ ) {
- /* If src is smaller than the current src, then use it. */
- if ( compare( *src, *smallest ) < 0 )
- smallest = src;
- }
-
- if ( smallest != dest ) {
- /* Swap dest, smallest. */
- char tmp[sizeof(T)];
- memcpy( tmp, dest, sizeof(T) );
- memcpy( dest, smallest, sizeof(T) );
- memcpy( smallest, tmp, sizeof(T) );
- }
- }
-}
-
-#ifdef AAPL_NAMESPACE
-}
-#endif
-
-#endif /* _AAPL_INSERTSORT_H */
diff --git a/contrib/tools/ragel5/aapl/quicksort.h b/contrib/tools/ragel5/aapl/quicksort.h
deleted file mode 100644
index 9bb96efd18..0000000000
--- a/contrib/tools/ragel5/aapl/quicksort.h
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_QUICKSORT_H
-#define _AAPL_QUICKSORT_H
-
-#include "insertsort.h"
-
-#ifdef AAPL_NAMESPACE
-namespace Aapl {
-#endif
-
-/**
- * \addtogroup sort
- * @{
- */
-
-/**
- * \class QuickSort
- * \brief Quick sort an array of data.
- *
- * QuickSort can be used to sort any array of objects of type T provided a
- * compare class is given. QuickSort is in-place. It does not require any
- * temporary storage.
- *
- * Objects are not made aware that they are being moved around in memory.
- * Assignment operators, constructors and destructors are never invoked by the
- * sort.
- *
- * QuickSort runs in O(n*log(n)) time in the average case. It is faster than
- * mergsort in the average case because it does less moving of data. The
- * performance of quicksort depends mostly on the choice of pivot. This
- * implementation picks the pivot as the median of first, middle, last. This
- * choice of pivot avoids the O(n^2) worst case for input already sorted, but
- * it is still possible to encounter the O(n^2) worst case. For example an
- * array of identical elements will run in O(n^2)
- *
- * QuickSort is not a stable sort. Elements with the same key will not have
- * their relative ordering preserved. QuickSort switches to an InsertSort
- * when the size of the array being sorted is small. This happens when
- * directly sorting a small array or when QuickSort calls iteself recursively
- * on a small portion of a larger array.
- */
-
-/*@}*/
-
-/* QuickSort. */
-template <class T, class Compare> class QuickSort :
- public InsertSort<T, Compare>
-{
-public:
- /* Sorting interface routine. */
- void sort(T *data, long len);
-
-private:
- /* Recursive worker. */
- void doSort(T *start, T *end);
- T *partition(T *start, T *end);
- inline T *median(T *start, T *end);
-};
-
-#define _QS_INSERTION_THRESH 16
-
-/* Finds the median of start, middle, end. */
-template <class T, class Compare> T *QuickSort<T,Compare>::
- median(T *start, T *end)
-{
- T *pivot, *mid = start + (end-start)/2;
-
- /* CChoose the pivot. */
- if ( compare(*start, *mid) < 0 ) {
- if ( compare(*mid, *end) < 0 )
- pivot = mid;
- else if ( compare(*start, *end) < 0 )
- pivot = end;
- else
- pivot = start;
- }
- else if ( compare(*start, *end) < 0 )
- pivot = start;
- else if ( compare(*mid, *end) < 0 )
- pivot = end;
- else
- pivot = mid;
-
- return pivot;
-}
-
-template <class T, class Compare> T *QuickSort<T,Compare>::
- partition(T *start, T *end)
-{
- /* Use the median of start, middle, end as the pivot. First save
- * it off then move the last element to the free spot. */
- char pcPivot[sizeof(T)];
- T *pivot = median(start, end);
-
- memcpy( pcPivot, pivot, sizeof(T) );
- if ( pivot != end )
- memcpy( pivot, end, sizeof(T) );
-
- T *first = start-1;
- T *last = end;
- pivot = (T*) pcPivot;
-
- /* Shuffle element to the correct side of the pivot, ending
- * up with the free spot where the pivot will go. */
- while ( true ) {
- /* Throw one element ahead to the free spot at last. */
- while ( true ) {
- first += 1;
- if ( first == last )
- goto done;
- if ( compare( *first, *pivot ) > 0 ) {
- memcpy(last, first, sizeof(T));
- break;
- }
- }
-
- /* Throw one element back to the free spot at first. */
- while ( true ) {
- last -= 1;
- if ( last == first )
- goto done;
- if ( compare( *last, *pivot ) < 0 ) {
- memcpy(first, last, sizeof(T));
- break;
- }
- }
- }
-done:
- /* Put the pivot into the middle spot for it. */
- memcpy( first, pivot, sizeof(T) );
- return first;
-}
-
-
-template< class T, class Compare> void QuickSort<T,Compare>::
- doSort(T *start, T *end)
-{
- long len = end - start + 1;
- if ( len > _QS_INSERTION_THRESH ) {
- /* Use quicksort. */
- T *pivot = partition( start, end );
- doSort(start, pivot-1);
- doSort(pivot+1, end);
- }
- else if ( len > 1 ) {
- /* Array is small, use insertion sort. */
- InsertSort<T, Compare>::sort( start, len );
- }
-}
-
-/**
- * \brief Quick sort an array of data.
- */
-template< class T, class Compare>
- void QuickSort<T,Compare>::sort(T *data, long len)
-{
- /* Call recursive worker. */
- doSort(data, data+len-1);
-}
-
-#ifdef AAPL_NAMESPACE
-}
-#endif
-
-#endif /* _AAPL_QUICKSORT_H */
diff --git a/contrib/tools/ragel5/aapl/resize.h b/contrib/tools/ragel5/aapl/resize.h
deleted file mode 100644
index 24edc16ed8..0000000000
--- a/contrib/tools/ragel5/aapl/resize.h
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright 2002 Adrian Thurston <thurston@cs.queensu.ca>
- */
-
-/* This file is part of Aapl.
- *
- * Aapl is free software; you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * Aapl 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 Lesser General Public License for
- * more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with Aapl; if not, write to the Free Software Foundation, Inc., 59
- * Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
-
-#ifndef _AAPL_RESIZE_H
-#define _AAPL_RESIZE_H
-
-#include <assert.h>
-
-#ifdef AAPL_NAMESPACE
-namespace Aapl {
-#endif
-
-/* This step is expressed in units of T. Changing this requires changes to
- * docs in ResizeLin constructor. */
-#define LIN_DEFAULT_STEP 256
-
-/*
- * Resizing macros giving different resize methods.
- */
-
-/* If needed is greater than existing, give twice needed. */
-#define EXPN_UP( existing, needed ) \
- needed > existing ? (needed<<1) : existing
-
-/* If needed is less than 1 quarter existing, give twice needed. */
-#define EXPN_DOWN( existing, needed ) \
- needed < (existing>>2) ? (needed<<1) : existing
-
-/* If needed is greater than existing, give needed plus step. */
-#define LIN_UP( existing, needed ) \
- needed > existing ? (needed+step) : existing
-
-/* If needed is less than existing - 2 * step then give needed plus step. */
-#define LIN_DOWN( existing, needed ) \
- needed < (existing-(step<<1)) ? (needed+step) : existing
-
-/* Return existing. */
-#define CONST_UP( existing, needed ) existing
-
-/* Return existing. */
-#define CONST_DOWN( existing, needed ) existing
-
-/**
- * \addtogroup vector
- * @{
- */
-
-/** \class ResizeLin
- * \brief Linear table resizer.
- *
- * When an up resize or a down resize is needed, ResizeLin allocates the space
- * needed plus some user defined step. The result is that when growing the
- * vector in a linear fashion, the number of resizes is also linear.
- *
- * If only up resizing is done, then there will never be more than step unused
- * spaces in the vector. If down resizing is done as well, there will never be
- * more than 2*step unused spaces in the vector. The up resizing and down
- * resizing policies are offset to improve performance when repeatedly
- * inserting and removing a small number of elements relative to the step.
- * This scheme guarantees that repetitive inserting and removing of a small
- * number of elements will never result in repetative reallocation.
- *
- * The vectors pass sizes to the resizer in units of T, so the step gets
- * interpreted as units of T.
- */
-
-/*@}*/
-
-/* Linear resizing. */
-class ResizeLin
-{
-protected:
- /**
- * \brief Default constructor.
- *
- * Intializes resize step to 256 units of the table type T.
- */
- ResizeLin() : step(LIN_DEFAULT_STEP) { }
-
- /**
- * \brief Determine the new table size when up resizing.
- *
- * If the existing size is insufficient for the space needed, then allocate
- * the space needed plus the step. The step is in units of T.
- */
- inline long upResize( long existing, long needed )
- { return LIN_UP(existing, needed); }
-
- /**
- * \brief Determine the new table size when down resizing.
- *
- * If space needed is less than the existing - 2*step, then allocate the
- * space needed space plus the step. The step is in units of T.
- */
- inline long downResize( long existing, long needed )
- { return LIN_DOWN(existing, needed); }
-
-public:
- /**
- * \brief Step for linear resize.
- *
- * Amount of extra space in units of T added each time a resize must take
- * place. This may be changed at any time. The step should be >= 0.
- */
- long step;
-};
-
-/**
- * \addtogroup vector
- * @{
- */
-
-/** \class ResizeCtLin
- * \brief Linear table resizer with compile time step.
- *
- * When an up resize or a down resize is needed, ResizeCtLin allocates the
- * space needed plus some compile time defined step. The result is that when
- * growing the vector in a linear fashion, the number of resizes is also
- * linear.
- *
- * If only up resizing is done, then there will never be more than step unused
- * spaces in the vector. If down resizing is done as well, there will never be
- * more than 2*step unused spaces in the vector. The up resizing and down
- * resizing policies are offset to improve performance when repeatedly
- * inserting and removing a small number of elements relative to the step.
- * This scheme guarantees that repetitive inserting and removing of a small
- * number of elements will never result in repetative reallocation.
- *
- * The vectors pass sizes to the resizer in units of T, so the step gets
- * interpreted as units of T.
- */
-
-/*@}*/
-
-/* Linear resizing. */
-template <long step> class ResizeCtLin
-{
-protected:
- /**
- * \brief Determine the new table size when up resizing.
- *
- * If the existing size is insufficient for the space needed, then allocate
- * the space needed plus the step. The step is in units of T.
- */
- inline long upResize( long existing, long needed )
- { return LIN_UP(existing, needed); }
-
- /**
- * \brief Determine the new table size when down resizing.
- *
- * If space needed is less than the existing - 2*step, then allocate the
- * space needed space plus the step. The step is in units of T.
- */
- inline long downResize( long existing, long needed )
- { return LIN_DOWN(existing, needed); }
-};
-
-/**
- * \addtogroup vector
- * @{
- */
-
-/** \class ResizeConst
- * \brief Constant table resizer.
- *
- * When an up resize is needed the existing size is always used. ResizeConst
- * does not allow dynamic resizing. To use ResizeConst, the vector needs to be
- * constructed with and initial allocation amount otherwise it will be
- * unusable.
- */
-
-/*@}*/
-
-/* Constant table resizing. */
-class ResizeConst
-{
-protected:
- /* Assert don't need more than exists. Return existing. */
- static inline long upResize( long existing, long needed );
-
- /**
- * \brief Determine the new table size when down resizing.
- *
- * Always returns the existing table size.
- */
- static inline long downResize( long existing, long needed )
- { return CONST_DOWN(existing, needed); }
-};
-
-/**
- * \brief Determine the new table size when up resizing.
- *
- * If the existing size is insufficient for the space needed, then an assertion
- * will fail. Otherwise returns the existing size.
- */
-inline long ResizeConst::upResize( long existing, long needed )
-{
- assert( needed <= existing );
- return CONST_UP(existing, needed);
-}
-
-/**
- * \addtogroup vector
- * @{
- */
-
-/** \class ResizeRunTime
- * \brief Run time settable table resizer.
- *
- * ResizeRunTime can have it's up and down resizing policies set at run time.
- * Both up and down policies can be set independently to one of Exponential,
- * Linear, or Constant. See the documentation for ResizeExpn, ResizeLin, and
- * ResizeConst for the details of the resizing policies.
- *
- * The policies may be changed at any time. The default policies are
- * both Exponential.
- */
-
-/*@}*/
-
-/* Run time resizing. */
-class ResizeRunTime
-{
-protected:
- /**
- * \brief Default constuctor.
- *
- * The up and down resizing it initialized to Exponetial. The step
- * defaults to 256 units of T.
- */
- inline ResizeRunTime();
-
- /**
- * \brief Resizing policies.
- */
- enum ResizeType {
- Exponential, /*!< Exponential resizing. */
- Linear, /*!< Linear resizing. */
- Constant /*!< Constant table size. */
- };
-
- inline long upResize( long existing, long needed );
- inline long downResize( long existing, long needed );
-
-public:
- /**
- * \brief Step for linear resize.
- *
- * Amount of extra space in units of T added each time a resize must take
- * place. This may be changed at any time. The step should be >= 0.
- */
- long step;
-
- /**
- * \brief Up resizing policy.
- */
- ResizeType upResizeType;
-
- /**
- * \brief Down resizing policy.
- */
- ResizeType downResizeType;
-};
-
-inline ResizeRunTime::ResizeRunTime()
-:
- step( LIN_DEFAULT_STEP ),
- upResizeType( Exponential ),
- downResizeType( Exponential )
-{
-}
-
-/**
- * \brief Determine the new table size when up resizing.
- *
- * Type of up resizing is determined by upResizeType. Exponential, Linear and
- * Constant resizing is the same as that of ResizeExpn, ResizeLin and
- * ResizeConst.
- */
-inline long ResizeRunTime::upResize( long existing, long needed )
-{
- switch ( upResizeType ) {
- case Exponential:
- return EXPN_UP(existing, needed);
- case Linear:
- return LIN_UP(existing, needed);
- case Constant:
- assert( needed <= existing );
- return CONST_UP(existing, needed);
- }
- return 0;
-};
-
-/**
- * \brief Determine the new table size when down resizing.
- *
- * Type of down resizing is determined by downResiizeType. Exponential, Linear
- * and Constant resizing is the same as that of ResizeExpn, ResizeLin and
- * ResizeConst.
- */
-inline long ResizeRunTime::downResize( long existing, long needed )
-{
- switch ( downResizeType ) {
- case Exponential:
- return EXPN_DOWN(existing, needed);
- case Linear:
- return LIN_DOWN(existing, needed);
- case Constant:
- return CONST_DOWN(existing, needed);
- }
- return 0;
-}
-
-/* Don't need these anymore. */
-#undef EXPN_UP
-#undef EXPN_DOWN
-#undef LIN_UP
-#undef LIN_DOWN
-#undef CONST_UP
-#undef CONST_DOWN
-
-#ifdef AAPL_NAMESPACE
-}
-#endif
-
-#endif /* _AAPL_RESIZE_H */