#define expect_false(expr) maybe_expect ((expr) != 0, 0)
#define expect_true(expr) maybe_expect ((expr) != 0, 1)
-static void unreachable_internal (char const *file, int line, char const *function);
-static void throw_unless_internal (char const *file, int line, char const *function, char const *condition);
-static void throw_msg_unless_internal (char const *file, int line, char const *function, char const *message);
-
-#define throw_unreachable unreachable_internal (__FILE__, __LINE__, __PRETTY_FUNCTION__)
-#define throw_unless(condition) if (!expect_false (condition)) throw_unless_internal (__FILE__, __LINE__, __PRETTY_FUNCTION__, #condition)
-#define throw_msg_unless(condition, message) if (!expect_false (condition)) throw_msg_unless_internal (__FILE__, __LINE__, __PRETTY_FUNCTION__, message)
+#ifdef __GNUC__
+# define CURFUNC __PRETTY_FUNCTION__
+#elif defined(__BORLANDC__)
+# define CURFUNC __FUNC__
+#else
+# define CURFUNC __FUNCTION__
+#endif
namespace json
{
{
namespace rpc
{
- typedef void (*method) (HTTPRequest *http, Value &request, Value &response);
- void init (void);
- void add_method (char *name, method mth);
+ typedef void (Module::*method) (HTTPRequest *http, Value &request, Value &response);
+
+ struct mfp
+ {
+ Module const *mod;
+ method mth;
+ };
+
+ typedef std::map<std::string, mfp> method_map;
+ extern method_map methods;
+
+ void add_method (char *name, Module const *mod, method mth);
void service (HTTPRequest *http, Value &request, Value &response);
void process (HTTPRequest *http, std::string &response, char const *request);
}