MCPcopy Create free account
hub / github.com/pybind/pybind11 / slice

Class slice

include/pybind11/pytypes.h:2000–2041  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1998};
1999
2000class slice : public object {
2001public:
2002 PYBIND11_OBJECT(slice, object, PySlice_Check)
2003 slice(handle start, handle stop, handle step)
2004 : object(PySlice_New(start.ptr(), stop.ptr(), step.ptr()), stolen_t{}) {
2005 if (!m_ptr) {
2006 pybind11_fail("Could not allocate slice object!");
2007 }
2008 }
2009 slice() : slice(none(), none(), none()) {}
2010
2011#ifdef PYBIND11_HAS_OPTIONAL
2012 slice(std::optional<ssize_t> start, std::optional<ssize_t> stop, std::optional<ssize_t> step)
2013 : slice(index_to_object(start), index_to_object(stop), index_to_object(step)) {}
2014#else
2015 slice(ssize_t start_, ssize_t stop_, ssize_t step_)
2016 : slice(int_(start_), int_(stop_), int_(step_)) {}
2017#endif
2018
2019 bool
2020 compute(size_t length, size_t *start, size_t *stop, size_t *step, size_t *slicelength) const {
2021 return PySlice_GetIndicesEx((PYBIND11_SLICE_OBJECT *) m_ptr,
2022 (ssize_t) length,
2023 (ssize_t *) start,
2024 (ssize_t *) stop,
2025 (ssize_t *) step,
2026 (ssize_t *) slicelength)
2027 == 0;
2028 }
2029 bool compute(
2030 ssize_t length, ssize_t *start, ssize_t *stop, ssize_t *step, ssize_t *slicelength) const {
2031 return PySlice_GetIndicesEx(
2032 (PYBIND11_SLICE_OBJECT *) m_ptr, length, start, stop, step, slicelength)
2033 == 0;
2034 }
2035
2036private:
2037 template <typename T>
2038 static object index_to_object(T index) {
2039 return index ? object(int_(*index)) : object(none());
2040 }
2041};
2042
2043class capsule : public object {
2044public:

Callers 5

TEST_SUBMODULEFunction · 0.85
test_slice_constructorsFunction · 0.85
TEST_SUBMODULEFunction · 0.85

Calls

no outgoing calls

Tested by 4

TEST_SUBMODULEFunction · 0.68
test_slice_constructorsFunction · 0.68
TEST_SUBMODULEFunction · 0.68