src/core/value-helper.h
author Mathieu Lacage <mathieu.lacage@sophia.inria.fr>
Wed, 20 Feb 2008 20:24:52 +0100
changeset 2435 3128175f5866
parent 2433 3a98e1db7f80
child 2436 23415bac7eaf
permissions -rw-r--r--
ParamSpec -> Accessor

#ifndef VALUE_HELPER_H
#define VALUE_HELPER_H

#include "class-value-helper.h"

#define VALUE_HELPER_HEADER_1(type) \
  type (Attribute value); \
  operator Attribute () const;

#define VALUE_HELPER_HEADER_2(type)				\
  class type##Value : public Value {};				\
  class type##Accessor : public Accessor {};			\
  Ptr<AttributeChecker> Make##type##Checker (void);		\
  template <typename T1>					\
  Ptr<Accessor> Make##type##Accessor (T1 a1)			\
  {								\
    return MakeClassValueHelperAccessor< type ,		\
      type##Value, type##Accessor> (a1);			\
  }								\
  template <typename T1, typename T2>				\
    Ptr<Accessor> Make##type##Accessor (T1 a1, T2 a2)	\
  {								\
    return MakeClassValueHelperAccessor<type,			\
      type##Value,type##Accessor> (a1, a2);			\
  }

#define VALUE_HELPER_CPP(type)						\
  Ptr<AttributeChecker> Make##type##Checker (void)			\
  {									\
    return MakeSimpleAttributeChecker<type> ();				\
  }									\
  type::type (Attribute value)						\
  {									\
    *this = ClassValueHelperExtractFrom<type,type##Value> (value);	\
  }									\
  type::operator Attribute () const					\
  {									\
    return ClassValueHelperConvertTo<type,type##Value> (this);		\
  }

#endif /* VALUE_HELPER_H */