Base: apply clang format
This commit is contained in:
@@ -37,8 +37,9 @@
|
||||
#include <Base/Vector3D.h>
|
||||
|
||||
|
||||
namespace Base {
|
||||
template <typename T>
|
||||
namespace Base
|
||||
{
|
||||
template<typename T>
|
||||
inline Vector3<T> getVectorFromTuple(PyObject* o)
|
||||
{
|
||||
Py::Sequence tuple(o);
|
||||
@@ -50,32 +51,35 @@ inline Vector3<T> getVectorFromTuple(PyObject* o)
|
||||
T y = static_cast<T>(Py::Float(tuple[1]));
|
||||
T z = static_cast<T>(Py::Float(tuple[2]));
|
||||
|
||||
return Vector3<T>(x,y,z);
|
||||
return Vector3<T>(x, y, z);
|
||||
}
|
||||
|
||||
class BaseExport Vector2dPy : public Py::PythonClass<Vector2dPy>
|
||||
class BaseExport Vector2dPy: public Py::PythonClass<Vector2dPy> // NOLINT
|
||||
{
|
||||
public:
|
||||
static Py::PythonType &behaviors();
|
||||
static PyTypeObject *type_object();
|
||||
static bool check( PyObject *p );
|
||||
static Py::PythonType& behaviors();
|
||||
static PyTypeObject* type_object();
|
||||
static bool check(PyObject* p);
|
||||
|
||||
static Py::PythonClassObject<Vector2dPy> create(const Vector2d&);
|
||||
static Py::PythonClassObject<Vector2dPy> create(double x, double y);
|
||||
Vector2dPy(Py::PythonClassInstance *self, Py::Tuple &args, Py::Dict &kwds);
|
||||
Vector2dPy(Py::PythonClassInstance* self, Py::Tuple& args, Py::Dict& kwds);
|
||||
~Vector2dPy() override;
|
||||
|
||||
static void init_type();
|
||||
Py::Object getattro(const Py::String &name_) override;
|
||||
int setattro(const Py::String &name_, const Py::Object &value) override;
|
||||
Py::Object getattro(const Py::String& name_) override;
|
||||
int setattro(const Py::String& name_, const Py::Object& value) override;
|
||||
Py::Object repr() override;
|
||||
inline const Vector2d& value() const {
|
||||
inline const Vector2d& value() const
|
||||
{
|
||||
return v;
|
||||
}
|
||||
inline void setValue(const Vector2d& n) {
|
||||
inline void setValue(const Vector2d& n)
|
||||
{
|
||||
v = n;
|
||||
}
|
||||
inline void setValue(double x, double y) {
|
||||
inline void setValue(double x, double y)
|
||||
{
|
||||
v.x = x;
|
||||
v.y = y;
|
||||
}
|
||||
@@ -88,17 +92,17 @@ public:
|
||||
Py::Object number_invert() override;
|
||||
Py::Object number_int() override;
|
||||
Py::Object number_float() override;
|
||||
Py::Object number_add( const Py::Object & ) override;
|
||||
Py::Object number_subtract( const Py::Object & ) override;
|
||||
Py::Object number_multiply( const Py::Object & ) override;
|
||||
Py::Object number_remainder( const Py::Object & ) override;
|
||||
Py::Object number_divmod( const Py::Object & ) override;
|
||||
Py::Object number_lshift( const Py::Object & ) override;
|
||||
Py::Object number_rshift( const Py::Object & ) override;
|
||||
Py::Object number_and( const Py::Object & ) override;
|
||||
Py::Object number_xor( const Py::Object & ) override;
|
||||
Py::Object number_or( const Py::Object & ) override;
|
||||
Py::Object number_power( const Py::Object &, const Py::Object & ) override;
|
||||
Py::Object number_add(const Py::Object&) override;
|
||||
Py::Object number_subtract(const Py::Object&) override;
|
||||
Py::Object number_multiply(const Py::Object&) override;
|
||||
Py::Object number_remainder(const Py::Object&) override;
|
||||
Py::Object number_divmod(const Py::Object&) override;
|
||||
Py::Object number_lshift(const Py::Object&) override;
|
||||
Py::Object number_rshift(const Py::Object&) override;
|
||||
Py::Object number_and(const Py::Object&) override;
|
||||
Py::Object number_xor(const Py::Object&) override;
|
||||
Py::Object number_or(const Py::Object&) override;
|
||||
Py::Object number_power(const Py::Object&, const Py::Object&) override;
|
||||
//@}
|
||||
|
||||
Py::Object isNull(const Py::Tuple&);
|
||||
@@ -118,53 +122,62 @@ private:
|
||||
Vector2d v;
|
||||
};
|
||||
|
||||
}
|
||||
} // namespace Base
|
||||
|
||||
namespace Py {
|
||||
namespace Py
|
||||
{
|
||||
|
||||
using Vector2d = PythonClassObject<Base::Vector2dPy>;
|
||||
|
||||
inline Base::Vector2d toVector2d(PyObject *py) {
|
||||
inline Base::Vector2d toVector2d(PyObject* py)
|
||||
{
|
||||
Base::Vector2dPy* py2d = Py::Vector2d(py).getCxxObject();
|
||||
return py2d ? py2d->value() : Base::Vector2d();
|
||||
}
|
||||
|
||||
inline Base::Vector2d toVector2d(const Object& py) {
|
||||
inline Base::Vector2d toVector2d(const Object& py)
|
||||
{
|
||||
Base::Vector2dPy* py2d = Py::Vector2d(py).getCxxObject();
|
||||
return py2d ? py2d->value() : Base::Vector2d();
|
||||
}
|
||||
|
||||
// Implementing the vector class in the fashion of the PyCXX library.
|
||||
class BaseExport Vector : public Object
|
||||
class BaseExport Vector: public Object // NOLINT
|
||||
{
|
||||
public:
|
||||
explicit Vector (PyObject *pyob, bool owned): Object(pyob, owned) {
|
||||
explicit Vector(PyObject* pyob, bool owned)
|
||||
: Object(pyob, owned)
|
||||
{
|
||||
validate();
|
||||
}
|
||||
|
||||
Vector (const Vector& ob): Object(*ob) {
|
||||
Vector(const Vector& ob)
|
||||
: Object(*ob)
|
||||
{
|
||||
validate();
|
||||
}
|
||||
|
||||
explicit Vector (const Base::Vector3d&);
|
||||
explicit Vector (const Base::Vector3f&);
|
||||
bool accepts (PyObject *pyob) const override;
|
||||
explicit Vector(const Base::Vector3d&);
|
||||
explicit Vector(const Base::Vector3f&);
|
||||
bool accepts(PyObject* pyob) const override;
|
||||
|
||||
Vector(const Object& other): Object(other.ptr()) {
|
||||
Vector(const Object& other)
|
||||
: Object(other.ptr())
|
||||
{
|
||||
validate();
|
||||
}
|
||||
Vector& operator= (const Object& rhs)
|
||||
Vector& operator=(const Object& rhs)
|
||||
{
|
||||
return (*this = *rhs);
|
||||
}
|
||||
Vector& operator= (const Vector& rhs)
|
||||
Vector& operator=(const Vector& rhs)
|
||||
{
|
||||
return (*this = *rhs);
|
||||
}
|
||||
|
||||
Vector& operator= (PyObject* rhsp);
|
||||
Vector& operator= (const Base::Vector3d&);
|
||||
Vector& operator= (const Base::Vector3f&);
|
||||
Vector& operator=(PyObject* rhsp);
|
||||
Vector& operator=(const Base::Vector3d&);
|
||||
Vector& operator=(const Base::Vector3f&);
|
||||
operator Base::Vector3d() const
|
||||
{
|
||||
return toVector();
|
||||
@@ -173,7 +186,7 @@ public:
|
||||
Base::Vector3d toVector() const;
|
||||
|
||||
private:
|
||||
static int Vector_TypeCheck(PyObject *);
|
||||
static int Vector_TypeCheck(PyObject*);
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -188,45 +201,54 @@ private:
|
||||
// The third template parameter is the definition of a pointer to the method
|
||||
// of the Python binding class to return the managed geometric instance. In our
|
||||
// example this is the method RotationPy::getRotationPtr.
|
||||
template <class T, class PyT, T* (PyT::*valuePtr)() const>
|
||||
class GeometryT : public Object
|
||||
template<class T, class PyT, T* (PyT::*valuePtr)() const>
|
||||
class GeometryT: public Object // NOLINT
|
||||
{
|
||||
public:
|
||||
explicit GeometryT (PyObject *pyob, bool owned): Object(pyob, owned) {
|
||||
explicit GeometryT(PyObject* pyob, bool owned)
|
||||
: Object(pyob, owned)
|
||||
{
|
||||
validate();
|
||||
}
|
||||
GeometryT (const GeometryT& ob): Object(*ob) {
|
||||
GeometryT(const GeometryT& ob)
|
||||
: Object(*ob)
|
||||
{
|
||||
validate();
|
||||
}
|
||||
explicit GeometryT ()
|
||||
explicit GeometryT()
|
||||
{
|
||||
set(new PyT(new T()), true);
|
||||
validate();
|
||||
}
|
||||
explicit GeometryT (const T& v)
|
||||
explicit GeometryT(const T& v)
|
||||
{
|
||||
set(new PyT(new T(v)), true);
|
||||
validate();
|
||||
}
|
||||
GeometryT(const Object& other): Object(other.ptr()) {
|
||||
GeometryT(const Object& other)
|
||||
: Object(other.ptr())
|
||||
{
|
||||
validate();
|
||||
}
|
||||
bool accepts (PyObject *pyob) const override {
|
||||
return pyob && Geometry_TypeCheck (pyob);
|
||||
bool accepts(PyObject* pyob) const override
|
||||
{
|
||||
return pyob && Geometry_TypeCheck(pyob);
|
||||
}
|
||||
GeometryT& operator= (const Object& rhs)
|
||||
GeometryT& operator=(const Object& rhs)
|
||||
{
|
||||
return (*this = *rhs);
|
||||
}
|
||||
GeometryT& operator= (PyObject* rhsp)
|
||||
GeometryT& operator=(PyObject* rhsp)
|
||||
{
|
||||
if(ptr() == rhsp) return *this;
|
||||
set (rhsp, false);
|
||||
if (ptr() == rhsp) {
|
||||
return *this;
|
||||
}
|
||||
set(rhsp, false);
|
||||
return *this;
|
||||
}
|
||||
GeometryT& operator= (const T& v)
|
||||
GeometryT& operator=(const T& v)
|
||||
{
|
||||
set (new PyT(v), true);
|
||||
set(new PyT(v), true);
|
||||
return *this;
|
||||
}
|
||||
const T& getValue() const
|
||||
@@ -248,22 +270,20 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
static int Geometry_TypeCheck(PyObject * obj)
|
||||
static int Geometry_TypeCheck(PyObject* obj)
|
||||
{
|
||||
return PyObject_TypeCheck(obj, &(PyT::Type));
|
||||
}
|
||||
};
|
||||
|
||||
// PyCXX wrapper classes Py::Matrix, Py::Rotation, Py::Placement, ...
|
||||
using BoundingBox = GeometryT<Base::BoundBox3d, Base::BoundBoxPy,
|
||||
&Base::BoundBoxPy::getBoundBoxPtr>;
|
||||
using Matrix = GeometryT<Base::Matrix4D, Base::MatrixPy,
|
||||
&Base::MatrixPy::getMatrixPtr>;
|
||||
using Rotation = GeometryT<Base::Rotation, Base::RotationPy,
|
||||
&Base::RotationPy::getRotationPtr>;
|
||||
using Placement = GeometryT<Base::Placement, Base::PlacementPy,
|
||||
&Base::PlacementPy::getPlacementPtr>;
|
||||
using BoundingBox =
|
||||
GeometryT<Base::BoundBox3d, Base::BoundBoxPy, &Base::BoundBoxPy::getBoundBoxPtr>;
|
||||
using Matrix = GeometryT<Base::Matrix4D, Base::MatrixPy, &Base::MatrixPy::getMatrixPtr>;
|
||||
using Rotation = GeometryT<Base::Rotation, Base::RotationPy, &Base::RotationPy::getRotationPtr>;
|
||||
using Placement =
|
||||
GeometryT<Base::Placement, Base::PlacementPy, &Base::PlacementPy::getPlacementPtr>;
|
||||
|
||||
}
|
||||
} // namespace Py
|
||||
|
||||
#endif // PY_GEOMETRYPY_H
|
||||
#endif // PY_GEOMETRYPY_H
|
||||
|
||||
Reference in New Issue
Block a user