diff options
Diffstat (limited to 'autodoc/source/ary/inc/store/s_storage.hxx')
-rw-r--r-- | autodoc/source/ary/inc/store/s_storage.hxx | 288 |
1 files changed, 0 insertions, 288 deletions
diff --git a/autodoc/source/ary/inc/store/s_storage.hxx b/autodoc/source/ary/inc/store/s_storage.hxx deleted file mode 100644 index 4bb393b48f93..000000000000 --- a/autodoc/source/ary/inc/store/s_storage.hxx +++ /dev/null @@ -1,288 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifndef ARY_STORE_S_STORAGE_HXX -#define ARY_STORE_S_STORAGE_HXX - -// USED SERVICES -#include <ary/types.hxx> -#include "s_iterator.hxx" - - - - -namespace ary -{ -namespace stg -{ - - -/** The storage unit of one class of commomly stored repository - entities. -*/ -template <class ENTITY> -class Storage -{ - public: - typedef Base<ENTITY> container_type; - typedef ary::TypedId<ENTITY> key_type; - typedef stg::const_iterator<ENTITY> c_iter; - typedef stg::iterator<ENTITY> iter; - - // LIFECYCLE - virtual ~Storage() {} - - // OPERATORS - const ENTITY & operator[]( - key_type i_id ) const; - ENTITY & operator[]( - key_type i_id ); - const ENTITY & operator[]( - Rid i_index ) const; - ENTITY & operator[]( - Rid i_index ); - // OPERATIONS - /// Sets the id of the new entity. - key_type Store_Entity( - DYN ENTITY & pass_newEntity ); - /// Sets the id of the new entity. - void Set_Reserved( - uintt i_index, - DYN ENTITY & pass_newEntity ); - /// Sets the id of the new entity. - void Replace_Entity( - key_type i_index, - DYN ENTITY & pass_newEntity ); - // INQUIRY - bool Exists( - key_type i_id ) const; - bool Exists( - Rid i_index ) const; - - c_iter Begin() const; - c_iter BeginUnreserved() const; - c_iter End() const; - - // ACCESS - iter Begin(); - iter BeginUnreserved(); - iter End(); - - protected: - Storage( - uintt i_nrOfReservedItems ); - private: - // DATA - container_type aData; -}; - - - - - - -// IMPLEMENTATION - -// Used later, so implemented first. -template <class ENTITY> -inline bool -Storage<ENTITY>::Exists(Rid i_index) const -{ - return 0 < i_index AND i_index < aData.Size(); -} - -template <class ENTITY> -inline bool -Storage<ENTITY>::Exists(key_type i_id) const -{ - return Exists(i_id.Value()); -} - -template <class ENTITY> -inline const ENTITY & -Storage<ENTITY>::operator[](Rid i_index) const -{ - csv_assert(Exists(i_index)); - return * aData[i_index]; -} - -template <class ENTITY> -inline ENTITY & -Storage<ENTITY>::operator[](Rid i_index) -{ - csv_assert(Exists(i_index)); - return * aData[i_index]; -} - -template <class ENTITY> -inline const ENTITY & -Storage<ENTITY>::operator[](key_type i_id) const -{ - return operator[](i_id.Value()); -} - -template <class ENTITY> -inline ENTITY & -Storage<ENTITY>::operator[](key_type i_id) -{ - return operator[](i_id.Value()); -} - -template <class ENTITY> -typename Storage<ENTITY>::key_type -Storage<ENTITY>::Store_Entity(DYN ENTITY & pass_newEntity) -{ - csv_assert( aData.Size() >= aData.ReservedSize() ); - Rid - ret( aData.Add_Entity(pass_newEntity) ); - pass_newEntity.Set_Id(ret); - return key_type(ret); -} - -template <class ENTITY> -void -Storage<ENTITY>::Set_Reserved(uintt i_index, - DYN ENTITY & pass_newEntity) -{ - // 0 must not be used. - csv_assert( i_index != 0 ); - // Make sure, i_index actually is the id of a reserved item. - csv_assert( i_index < aData.ReservedSize() ); - - // If there was a previous entity, it will be deleted by - // the destructor of pOldEntity. - Dyn<ENTITY> - pOldEntity(aData.Set_Entity(i_index, pass_newEntity)); - pass_newEntity.Set_Id(i_index); -} - -template <class ENTITY> -void -Storage<ENTITY>::Replace_Entity( key_type i_index, - DYN ENTITY & pass_newEntity ) -{ - uintt - nIndex = i_index.Value(); - // Make sure, i_index actually is the id of an existing, - // non reserved entity. - csv_assert( csv::in_range(aData.ReservedSize(), nIndex, aData.Size()) ); - - // If there was a previous entity, it will be deleted by - // the destructor of pOldEntity. - Dyn<ENTITY> - pOldEntity(aData.Set_Entity(nIndex, pass_newEntity)); - pass_newEntity.Set_Id(nIndex); -} - -template <class ENTITY> -inline -typename Storage<ENTITY>::c_iter -Storage<ENTITY>::Begin() const -{ - return c_iter(aData.Begin()); -} - -template <class ENTITY> -inline -typename Storage<ENTITY>::c_iter -Storage<ENTITY>::BeginUnreserved() const -{ - return c_iter(aData.BeginUnreserved()); -} - -template <class ENTITY> -inline -typename Storage<ENTITY>::c_iter -Storage<ENTITY>::End() const -{ - return c_iter(aData.End()); -} - -template <class ENTITY> -inline -typename Storage<ENTITY>::iter -Storage<ENTITY>::Begin() -{ - return iter(aData.Begin()); -} - -template <class ENTITY> -inline -typename Storage<ENTITY>::iter -Storage<ENTITY>::BeginUnreserved() -{ - return iter(aData.BeginUnreserved()); -} - -template <class ENTITY> -inline -typename Storage<ENTITY>::iter -Storage<ENTITY>::End() -{ - return iter(aData.End()); -} - -template <class ENTITY> -inline -Storage<ENTITY>::Storage(uintt i_nrOfReservedItems) - : aData(i_nrOfReservedItems) -{ - // Make sure Rid and uintt are the same type, because - // the interface of this uses Rid, but the interface of - // container_type uses uintt. - csv_assert( sizeof(uintt) == sizeof(Rid) ); -} - - - - -// HELPER FUNCTIONS - -/** @return 0, if data are not there. -*/ -template <class ENTITY> -inline const ENTITY * -Search( const Storage<ENTITY> & i_storage, - Rid i_id ) -{ - if (NOT i_storage.Exists(i_id)) - return 0; - return &i_storage[i_id]; -} - -/** @return 0, if data are not there. -*/ -template <class ENTITY> -inline ENTITY * -SearchAccess( const Storage<ENTITY> & i_storage, - Rid i_id ) -{ - if (NOT i_storage.Exists(i_id)) - return 0; - return &i_storage[i_id]; -} - - - - -} // namespace stg -} // namespace ary -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |