[uLib geometry]

- adds some getters/setters to Programmable accessor
- DataSet and Attributes ... start working on .. to be continued
This commit is contained in:
Andrea Rigoni
2014-12-24 09:58:56 +00:00
parent 39ee7e4a94
commit 0b3efddead
8 changed files with 178 additions and 104 deletions

View File

@@ -35,22 +35,9 @@ struct is_iterator {
template <typename D>
class ProgrammableAccessor_Base {
protected:
public:
virtual D Get(void *) const = 0;
virtual void Set(void *,const D) const = 0;
// template <typename T>
// T Get(void *ob) const {
// return static_cast<T>(this->Get(ob));
// }
// template <typename T>
// void Set(void *ob, const T data) const {
// this->Set(ob,static_cast<D>(data));
// }
virtual ~ProgrammableAccessor_Base() {}
};
@@ -181,25 +168,19 @@ template <typename D >
class ProgrammableAccessor : public Named {
public:
// struct Wrapper {
// Wrapper(const ProgrammableAccessor<D> *ac, void *ob) :
// m_access(ac), m_object(ob)
// { assert(ob != NULL); }
// template <typename T>
// inline T Get() const { return static_cast<T>(m_access->Get(m_object)); }
// template <typename T>
// inline void Set(const T data) const { return m_access->Set(m_object,static_cast<T>(data)); }
// void *m_object;
// const ProgrammableAccessor<D> *m_access;
// };
ProgrammableAccessor() : Named("") {}
ProgrammableAccessor(const char *name) : Named(name) {}
template < typename F >
ProgrammableAccessor(const char *name, F f) : Named(name)
{ SetAccessFunctions(f); }
template < typename F1, typename F2 >
ProgrammableAccessor(const char *name, F1 f1, F2 f2) : Named(name)
{ SetAccessFunctions(f1,f2); }
template < typename F >
ProgrammableAccessor(F f) : Named(f)
{ SetAccessFunctions(f); }
@@ -209,8 +190,7 @@ public:
{ SetAccessFunctions(f1,f2); }
// ----- move to factory //
// ----- factory functions //
template <typename R, typename T1>
inline void SetAccessFunctions(R(*_pg)(const T1 *), void(*_ps)(T1*,R) = NULL) {
m_base = SmartPointer< detail::ProgrammableAccessor_Base<D> >(new detail::functor_by_static_acc<D,R,T1>(_pg,_ps));
@@ -243,8 +223,23 @@ public:
}
// ------ //
/*
// struct Wrapper {
// Wrapper(const ProgrammableAccessor<D> *ac, void *ob) :
// m_access(ac), m_object(ob)
// { assert(ob != NULL); }
// template <typename T>
// inline T Get() const { return static_cast<T>(m_access->Get(m_object)); }
// template <typename T>
// inline void Set(const T data) const { return m_access->Set(m_object,static_cast<T>(data)); }
// void *m_object;
// const ProgrammableAccessor<D> *m_access;
// };
// const Wrapper operator() (void *ob) const { return Wrapper(this,ob); }
*/
inline D Get(void *ob) const { return m_base->Get(ob); }

View File

@@ -62,6 +62,8 @@ namespace uLib {
using namespace uLib;
template < typename T >
void print_is_iter(const T &t, typename boost::disable_if< detail::is_iterator<T> >::type *dummy = 0 ) {
std::cout << "no";
@@ -146,7 +148,7 @@ int main() {
std::cout << va2.Get(&v) << "\n";
}
{
{ // test is iterator ..
Vector<Vox>::Iterator it;
Vox v;
std::cout << "is iter? ";

View File

@@ -85,7 +85,8 @@ int main()
for(uLib::Vector<float>::Iterator it = v.begin(); it!=v.end(); it++)
std::cout << *it <<" ";
std::cout << std::endl;
// std::sort(v.begin(),v.end(),LT<float>());
// std::sort(v.begin(),v.end(),LT<float>());
END_TESTING;