[Pyrex] Using pyrex to wrap C++ classes with lots of operators: lots of work?
Paul C. Leopardi
paul.leopardi at iinet.net.au
Mon Sep 8 04:44:39 CEST 2008
Hi,
I'll be attending Sage Days 10 in Nancy next month and was wondering how much
work it would take to wrap my GluCat library for Sage.
http://wiki.sagemath.org/days10
GluCat ( http://glucat.sf.net ) is a C++ template library with classes which
contain many unary and binary operators. Here is just a taste:
#define _GLUCAT_CLIFFORD_ALGEBRA_OPERATIONS \
bool operator== (const multivector_t& val) const; \
bool operator== (const Scalar_T& scr) const; \
multivector_t& operator+= (const multivector_t& rhs); \
multivector_t& operator+= (const Scalar_T& scr); \
multivector_t& operator-= (const multivector_t& rhs); \
const multivector_t operator- () const; \
multivector_t& operator*= (const Scalar_T& scr); \
multivector_t& operator*= (const multivector_t& rhs); \
multivector_t& operator%= (const multivector_t& rhs); \
multivector_t& operator&= (const multivector_t& rhs); \
multivector_t& operator^= (const multivector_t& rhs); \
multivector_t& operator/= (const Scalar_T& scr); \
multivector_t& operator/= (const multivector_t& rhs); \
const multivector_t inv () const; \
const multivector_t pow (int m) const; \
const multivector_t outer_pow (int m) const; \
Scalar_T operator[] (const index_set_t ist) const; \
Scalar_T scalar() const; \
const multivector_t operator() (index_t grade) const; \
const multivector_t even() const; \
const multivector_t odd() const; \
const vector_t vector_part() const; \
const multivector_t involute() const; \
const multivector_t reverse() const; \
const multivector_t conj() const; \
Scalar_T norm() const; \
Scalar_T quad() const; \
const index_set_t frame() const; \
Scalar_T max_abs() const; \
const multivector_t truncated \
(const Scalar_T& limit = Scalar_T(DEFAULT_TRUNCATION)) const;\
bool isnan () const; \
void write (const std::string& msg="") const;\
void write (std::ofstream& ofile, const std::string&
msg="") const;
Has anyone yet tried to wrap C++ classes with lots of operators? How much
effort is involved? Would *anyone* be able to complete the warpping of such
classes in the context of a 3 day coding sprint?
More information about the Pyrex
mailing list