8 #ifndef CPPCMS_URL_DISPATCHER_H
9 #define CPPCMS_URL_DISPATCHER_H
11 #include <booster/noncopyable.h>
12 #include <cppcms/defs.h>
13 #include <booster/function.h>
14 #include <booster/hold_ptr.h>
15 #include <booster/traits/enable_if.h>
16 #include <booster/traits/is_base_of.h>
17 #include <cppcms/application.h>
69 void assign(std::string
const ®ex,
handler1 handler,
int exp1);
75 void assign(std::string
const ®ex,
handler2 handler,
int exp1,
int exp2);
81 void assign(std::string
const ®ex,
handler3 handler,
int exp1,
int exp2,
int exp3);
87 void assign(std::string
const ®ex,
handler4 handler,
int exp1,
int exp2,
int exp3,
int exp4);
96 bool dispatch(std::string url);
110 void assign(std::string
const ®ex,
void (C::*member)(),C *
object)
112 assign(regex,binder0<C>(member,
object));
122 void assign(std::string
const ®ex,
void (C::*member)(std::string),C *
object,
int e1)
124 assign(regex,binder1<C>(member,
object),e1);
134 void assign(std::string
const ®ex,
void (C::*member)(std::string,std::string),C *
object,
int e1,
int e2)
136 assign(regex,binder2<C>(member,
object),e1,e2);
146 void assign(std::string
const ®ex,
void (C::*member)(std::string,std::string,std::string),C *
object,
int e1,
int e2,
int e3)
148 assign(regex,binder3<C>(member,
object),e1,e2,e3);
158 void assign(std::string
const ®ex,
void (C::*member)(std::string,std::string,std::string,std::string),C *
object,
int e1,
int e2,
int e3,
int e4)
160 assign(regex,binder4<C>(member,
object),e1,e2,e3,e4);
175 void mount(std::string
const &match,
application &app,
int part);
179 template<
typename C,
typename Enable =
void>
186 class page_guard<C,typename booster::enable_if<booster::is_base_of< cppcms::application,C> >::type > {
198 application *object_;
203 typedef void (C::*member_type)();
207 binder0(member_type m,C *o) :
212 void operator()()
const
214 page_guard<C> guard(
object);
221 typedef void (C::*member_type)(std::string);
225 binder1(member_type m,C *o) :
230 void operator()(std::string p1)
const
232 page_guard<C> guard(
object);
233 (
object->*member)(p1);
239 typedef void (C::*member_type)(std::string,std::string);
243 binder2(member_type m,C *o) :
248 void operator()(std::string p1,std::string p2)
const
250 page_guard<C> guard(
object);
251 (
object->*member)(p1,p2);
256 typedef void (C::*member_type)(std::string,std::string,std::string);
260 binder3(member_type m,C *o) :
265 void operator()(std::string p1,std::string p2,std::string p3)
const
267 page_guard<C> guard(
object);
268 (
object->*member)(p1,p2,p3);
273 typedef void (C::*member_type)(std::string,std::string,std::string,std::string);
277 binder4(member_type m,C *o) :
282 void operator()(std::string p1,std::string p2,std::string p3,std::string p4)
const
284 page_guard<C> guard(
object);
285 (
object->*member)(p1,p2,p3,p4);
void assign(std::string const ®ex, void(C::*member)(std::string, std::string, std::string), C *object, int e1, int e2, int e3)
Definition: url_dispatcher.h:146
void assign(std::string const ®ex, void(C::*member)(std::string, std::string, std::string, std::string), C *object, int e1, int e2, int e3, int e4)
Definition: url_dispatcher.h:158
void assign(std::string const ®ex, void(C::*member)(std::string, std::string), C *object, int e1, int e2)
Definition: url_dispatcher.h:134
void assign(std::string const ®ex, void(C::*member)(std::string), C *object, int e1)
Definition: url_dispatcher.h:122
std::map< string_key, value > object
The json::object - std::map of json::value's.
Definition: json.h:53
void assign(std::string const ®ex, void(C::*member)(), C *object)
Definition: url_dispatcher.h:110
Definition: function.h:16
application class is the base class for all user created applications.
Definition: application.h:81
This class is used to glue between member function of application class and urls. ...
Definition: url_dispatcher.h:45
This class makes impossible to copy any class derived from this one.
Definition: noncopyable.h:15