diff options
Diffstat (limited to 'autodoc/source/ary/idl/i_nnfinder.hxx')
-rw-r--r-- | autodoc/source/ary/idl/i_nnfinder.hxx | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/autodoc/source/ary/idl/i_nnfinder.hxx b/autodoc/source/ary/idl/i_nnfinder.hxx new file mode 100644 index 000000000000..3355a5f89030 --- /dev/null +++ b/autodoc/source/ary/idl/i_nnfinder.hxx @@ -0,0 +1,118 @@ +/************************************************************************* + * + * 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 ARY_IDL_NNFINDER_HXX +#define ARY_IDL_NNFINDER_HXX + +// USED SERVICES +#include "is_ce.hxx" + + + + +namespace ary +{ +namespace idl +{ + + +/** Gives context info for tree search functions. + + @collab ->ary::Search_SubTree<>() + @collab ->ary::Search_SubTree_UpTillRoot<>() +*/ +class Find_ModuleNode +{ + public: + typedef Ce_id id_type; + typedef StringVector::const_iterator name_iterator; + + // LIFECYCLE + Find_ModuleNode( + const Ce_Storage & i_rStorage, + name_iterator it_begin, + name_iterator it_end, + const String & i_sName ) + : rStorage(i_rStorage), + itBegin(it_begin), + itEnd(it_end), + sName2Search(i_sName) { if (itBegin != itEnd ? (*itBegin).empty() : false) ++itBegin; } + // OPERATIONS + const Module * operator()( + id_type i_id ) const + { return i_id.IsValid() + ? & ary_cast<Module>(rStorage[i_id]) + : 0; } + + name_iterator Begin() const { return itBegin; } + name_iterator End() const { return itEnd; } + const String & Name2Search() const { return sName2Search; } + + private: + // DATA + const Ce_Storage & rStorage; + name_iterator itBegin; + name_iterator itEnd; + String sName2Search; +}; + + + + +class Types_forSetCe_Id +{ + public: + typedef Ce_id element_type; + typedef Ce_Storage find_type; + + // KORR_FUTURE: Check, if this sorting is right or the ary standard + // sorting should be used. + struct sort_type + { + sort_type( + const find_type & i_rFinder ) + : rFinder(i_rFinder) {} + bool operator()( + const element_type & + i_r1, + const element_type & + i_r2 ) const + { + return rFinder[i_r1].LocalName() + < rFinder[i_r2].LocalName(); + } + + private: + const find_type & rFinder; + + }; +}; + + +} // namespace idl +} // namespace ary +#endif |