summaryrefslogtreecommitdiff
path: root/src/py_option.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/py_option.cc')
-rw-r--r--src/py_option.cc103
1 files changed, 0 insertions, 103 deletions
diff --git a/src/py_option.cc b/src/py_option.cc
deleted file mode 100644
index 2e298272..00000000
--- a/src/py_option.cc
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2003-2007, John Wiegley. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * - Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * - Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * - Neither the name of New Artisans LLC nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-using namespace boost::python;
-using namespace ledger;
-
-struct py_option_t : public option_t
-{
- PyObject * self;
-
- py_option_t(PyObject * self_,
- const string& long_opt,
- const bool wants_arg)
- : self(self_), option_t(long_opt, wants_arg) {}
-
- virtual ~py_option_t() {}
-
- virtual bool check(option_source_t source) {
- return call_method<bool>(self, "check", source);
- }
-
- virtual void select(report_t * report, const char * optarg = NULL) {
- if (optarg)
- return call_method<void>(self, "select", report, optarg);
- else
- return call_method<void>(self, "select", report);
- }
-};
-
-BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(option_select_overloads,
- py_option_t::select, 1, 2)
-
-typedef std::map<const string, object> options_map;
-
-options_map options;
-
-static option_t * find_option(const string& name)
-{
- options_map::const_iterator i = options.find(name);
- if (i != options.end())
- return extract<py_option_t *>((*i).second.ptr());
-
- return NULL;
-}
-
-void shutdown_option()
-{
- options.clear();
-}
-
-void export_option()
-{
- class_< option_t, py_option_t, boost::noncopyable >
- ("Option", init<const string&, bool>())
- .def_readonly("long_opt", &py_option_t::long_opt)
- .def_readonly("short_opt", &py_option_t::short_opt)
- .def_readonly("wants_arg", &py_option_t::wants_arg)
- .def_readwrite("handled", &py_option_t::handled)
- .def("check", &py_option_t::check)
- .def("select", &py_option_t::select, option_select_overloads())
- ;
-
- enum_< option_t::option_source_t > ("OptionSource")
- .value("InitFile", option_t::INIT_FILE)
- .value("Environment", option_t::ENVIRONMENT)
- .value("DataFile", option_t::DATA_FILE)
- .value("CommandLine", option_t::COMMAND_LINE)
- ;
-
- class_< options_map > ("OptionsMap")
- .def(map_indexing_suite<options_map>())
- ;
-
- scope().attr("options") = ptr(&options);
-}