aboutsummaryrefslogtreecommitdiff
path: root/python/selection.cc
diff options
context:
space:
mode:
authorAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2008-06-01 13:51:46 +0000
committerAvatar Ciaran McCreesh <ciaran.mccreesh@googlemail.com> 2008-06-01 13:51:46 +0000
commit87294dc0c47918934ac032e9a080e8cf386f9bf2 (patch)
tree36dc289aa22200601ec28f2d7b497cd078e34ab6 /python/selection.cc
parent3b9f4ed10c9eb6901f33c7037989f3b67eb5de07 (diff)
downloadpaludis-87294dc0c47918934ac032e9a080e8cf386f9bf2.tar.gz
paludis-87294dc0c47918934ac032e9a080e8cf386f9bf2.tar.xz
New Selection + Filter + Generator interface using Environment, replacing the old PackageDatabase Query. Fixes: ticket:559
Diffstat (limited to 'python/selection.cc')
-rw-r--r--python/selection.cc89
1 files changed, 89 insertions, 0 deletions
diff --git a/python/selection.cc b/python/selection.cc
new file mode 100644
index 000000000..7c4fe39de
--- /dev/null
+++ b/python/selection.cc
@@ -0,0 +1,89 @@
+/* vim: set sw=4 sts=4 et foldmethod=syntax : */
+
+/*
+ * Copyright (c) 2008 Ciaran McCreesh
+ *
+ * This file is part of the Paludis package manager. Paludis is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU General
+ * Public License version 2, as published by the Free Software Foundation.
+ *
+ * Paludis 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 General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <python/paludis_python.hh>
+#include <python/exception.hh>
+
+#include <paludis/generator.hh>
+#include <paludis/filtered_generator.hh>
+#include <paludis/filter.hh>
+#include <paludis/selection.hh>
+#include <paludis/dep_spec.hh>
+
+using namespace paludis;
+using namespace paludis::python;
+namespace bp = boost::python;
+
+void expose_selection()
+{
+ bp::class_<Selection> selection(
+ "Selection",
+ "Selection for an Environment selection.",
+ bp::no_init
+ );
+
+ selection
+ .def(bp::self_ns::str(bp::self))
+ ;
+
+ bp::scope selection_scope = selection;
+
+ bp::class_<selection::SomeArbitraryVersion, bp::bases<Selection> > selection_some_arbitrary_version(
+ "SomeArbitraryVersion",
+ "Select some arbitrary version.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+
+ bp::class_<selection::BestVersionOnly, bp::bases<Selection> > selection_best_version_only(
+ "BestVersionOnly",
+ "Select the best version only.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+
+ bp::class_<selection::BestVersionInEachSlot, bp::bases<Selection> > selection_best_version_in_each_slot(
+ "BestVersionInEachSlot",
+ "Select the best version in each slot.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+
+ bp::class_<selection::AllVersionsSorted, bp::bases<Selection> > selection_all_versions_sorted(
+ "AllVersionsSorted",
+ "Select all versions, sorted.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+
+ bp::class_<selection::AllVersionsGroupedBySlot, bp::bases<Selection> > selection_all_versions_grouped_by_slot(
+ "AllVersionsGroupedBySlot",
+ "All versions grouped by slot.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+
+ bp::class_<selection::AllVersionsUnsorted, bp::bases<Selection> > selection_all_versions_unsorted(
+ "AllVersionsUnsorted",
+ "All versions, in no particular order.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+
+ bp::class_<selection::RequireExactlyOne, bp::bases<Selection> > selection_require_exactly_one(
+ "RequireExactlyOne",
+ "Require exactly one matching ID.",
+ bp::init<const FilteredGenerator &>("__init__(filtered_generator)")
+ );
+}
+