[brlcad-commits] SF.net SVN: brlcad:[32412] brlcad/trunk/src/libpc
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <hom...@us...> - 2008-08-13 16:24:54
|
Revision: 32412 http://brlcad.svn.sourceforge.net/brlcad/?rev=32412&view=rev Author: homovulgaris Date: 2008-08-13 16:25:01 +0000 (Wed, 13 Aug 2008) Log Message: ----------- framework and code for a constraint2V object which takes 2 vectors as arguments calling the appropriate function (via pointer) expecting double ** Modified Paths: -------------- brlcad/trunk/src/libpc/pcGenerator.cpp brlcad/trunk/src/libpc/pcGenerator.h Modified: brlcad/trunk/src/libpc/pcGenerator.cpp =================================================================== --- brlcad/trunk/src/libpc/pcGenerator.cpp 2008-08-13 16:22:56 UTC (rev 32411) +++ brlcad/trunk/src/libpc/pcGenerator.cpp 2008-08-13 16:25:01 UTC (rev 32412) @@ -36,7 +36,38 @@ void Generators::varvalue::operator () (double v) const { vcset.setValue(v); } +bool Generators::constraint2V::operator() (VCSet & vcset, std::list<std::string> Vid) const { + typedef Variable<double> * Vi; + double ** a = new double*[2]; + //a = (double **) malloc(2 *(sizeof(double *))); + + for (int i =0; i< 3; i++) + a[i] = new double[3]; + //a[i] = (double *)malloc(3 *(sizeof(double))); + for (int i =0; i < 2; i++) { + for (int j = 0; j < 3; j++) { + a[i][j] = ((Vi) vcset.getVariablebyID(Vid.front()))->getValue(); + Vid.pop_front(); + } + } + if (fp_) { + if ( fp_(a) == 0) { + for (int i = 0 ; i < 3; i++) + delete[] a[i]; + delete[] a; + return true; + } else { + for (int i = 0 ; i < 3; i++) + delete[] a[i]; + delete[] a; + return false; + } + } else { + std::cout << "!!! Constraint evaluation pointer NULL\n"; + } +} + /** @} */ /* * Local Variables: Modified: brlcad/trunk/src/libpc/pcGenerator.h =================================================================== --- brlcad/trunk/src/libpc/pcGenerator.h 2008-08-13 16:22:56 UTC (rev 32411) +++ brlcad/trunk/src/libpc/pcGenerator.h 2008-08-13 16:25:01 UTC (rev 32412) @@ -32,40 +32,55 @@ #include "common.h" #include "pcVCSet.h" +#include <string> /* Functors associated with the generation of Variables */ namespace Generators { - struct varname - { - public: - varname(VCSet &vcs) : vcset(vcs) {} - void operator () (char c) const; - private: - VCSet &vcset; - }; +struct varname +{ +public: + varname(VCSet &vcs) : vcset(vcs) {} + void operator () (char c) const; +private: + VCSet &vcset; +}; - struct varvalue - { - public: - varvalue(VCSet &vcs) : vcset(vcs) {} - void operator () (double v) const; - private: - VCSet &vcset; - }; +struct varvalue +{ +public: + varvalue(VCSet &vcs) : vcset(vcs) {} + void operator () (double v) const; +private: + VCSet &vcset; +}; + /** * Various precompiled functors which are called during parsing depending * on the constraint represented in the expression */ - struct is_equal - { - template<typename IteratorT> - void operator() (IteratorT first, IteratorT last) const; - }; +struct is_equal +{ + template<typename IteratorT> + void operator() (IteratorT first, IteratorT last) const; +}; +/** Constraint wrapper taking 2 Vectors as arguments + * @todo parametrize the dimension ( Vector / Fastf) and + * number of arguments + */ + +typedef struct constraint2V +{ +public: + constraint2V(bool (*fp) (double **)) { fp = fp_; } + bool operator() (VCSet & vcset, std::list<std::string> Vid) const; +private: + bool (*fp_) (double **); +} constraint2V; + } - #endif /** @} */ /* This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |