| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #include "CXX/Objects.hxx" |
| | #include <limits> |
| | namespace Py |
| | { |
| |
|
| | Py_ssize_t numeric_limits_max() |
| | { |
| | return std::numeric_limits<Py_ssize_t>::max(); |
| | } |
| |
|
| | #if !defined(Py_LIMITED_API) && !defined(Py_UNICODE_DEPRECATED) |
| | Py_UNICODE unicode_null_string[1] = { 0 }; |
| | #endif |
| | char32_t ucs4_null_string[1] = { 0 }; |
| |
|
| | Type Object::type() const |
| | { |
| | return Type( PyObject_Type( p ), true ); |
| | } |
| |
|
| | String Object::str() const |
| | { |
| | return String( PyObject_Str( p ), true ); |
| | } |
| |
|
| | String Object::repr() const |
| | { |
| | return String( PyObject_Repr( p ), true ); |
| | } |
| |
|
| | std::string Object::as_string() const |
| | { |
| | return static_cast<std::string>( str() ); |
| | } |
| |
|
| | List Object::dir() const |
| | { |
| | return List( PyObject_Dir( p ), true ); |
| | } |
| |
|
| | bool Object::isType( const Type &t ) const |
| | { |
| | return type().ptr() == t.ptr(); |
| | } |
| |
|
| | Char::operator String() const |
| | { |
| | return String( ptr() ); |
| | } |
| |
|
| | String Bytes::decode( const char *encoding, const char *error ) |
| | { |
| | return String( PyUnicode_FromEncodedObject( ptr(), encoding, error ), true ); |
| | } |
| |
|
| | |
| | bool operator==( const Object &o1, const Object &o2 ) |
| | { |
| | int k = PyObject_RichCompareBool( *o1, *o2, Py_EQ ); |
| | ifPyErrorThrowCxxException(); |
| | return k != 0; |
| | } |
| |
|
| | bool operator!=( const Object &o1, const Object &o2 ) |
| | { |
| | int k = PyObject_RichCompareBool( *o1, *o2, Py_NE ); |
| | ifPyErrorThrowCxxException(); |
| | return k != 0; |
| | } |
| |
|
| | bool operator>=( const Object &o1, const Object &o2 ) |
| | { |
| | int k = PyObject_RichCompareBool( *o1, *o2, Py_GE ); |
| | ifPyErrorThrowCxxException(); |
| | return k != 0; |
| | } |
| |
|
| | bool operator<=( const Object &o1, const Object &o2 ) |
| | { |
| | int k = PyObject_RichCompareBool( *o1, *o2, Py_LE ); |
| | ifPyErrorThrowCxxException(); |
| | return k != 0; |
| | } |
| |
|
| | bool operator<( const Object &o1, const Object &o2 ) |
| | { |
| | int k = PyObject_RichCompareBool( *o1, *o2, Py_LT ); |
| | ifPyErrorThrowCxxException(); |
| | return k != 0; |
| | } |
| |
|
| | bool operator>( const Object &o1, const Object &o2 ) |
| | { |
| | int k = PyObject_RichCompareBool( *o1, *o2, Py_GT ); |
| | ifPyErrorThrowCxxException(); |
| | return k != 0; |
| | } |
| |
|
| | |
| | bool operator==( const Sequence::iterator &left, const Sequence::iterator &right ) |
| | { |
| | return left.eql( right ); |
| | } |
| |
|
| | bool operator!=( const Sequence::iterator &left, const Sequence::iterator &right ) |
| | { |
| | return left.neq( right ); |
| | } |
| |
|
| | bool operator<( const Sequence::iterator &left, const Sequence::iterator &right ) |
| | { |
| | return left.lss( right ); |
| | } |
| |
|
| | bool operator>( const Sequence::iterator &left, const Sequence::iterator &right ) |
| | { |
| | return left.gtr( right ); |
| | } |
| |
|
| | bool operator<=( const Sequence::iterator &left, const Sequence::iterator &right ) |
| | { |
| | return left.leq( right ); |
| | } |
| |
|
| | bool operator>=( const Sequence::iterator &left, const Sequence::iterator &right ) |
| | { |
| | return left.geq( right ); |
| | } |
| |
|
| | |
| | bool operator==( const Sequence::const_iterator &left, const Sequence::const_iterator &right ) |
| | { |
| | return left.eql( right ); |
| | } |
| |
|
| | bool operator!=( const Sequence::const_iterator &left, const Sequence::const_iterator &right ) |
| | { |
| | return left.neq( right ); |
| | } |
| |
|
| | bool operator<( const Sequence::const_iterator &left, const Sequence::const_iterator &right ) |
| | { |
| | return left.lss( right ); |
| | } |
| |
|
| | bool operator>( const Sequence::const_iterator &left, const Sequence::const_iterator &right ) |
| | { |
| | return left.gtr( right ); |
| | } |
| |
|
| | bool operator<=( const Sequence::const_iterator &left, const Sequence::const_iterator &right ) |
| | { |
| | return left.leq( right ); |
| | } |
| |
|
| | bool operator>=( const Sequence::const_iterator &left, const Sequence::const_iterator &right ) |
| | { |
| | return left.geq( right ); |
| | } |
| |
|
| | |
| | bool operator==( const Mapping::iterator &left, const Mapping::iterator &right ) |
| | { |
| | return left.eql( right ); |
| | } |
| |
|
| | bool operator!=( const Mapping::iterator &left, const Mapping::iterator &right ) |
| | { |
| | return left.neq( right ); |
| | } |
| |
|
| | |
| | bool operator==( const Mapping::const_iterator &left, const Mapping::const_iterator &right ) |
| | { |
| | return left.eql( right ); |
| | } |
| |
|
| | bool operator!=( const Mapping::const_iterator &left, const Mapping::const_iterator &right ) |
| | { |
| | return left.neq( right ); |
| | } |
| |
|
| | |
| | #ifndef CXX_NO_IOSTREAMS |
| | |
| |
|
| | std::ostream &operator<<( std::ostream &os, const Object &ob ) |
| | { |
| | return( os << static_cast<std::string>( ob.str() ) ); |
| | } |
| | #endif |
| |
|
| | } |
| |
|