mirror of
https://github.com/OpenCMT/uLib.git
synced 2025-12-06 07:21:31 +01:00
[uLib geometry]
- adds some getters/setters to Programmable accessor - DataSet and Attributes ... start working on .. to be continued
This commit is contained in:
@@ -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); }
|
||||
|
||||
|
||||
@@ -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? ";
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user