/* vim: set sw=4 sts=4 et foldmethod=syntax : */ /* * Copyright (c) 2007 Piotr JaroszyƄski * * 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 #include #include #include #include #include using namespace paludis; using namespace paludis::python; namespace bp = boost::python; namespace { template T_ * make_concrete_dependencies_label(const std::string & t) { return new T_(t); } } template struct class_concrete_uri_label : bp::class_, bp::bases, boost::noncopyable> { class_concrete_uri_label(const std::string & name) : bp::class_, bp::bases, boost::noncopyable> ( name.c_str(), "A concrete URI label class.", bp::init("__init__(string)") ) { bp::implicitly_convertible, std::shared_ptr >(); } }; template struct class_concrete_dependencies_label : bp::class_, bp::bases, boost::noncopyable> { class_concrete_dependencies_label(const std::string & name) : bp::class_, bp::bases, boost::noncopyable> ( name.c_str(), "A concrete dependencies label class.", bp::no_init ) { def("__init__", bp::make_constructor(&make_concrete_dependencies_label), "__init__(String)" ); bp::implicitly_convertible, std::shared_ptr >(); } }; void expose_dep_label() { /** * URILabel */ register_shared_ptrs_to_python(); bp::class_ ( "URILabel", "URI label base class.", bp::no_init ) .add_property("text", &URILabel::text, "[ro] string\n" "Our text." ) .def("__str__", &URILabel::text) ; /** * ConcreteURILabels */ class_concrete_uri_label("URIMirrorsThenListedLabel"); class_concrete_uri_label("URIMirrorsOnlyLabel"); class_concrete_uri_label("URIListedOnlyLabel"); class_concrete_uri_label("URIListedThenMirrorsLabel"); class_concrete_uri_label("URILocalMirrorsOnlyLabel"); class_concrete_uri_label("URIManualOnlyLabel"); /** * DependenciesLabel */ register_shared_ptrs_to_python(); bp::class_ ( "DependenciesLabel", "Dependencies label base class.", bp::no_init ) .add_property("text", &DependenciesLabel::text, "[ro] string\n" "Our text." ) .def("__str__", &DependenciesLabel::text) ; /** * ConcreteDependenciesLabels */ class_concrete_dependencies_label >("DependenciesBuildLabel"); class_concrete_dependencies_label >("DependenciesRunLabel"); class_concrete_dependencies_label >("DependenciesPostLabel"); class_concrete_dependencies_label >("DependenciesCompileAgainstLabel"); class_concrete_dependencies_label >("DependenciesInstallLabel"); class_concrete_dependencies_label >("DependenciesFetchLabel"); class_concrete_dependencies_label >("DependenciesSuggestionLabel"); class_concrete_dependencies_label >("DependenciesRecommendationLabel"); }