#include "python.h"

namespace python {
  

   // Float::Float(const Object & obj) {{{
   
   Float::Float(const Object & obj) {
      set( PyNumber_Float( *obj ), true );
   }

   // }}}
   // Float & Float::operator=(const Float & obj) {{{

   Float & Float::operator=(const Object & obj) {
      return (*this = *obj);
   }

   // }}}
   // Float & Float::operator=(PyObject * obj) {{{

   Float & Float::operator=(PyObject * obj) {
      if (ptr() != obj) {
         set(obj);
      }
      return *this;
   }

   // }}}
   // Float & Float::operator=(int v) {{{

   Float & Float::operator=(int v) {
      set(PyFloat_FromDouble( static_cast<double>( v ) ), true );
      return *this;
   }

   // }}}
   // Float & Float::operator=(long v) {{{

   Float & Float::operator=(long v) {
      set(PyFloat_FromDouble( static_cast<double>( v ) ), true );
      return *this;
   }

   // }}}
   // Float & Float::operator=(const Int & v) {{{

   Float & Float::operator=(const Int & v) {
      // Convert into long, then to double, then to Float
      set(PyFloat_FromDouble( static_cast<double>( static_cast< long > ( v ) ) ), true );
      return *this;
   }

   // }}}
   // Float & Float::operator=(double v) {{{

   Float & Float::operator=(double v) {
      set(PyFloat_FromDouble(v),true);
      return *this;
   }

   // }}}
   // Float::operator double() const {{{

   Float::operator double() const {
      return PyFloat_AsDouble( ptr() );
   }

   // }}}
   // bool Float::accepts(PyObject * pyobj) const {{{

   bool Float::accepts(PyObject * pyobj) const {
      return (pyobj != NULL) and PyFloat_Check(pyobj);
   }

   // }}}

}


syntax highlighted by Code2HTML, v. 0.9.1