GeometryPyCXX.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *   Copyright (c) 2008 Werner Mayer <wmayer[at]users.sourceforge.net>     *
00003  *                                                                         *
00004  *   This file is part of the FreeCAD CAx development system.              *
00005  *                                                                         *
00006  *   This library is free software; you can redistribute it and/or         *
00007  *   modify it under the terms of the GNU Library General Public           *
00008  *   License as published by the Free Software Foundation; either          *
00009  *   version 2 of the License, or (at your option) any later version.      *
00010  *                                                                         *
00011  *   This library  is distributed in the hope that it will be useful,      *
00012  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00013  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
00014  *   GNU Library General Public License for more details.                  *
00015  *                                                                         *
00016  *   You should have received a copy of the GNU Library General Public     *
00017  *   License along with this library; see the file COPYING.LIB. If not,    *
00018  *   write to the Free Software Foundation, Inc., 59 Temple Place,         *
00019  *   Suite 330, Boston, MA  02111-1307, USA                                *
00020  *                                                                         *
00021  ***************************************************************************/
00022 
00023 
00024 #include "PreCompiled.h"
00025 #ifndef _PreComp_
00026 #endif
00027 
00028 #include "GeometryPyCXX.h"
00029 #include "VectorPy.h"
00030 
00031 
00032 int Py::Vector::Vector_TypeCheck(PyObject * obj)
00033 {
00034     return PyObject_TypeCheck(obj, &(Base::VectorPy::Type));
00035 }
00036 
00037 bool Py::Vector::accepts (PyObject *obj) const
00038 {
00039     if (obj && Vector_TypeCheck (obj)) {
00040         return true;
00041     }
00042     else if (PyTuple_Check(obj)) {
00043         return (PyTuple_Size(obj) == 3);
00044     }
00045 
00046     return false;
00047 }
00048 
00049 Py::Vector::Vector (const Base::Vector3d& v)
00050 {
00051     set(new Base::VectorPy(v), true);
00052     validate();
00053 }
00054 
00055 Py::Vector::Vector (const Base::Vector3f& v)
00056 {
00057     set(new Base::VectorPy(v), true);
00058     validate();
00059 }
00060 
00061 Py::Vector& Py::Vector::operator= (PyObject* rhsp)
00062 {
00063     if(ptr() == rhsp) return *this;
00064     set (rhsp, false);
00065     return *this;
00066 }
00067 
00068 Py::Vector& Py::Vector::operator= (const Base::Vector3d& v)
00069 {
00070     set (new Base::VectorPy(v), true);
00071     return *this;
00072 }
00073 
00074 Py::Vector& Py::Vector::operator= (const Base::Vector3f& v)
00075 {
00076     set (new Base::VectorPy(v), true);
00077     return *this;
00078 }
00079 
00080 Base::Vector3d Py::Vector::toVector() const
00081 {
00082     if (Vector_TypeCheck (ptr())) {
00083         return static_cast<Base::VectorPy*>(ptr())->value();
00084     }
00085     else {
00086         return Base::getVectorFromTuple<double>(ptr());
00087     }
00088 }

Generated on Wed Nov 23 19:00:16 2011 for FreeCAD by  doxygen 1.6.1