summaryrefslogtreecommitdiff
path: root/autodoc/source/ary/idl/i_nnfinder.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'autodoc/source/ary/idl/i_nnfinder.hxx')
-rw-r--r--autodoc/source/ary/idl/i_nnfinder.hxx118
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