optional.pxd 1.1 KB

123456789101112131415161718192021222324252627282930313233343536
  1. # Currently Cython does not support std::optional.
  2. # See: https://github.com/cython/cython/pull/3294
  3. from libcpp cimport bool
  4. cdef extern from "<optional>" namespace "std" nogil:
  5. cdef cppclass nullopt_t:
  6. nullopt_t()
  7. cdef nullopt_t nullopt
  8. cdef cppclass optional[T]:
  9. ctypedef T value_type
  10. optional()
  11. optional(nullopt_t)
  12. optional(optional&) except +
  13. optional(T&) except +
  14. bool has_value()
  15. T& value()
  16. T& value_or[U](U& default_value)
  17. void swap(optional&)
  18. void reset()
  19. T& emplace(...)
  20. T& operator*()
  21. # T* operator->() # Not Supported
  22. optional& operator=(optional&)
  23. optional& operator=[U](U&)
  24. bool operator bool()
  25. bool operator!()
  26. bool operator==[U](optional&, U&)
  27. bool operator!=[U](optional&, U&)
  28. bool operator<[U](optional&, U&)
  29. bool operator>[U](optional&, U&)
  30. bool operator<=[U](optional&, U&)
  31. bool operator>=[U](optional&, U&)
  32. optional[T] make_optional[T](...) except +