26 template <
class t_Parameters>
35 const static t_Parameters parameters;
44 #define ARILES_METHODS(Namespace, VisitorQualifier, MethodQualifier) \ 45 virtual void arilesVirtualVisit( \ 46 VisitorQualifier ariles::Namespace::Visitor &visitor, const ariles::Namespace::Visitor::Parameters ¶m) \ 49 ARILES_TRACE_FUNCTION; \ 50 this->arilesVisit(visitor, param); \ 52 using ariles::Namespace::Base::arilesGetParameters; 55 template <
class t_Visitor>
59 virtual void arilesVirtualVisit(t_Visitor &,
const typename t_Visitor::Parameters &) = 0;
64 return (visitor.getDefaultParameters());
69 template <
class t_Visitor>
73 virtual void arilesVirtualVisit(t_Visitor &,
const typename t_Visitor::Parameters &)
const = 0;
78 return (visitor.getDefaultParameters());
84 #ifndef ARILES_DISABLE 85 # ifndef ARILES_ENABLED 86 # define ARILES_ENABLED 95 template <
class t_Ariles,
class t_Visitor>
98 t_Ariles &ariles_class,
99 const std::string &name,
100 const typename t_Visitor::Parameters ¶m,
104 visitor.start(ariles_class, name, param);
108 template <
class t_Ariles,
class t_Visitor>
111 t_Ariles &ariles_class,
113 const typename t_Visitor::Parameters ¶m,
117 visitor.start(ariles_class, name, param);
121 template <
class t_Visitor,
class t_Ariles>
124 t_Ariles &ariles_class,
125 const typename t_Visitor::Parameters ¶m,
129 ariles::apply(visitor, ariles_class, ariles_class.arilesDefaultID(), param);
133 template <
class t_Visitor,
class t_Ariles>
136 t_Ariles &ariles_class,
137 const std::string &name,
141 ariles::apply(visitor, ariles_class, name, visitor.getParameters(ariles_class));
145 template <
class t_Visitor,
class t_Ariles>
148 t_Ariles &ariles_class,
153 ariles::apply(visitor, ariles_class, name, visitor.getParameters(ariles_class));
157 template <
class t_Visitor,
class t_Ariles>
161 ariles::apply(visitor, ariles_class, ariles_class.arilesDefaultID());
165 template <
class t_Visitor,
class t_Ariles>
177 template <
class t_Visitor,
class t_Ariles,
class t_Arg>
180 t_Ariles &ariles_class,
185 t_Visitor visitor(arg);
190 template <
class t_Visitor,
class t_Ariles,
class t_Arg>
193 t_Ariles &ariles_class,
199 t_Visitor visitor(arg);
204 template <
class t_Visitor,
class t_Ariles,
class t_Arg>
207 t_Ariles &ariles_class,
212 t_Visitor visitor(arg);
217 template <
class t_Visitor,
class t_Ariles,
class t_Arg>
220 t_Ariles &ariles_class,
221 const typename t_Visitor::Parameters ¶m,
226 t_Visitor visitor(arg);
231 template <
class t_Visitor,
class t_Ariles>
233 const std::string &arg,
234 t_Ariles &ariles_class,
235 const unsigned int flags,
239 t_Visitor visitor(arg);
240 ariles::apply(visitor, ariles_class,
typename t_Visitor::Parameters(flags));
246 template <
class t_Visitor,
class t_Left,
class t_Right>
251 const std::string &name,
252 const typename t_Visitor::Parameters ¶m,
258 visitor.start(left, right, name, param);
260 catch (std::exception &e)
262 if (
true == param.throw_on_error_)
264 ARILES_THROW(std::string(
"Comparison failed: ") + e.what());
266 visitor.equal_ =
false;
271 template <
class t_Visitor,
class t_Left,
class t_Right>
279 ariles::apply(visitor, left, right, left.arilesDefaultID(), visitor.getParameters(left));
283 template <
class t_Visitor,
class t_Left,
class t_Right>
288 const typename t_Visitor::Parameters ¶m,
292 ariles::apply(visitor, left, right, left.arilesDefaultID(), param);
302 template <
class t_One,
class t_Two,
class t_Three,
class t_Four,
class t_Five>
303 void apply(t_One, t_Two, t_Three, t_Four, t_Five)
307 template <
class t_One,
class t_Two,
class t_Three,
class t_Four>
308 void apply(t_One, t_Two, t_Three, t_Four)
312 template <
class t_One,
class t_Two,
class t_Three>
313 void apply(t_One, t_Two, t_Three)
317 template <
class t_One,
class t_Two>
318 void apply(t_One, t_Two)
322 template <
class t_One,
class t_Two>
void apply(t_Visitor &visitor, t_Ariles &ariles_class, const std::string &name, const typename t_Visitor::Parameters ¶m, ARILES_IS_BASE_ENABLER(ariles::visitor::Visitor, t_Visitor))
#define ARILES_TRACE_FUNCTION
#define ARILES_IS_BASE_ENABLER(Base, Derived)
virtual const t_Visitor::Parameters & arilesGetParameters(const t_Visitor &visitor) const
virtual const t_Visitor::Parameters & arilesGetParameters(const t_Visitor &visitor) const
const t_Parameters & getDefaultParameters() const
#define ARILES_IS_BASE_DISABLER(Base, Derived)
#define ARILES_VISIBILITY_ATTRIBUTE