xref: /trunk/main/editeng/source/editeng/baselist.hxx (revision fffd1d5d)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 #ifndef _EDITENG_BASELIST_HXX
25 #define _EDITENG_BASELIST_HXX
26 
27 template<class T>
28 class BaseList
29 {
30     std::vector<T*> contents;
31 public:
Count() const32     sal_uInt32 Count() const { return contents.size(); }
GetObject(sal_uInt32 index) const33     T* GetObject( sal_uInt32 index ) const { return contents[index]; }
operator [](std::size_t index) const34     T* operator[]( std::size_t index ) const { return contents[index]; }
GetData() const35     T* const* GetData() const { return &contents[0]; }
Insert(T * node,sal_uInt32 position)36     void Insert( T *node, sal_uInt32 position ) { contents.insert( contents.begin() + position, node); }
Replace(T * node,sal_uInt32 position)37     void Replace( T *node, sal_uInt32 position )
38     {
39         if ( position < contents.size() )
40             contents[ position ] = node;
41     }
Remove(sal_uInt32 first,sal_uInt32 count=1)42     void Remove( sal_uInt32 first, sal_uInt32 count = 1 ) { contents.erase( contents.begin() + first, contents.begin() + first + count ); }
DeleteAndDestroy(sal_uInt32 first,sal_uInt32 count)43     void DeleteAndDestroy( sal_uInt32 first, sal_uInt32 count )
44     {
45         for ( sal_uInt32 n = first; n < first + count; n++ )
46             delete GetObject( n );
47         Remove( first, first + count );
48     }
49 };
50 
51 #endif
52