From 7f330af9f397ab121e11723bdf7b976630b7e450 Mon Sep 17 00:00:00 2001 From: David Shah Date: Fri, 8 Jun 2018 11:04:02 +0200 Subject: Reformat remaining files Signed-off-by: David Shah --- common/handle_error.cc | 24 ++++---- common/log.h | 1 - common/pycontainers.h | 162 ++++++++++++++++++++++++++----------------------- dummy/chip.cc | 5 +- ice40/main.cc | 1 - 5 files changed, 101 insertions(+), 92 deletions(-) diff --git a/common/handle_error.cc b/common/handle_error.cc index a06b5348..55ec75fb 100644 --- a/common/handle_error.cc +++ b/common/handle_error.cc @@ -1,11 +1,12 @@ -#include #include +#include namespace py = boost::python; // Parses the value of the active python exception // NOTE SHOULD NOT BE CALLED IF NO EXCEPTION -std::string parse_python_exception(){ +std::string parse_python_exception() +{ PyObject *type_ptr = NULL, *value_ptr = NULL, *traceback_ptr = NULL; // Fetch the exception info from the Python C API PyErr_Fetch(&type_ptr, &value_ptr, &traceback_ptr); @@ -13,30 +14,31 @@ std::string parse_python_exception(){ // Fallback error std::string ret("Unfetchable Python error"); // If the fetch got a type pointer, parse the type into the exception string - if(type_ptr != NULL){ + if (type_ptr != NULL) { py::handle<> h_type(type_ptr); py::str type_pstr(h_type); // Extract the string from the boost::python object py::extract e_type_pstr(type_pstr); - // If a valid string extraction is available, use it + // If a valid string extraction is available, use it // otherwise use fallback - if(e_type_pstr.check()) + if (e_type_pstr.check()) ret = e_type_pstr(); else ret = "Unknown exception type"; } - // Do the same for the exception value (the stringification of the exception) - if(value_ptr != NULL){ + // Do the same for the exception value (the stringification of the + // exception) + if (value_ptr != NULL) { py::handle<> h_val(value_ptr); py::str a(h_val); py::extract returned(a); - if(returned.check()) - ret += ": " + returned(); + if (returned.check()) + ret += ": " + returned(); else ret += std::string(": Unparseable Python error: "); } // Parse lines from the traceback using the Python traceback module - if(traceback_ptr != NULL){ + if (traceback_ptr != NULL) { py::handle<> h_tb(traceback_ptr); // Load the traceback module and the format_tb function py::object tb(py::import("traceback")); @@ -47,7 +49,7 @@ std::string parse_python_exception(){ py::object tb_str(py::str("\n").join(tb_list)); // Extract the string, check the extraction, and fallback in necessary py::extract returned(tb_str); - if(returned.check()) + if (returned.check()) ret += ": " + returned(); else ret += std::string(": Unparseable Python traceback"); diff --git a/common/log.h b/common/log.h index 374772b3..c3c05c11 100644 --- a/common/log.h +++ b/common/log.h @@ -20,7 +20,6 @@ #ifndef LOG_H #define LOG_H -#include #include #include #include diff --git a/common/pycontainers.h b/common/pycontainers.h index 6e2cdea9..baf60229 100644 --- a/common/pycontainers.h +++ b/common/pycontainers.h @@ -21,13 +21,12 @@ #ifndef COMMON_PYCONTAINERS_H #define COMMON_PYCONTAINERS_H -#include -#include -#include #include -#include -#include #include +#include +#include +#include +#include using namespace boost::python; @@ -36,27 +35,30 @@ A wrapper for a Pythonised nextpnr Iterator. The actual class wrapped is a pair containing (current, end) */ -template -struct iterator_wrapper { - typedef decltype(*(std::declval())) value_t; - - static value_t next(std::pair &iter) { - if (iter.first != iter.second) { - value_t val = *iter.first; - ++iter.first; - return val; - } else { - PyErr_SetString(PyExc_StopIteration, "End of range reached"); - boost::python::throw_error_already_set(); - // Should be unreachable, but prevent control may reach end of non-void - throw std::runtime_error("unreachable"); - } - } - - static void wrap(const char *python_name) { - class_ < std::pair < T, T >> (python_name, no_init) - .def("__next__", next, P()); - } +template struct iterator_wrapper +{ + typedef decltype(*(std::declval())) value_t; + + static value_t next(std::pair &iter) + { + if (iter.first != iter.second) { + value_t val = *iter.first; + ++iter.first; + return val; + } else { + PyErr_SetString(PyExc_StopIteration, "End of range reached"); + boost::python::throw_error_already_set(); + // Should be unreachable, but prevent control may reach end of + // non-void + throw std::runtime_error("unreachable"); + } + } + + static void wrap(const char *python_name) + { + class_>(python_name, no_init) + .def("__next__", next, P()); + } }; /* @@ -65,20 +67,22 @@ and end() which return iterator-like objects supporting ++, * and != Full STL iterator semantics are not required, unlike the standard Boost wrappers */ -template> -struct range_wrapper { - typedef decltype(std::declval().begin()) iterator_t; - - static std::pair iter(T &range) { - return std::make_pair(range.begin(), range.end()); - } - - static void wrap(const char *range_name, const char *iter_name) { - class_(range_name, no_init) - .def("__iter__", iter); - iterator_wrapper().wrap(iter_name); - } - typedef iterator_wrapper iter_wrap; +template > +struct range_wrapper +{ + typedef decltype(std::declval().begin()) iterator_t; + + static std::pair iter(T &range) + { + return std::make_pair(range.begin(), range.end()); + } + + static void wrap(const char *range_name, const char *iter_name) + { + class_(range_name, no_init).def("__iter__", iter); + iterator_wrapper().wrap(iter_name); + } + typedef iterator_wrapper iter_wrap; }; #define WRAP_RANGE(t) range_wrapper().wrap(#t "Range", #t "Iterator") @@ -88,42 +92,50 @@ Wrapper for a map, either an unordered_map, regular map or dict */ inline void KeyError() { PyErr_SetString(PyExc_KeyError, "Key not found"); } -template -struct map_wrapper { - typedef typename std::remove_cv::type>::type K; - typedef typename T::mapped_type V; - typedef typename T::value_type KV; - - static V &get(T &x, K const &i) { - if (x.find(i) != x.end()) return x.at(i); - KeyError(); - std::terminate(); - } - - static void set(T &x, K const &i, V const &v) { - x[i] = v; - } - - static void del(T const &x, K const &i) { - if (x.find(i) != x.end()) x.erase(i); - else KeyError(); - std::terminate(); - } - - static void wrap(const char *map_name, const char *kv_name, const char *iter_name) { - class_(kv_name) - .def_readonly("first", &KV::first) - .def_readwrite("second", &KV::second); - typedef range_wrapper> rw; - typename rw::iter_wrap().wrap(iter_name); - class_(map_name, no_init) - .def("__iter__", rw::iter) - .def("__len__", &T::size) - .def("__getitem__", get, return_internal_reference<>()) - .def("__setitem__", set, with_custodian_and_ward<1,2>()); - } +template struct map_wrapper +{ + typedef typename std::remove_cv< + typename std::remove_reference::type>::type K; + typedef typename T::mapped_type V; + typedef typename T::value_type KV; + + static V &get(T &x, K const &i) + { + if (x.find(i) != x.end()) + return x.at(i); + KeyError(); + std::terminate(); + } + + static void set(T &x, K const &i, V const &v) { x[i] = v; } + + static void del(T const &x, K const &i) + { + if (x.find(i) != x.end()) + x.erase(i); + else + KeyError(); + std::terminate(); + } + + static void wrap(const char *map_name, const char *kv_name, + const char *iter_name) + { + class_(kv_name) + .def_readonly("first", &KV::first) + .def_readwrite("second", &KV::second); + typedef range_wrapper> + rw; + typename rw::iter_wrap().wrap(iter_name); + class_(map_name, no_init) + .def("__iter__", rw::iter) + .def("__len__", &T::size) + .def("__getitem__", get, return_internal_reference<>()) + .def("__setitem__", set, with_custodian_and_ward<1, 2>()); + } }; -#define WRAP_MAP(t, name) map_wrapper().wrap(#name, #name "KeyValue", #name "Iterator") +#define WRAP_MAP(t, name) \ + map_wrapper().wrap(#name, #name "KeyValue", #name "Iterator") #endif diff --git a/dummy/chip.cc b/dummy/chip.cc index 51246344..b3d5b790 100644 --- a/dummy/chip.cc +++ b/dummy/chip.cc @@ -27,7 +27,4 @@ const vector &Chip::getBels() const return ret; } -BelType Chip::getBelType(BelId bel) const -{ - return BelType(); -} +BelType Chip::getBelType(BelId bel) const { return BelType(); } diff --git a/ice40/main.cc b/ice40/main.cc index d50f72e0..9fb6b0aa 100644 --- a/ice40/main.cc +++ b/ice40/main.cc @@ -23,7 +23,6 @@ #include "design.h" #include "jsonparse.h" #include "log.h" -#include "log.h" #include "mainwindow.h" #include "place.h" #include "pybindings.h" -- cgit v1.2.3