Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tracking/pytracking/bindings.cpp')
-rw-r--r--tracking/pytracking/bindings.cpp61
1 files changed, 3 insertions, 58 deletions
diff --git a/tracking/pytracking/bindings.cpp b/tracking/pytracking/bindings.cpp
index 699f0a06b3..3bd9bdd70b 100644
--- a/tracking/pytracking/bindings.cpp
+++ b/tracking/pytracking/bindings.cpp
@@ -2,67 +2,12 @@
#include "coding/traffic.hpp"
+#include "pyhelpers/pair.hpp"
+#include "pyhelpers/vector_uint8.hpp"
+
#include <boost/python.hpp>
#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
-namespace
-{
-using namespace boost::python;
-
-// Converts a std::pair instance to a Python tuple.
-template <typename T1, typename T2>
-struct pair_to_tuple
-{
- static PyObject * convert(pair<T1, T2> const & p)
- {
- return incref(make_tuple(p.first, p.second).ptr());
- }
-
- static PyTypeObject const * get_pytype() { return &PyTuple_Type; }
-};
-
-template <typename T1, typename T2>
-struct pair_to_python_converter
-{
- pair_to_python_converter() { to_python_converter<pair<T1, T2>, pair_to_tuple<T1, T2>, true>(); }
-};
-
-// Converts a vector<uint8_t> to/from Python str.
-struct vector_uint8t_to_str
-{
- static PyObject * convert(vector<uint8_t> const & v)
- {
- str s(reinterpret_cast<char const *>(v.data()), v.size());
- return incref(s.ptr());
- }
-};
-
-struct vector_uint8t_from_python_str
-{
- vector_uint8t_from_python_str()
- {
- converter::registry::push_back(&convertible, &construct, type_id<vector<uint8_t>>());
- }
-
- static void * convertible(PyObject * obj_ptr)
- {
- if (!PyString_Check(obj_ptr))
- return nullptr;
- return obj_ptr;
- }
-
- static void construct(PyObject * obj_ptr, converter::rvalue_from_python_stage1_data * data)
- {
- const char * value = PyString_AsString(obj_ptr);
- if (value == nullptr)
- throw_error_already_set();
- void * storage =
- ((converter::rvalue_from_python_storage<vector<uint8_t>> *)data)->storage.bytes;
- new (storage) vector<uint8_t>(value, value + PyString_Size(obj_ptr));
- data->convertible = storage;
- }
-};
-} // namespace
BOOST_PYTHON_MODULE(pytracking)
{