summaryrefslogtreecommitdiff
path: root/soltools/inc/st_list.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'soltools/inc/st_list.hxx')
-rw-r--r--soltools/inc/st_list.hxx332
1 files changed, 0 insertions, 332 deletions
diff --git a/soltools/inc/st_list.hxx b/soltools/inc/st_list.hxx
deleted file mode 100644
index 51f0a32fd..000000000
--- a/soltools/inc/st_list.hxx
+++ /dev/null
@@ -1,332 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-#ifndef SOLTOOLS_ST_LIST_HXX
-#define SOLTOOLS_ST_LIST_HXX
-
-#include <string.h>
-#include <iostream>
-#include <stdlib.h>
-
-template <class XX>
-class ST_List /// Soltools-List.
-{
- public :
- typedef XX * iterator;
- typedef const XX * const_iterator;
-
- // LIFECYCLE
- ST_List();
- ST_List(
- const ST_List<XX> & i_rList );
- virtual ~ST_List() { delete[] inhalt; }
-
- // OPERATORS
- ST_List<XX> & operator=(
- const ST_List<XX> & i_rList );
-
- const XX & operator[](
- unsigned n) const
- { return elem(n); }
- XX & operator[](
- unsigned n)
- { return elem(n); }
- // OPERATIONS
- void reserve(
- unsigned i_nSize )
- { alloc(i_nSize,true); }
- void insert(
- iterator i_aPos,
- const XX & elem_ )
- { Insert((unsigned)(i_aPos-begin()), elem_); }
- virtual void Insert(
- unsigned pos,
- const XX & elem );
- void push_back(
- const XX & elem_)
- { Insert(size(),elem_); }
- void remove(
- iterator i_aPos )
- { Remove((int)(i_aPos-begin())); }
- virtual void Remove(
- unsigned pos );
- void pop_back() { Remove(size()-1); }
- void erase_all() { while (size()) Remove(size()-1); }
-
- // INQUIRY
- const_iterator begin() const { return &inhalt[0]; }
- const_iterator end() const { return &inhalt[len]; }
-
- const XX & front() const { return elem(0); }
- const XX & back() const { return elem(len-1); }
-
- unsigned size() const { return len; }
- unsigned space() const { return allocated; }
- bool is_valid_index(
- unsigned n) const
- { return n < len; }
- // ACCESS
- iterator begin() { return &inhalt[0]; }
- iterator end() { return &inhalt[len]; }
-
- XX & front() { return elem(0); }
- XX & back() { return elem(len-1); }
-
- protected:
- void checkSize(
- unsigned newLength);
- void alloc(
- unsigned newSpace,
- bool re = false );
-
- const XX & elem(
- unsigned n ) const
- { return inhalt[n]; }
- XX & elem(
- unsigned n )
- { return inhalt[n]; }
- // DATA
- XX * inhalt;
- unsigned len;
- unsigned allocated;
-};
-
-
-
-template <class XY>
-class DynamicList : public ST_List< XY* >
-{
- public:
- DynamicList();
- DynamicList(
- const DynamicList<XY> &
- i_rList );
- virtual ~DynamicList(); /// Deletes all member pointers
-
- DynamicList<XY> & operator=(
- const DynamicList<XY> &
- i_rList );
-
- virtual void Insert(
- unsigned pos,
- XY * const & elem );
- virtual void Remove(
- unsigned pos );
-};
-
-
-
-template <class XX>
-ST_List<XX>::ST_List()
- : inhalt(0),
- len(0),
- allocated(0)
-{
- alloc(1);
-}
-
-template <class XX>
-ST_List<XX>::ST_List( const ST_List<XX> & i_rList )
- : inhalt(0),
- len(0),
- allocated(0)
-{
- alloc(i_rList.size());
-
- for ( const_iterator it = i_rList.begin();
- it != i_rList.end();
- ++it )
- {
- push_back(*it);
- }
-}
-
-template <class XX>
-ST_List<XX> &
-ST_List<XX>::operator=( const ST_List<XX> & i_rList )
-{
- for ( const_iterator it = i_rList.begin();
- it != i_rList.end();
- ++it )
- {
- push_back(*it);
- }
- return *this;
-}
-
-template <class XX>
-void
-ST_List<XX>::Insert(unsigned pos, const XX & elem_)
-{
- if ( pos > len )
- return;
-
- checkSize(len+2);
- for ( unsigned p = len; p > pos; --p)
- {
- inhalt[p] = inhalt[p-1];
- }
- inhalt[pos] = elem_;
- len++;
-}
-
-
-template <class XX>
-void
-ST_List<XX>::Remove(unsigned pos)
-{
- if ( pos >= len )
- return;
- len--;
- for ( unsigned p = pos; p < len; ++p)
- {
- inhalt[p] = inhalt[p+1];
- }
-}
-
-
-// Protected:
-template <class XX>
-void
-ST_List<XX>::checkSize(unsigned newLength)
-{
- // neuen Platzbedarf pruefen:
- unsigned newSpace = space();
- if (newLength >= newSpace)
- {
- if (!newSpace)
- newSpace = 1;
- const unsigned nBorder = 2000000000;
- while(newLength >= newSpace)
- {
- if (newSpace < nBorder)
- newSpace <<= 1;
- else
- {
- std::cerr << "List becomes too big" << std::endl;
- exit(1);
- }
- }
- }
-
- // Veraenderung ?:
- if (newSpace != space())
- alloc(newSpace,true);
-}
-
-template <class XX>
-void
-ST_List<XX>::alloc( unsigned newSpace,
- bool re )
-{
- XX * pNew = new XX[newSpace];
-
- if (inhalt != 0)
- {
- if (re)
- {
- for (unsigned i = 0; i < len; ++i)
- {
- pNew[i] = inhalt[i];
- } // end for
- }
- delete [] inhalt;
- }
-
- inhalt = pNew;
- allocated = newSpace;
-}
-
-
-template <class XY>
-DynamicList<XY>::DynamicList()
-{
-}
-
-template <class XY>
-DynamicList<XY>::DynamicList( const DynamicList<XY> & i_rList )
- : ST_List< XY* >(i_rList)
-{
- for ( typename DynamicList<XY>::iterator it = this->begin();
- it != DynamicList<XY>::end();
- ++it )
- {
- // Copying the contents the pointers point at:
- (*it) = new XY( *(*it) );
- }
-}
-
-template <class XY>
-DynamicList<XY>::~DynamicList()
-{
- this->erase_all();
-}
-
-template <class XY>
-DynamicList<XY> &
-DynamicList<XY>::operator=( const DynamicList<XY> & i_rList )
-{
- for ( typename DynamicList<XY>::const_iterator it = i_rList.begin();
- it != i_rList.end();
- ++it )
- {
- push_back( new XY(*(*it)) );
- }
- return *this;
-}
-
-
-template <class XY>
-void
-DynamicList<XY>::Insert(unsigned pos, XY * const & elem_)
-{
- if ( pos > this->len )
- return;
-
- checkSize(DynamicList<XY>::len+2);
- memmove( DynamicList<XY>::inhalt+pos+1, DynamicList<XY>::inhalt+pos, (DynamicList<XY>::len-pos) * sizeof(XY*) );
- this->inhalt[pos] = elem_;
- this->len++;
-}
-
-template <class XY>
-void
-DynamicList<XY>::Remove( unsigned pos )
-{
- if (!this->is_valid_index(pos) )
- return;
- this->len--;
- delete DynamicList<XY>::inhalt[pos];
- memmove(DynamicList<XY>::inhalt+pos, DynamicList<XY>::inhalt+pos+1, (DynamicList<XY>::len-pos) * sizeof(XY*) );
-}
-
-
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */