00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef OLN_MORPHO_ABSTRACT_ATTRIBUTE_HXX
00029 # define OLN_MORPHO_ABSTRACT_ATTRIBUTE_HXX
00030
00031 namespace oln
00032 {
00033 namespace morpho
00034 {
00035 namespace attr
00036 {
00037 namespace abstract
00038 {
00039 template <class Exact>
00040 inline void
00041 attribute<Exact>::operator+=(const exact_type &rhs)
00042 {
00043 mlc_dispatch(pe)(rhs);
00044 }
00045
00046 template <class Exact>
00047 inline bool
00048 attribute<Exact>::operator>=(const lambda_type &lambda) const
00049 {
00050 mlc_dispatch(ge)(lambda);
00051 }
00052
00053 template <class Exact>
00054 inline
00055 bool
00056 attribute<Exact>::operator<(const lambda_type &lambda) const
00057 {
00058 mlc_dispatch(less)(lambda);
00059 }
00060
00061 template <class Exact>
00062 inline
00063 bool
00064 attribute<Exact>::operator<(const exact_type &x) const
00065 {
00066 mlc_dispatch(less2)(x);
00067 }
00068
00069 template <class Exact>
00070 inline
00071 bool
00072 attribute<Exact>::operator!=(const lambda_type &lambda) const
00073 {
00074 mlc_dispatch(ne)(lambda);
00075 }
00076
00077 template <class Exact>
00078 inline const typename attribute<Exact>::lambda_type &
00079 attribute<Exact>::toLambda() const
00080 {
00081 mlc_dispatch(toLambda)();
00082 }
00083
00084 template <class Exact>
00085 inline
00086 bool
00087 attribute<Exact>::ge_impl(const lambda_type &lambda) const
00088 {
00089 return !(*this < lambda);
00090 }
00091
00092 template <class Exact>
00093 inline
00094 bool
00095 attribute<Exact>::less2_impl(const exact_type &x) const
00096 {
00097 return *this < x.toLambda();
00098 }
00099
00100 template <class Exact>
00101 inline
00102 attribute<Exact>::attribute()
00103 {}
00104 }
00105 }
00106 }
00107 }
00108
00109 #endif // !OLN_MORPHO_ABSTRACT_ATTRIBUTE_HXX