do away with ev++.C

This commit is contained in:
Marc Alexander Lehmann 2007-11-11 16:58:25 +00:00
parent 9666bde85d
commit 2318d410a3
2 changed files with 27 additions and 36 deletions

17
ev++.C
View File

@ -1,17 +0,0 @@
#include "ev++.h"
namespace ev {
extern "C" {
void cb_io (struct ev_io *w, int revents) { (*static_cast<io *>(w))(revents); }
void cb_timer (struct ev_timer *w, int revents) { (*static_cast<timer *>(w))(revents); }
#if EV_PERIODICS
void cb_periodic (struct ev_periodic *w, int revents) { (*static_cast<periodic *>(w))(revents); }
#endif
void cb_idle (struct ev_idle *w, int revents) { (*static_cast<idle *>(w))(revents); }
void cb_prepare (struct ev_prepare *w, int revents) { (*static_cast<prepare *>(w))(revents); }
void cb_check (struct ev_check *w, int revents) { (*static_cast<check *>(w))(revents); }
void cb_sig (struct ev_signal *w, int revents) { (*static_cast<sig *>(w))(revents); }
void cb_child (struct ev_child *w, int revents) { (*static_cast<child *>(w))(revents); }
}
}

46
ev++.h
View File

@ -93,9 +93,9 @@ namespace ev {
/* using a template here would require quite a bit more lines,
* so a macro solution was chosen */
#define EV_DECLARE_WATCHER(cppstem,cstem) \
#define EV_BEGIN_WATCHER(cppstem,cstem) \
\
extern "C" void cb_ ## cppstem (struct ev_ ## cstem *w, int revents); \
static void cb_ ## cppstem (struct ev_ ## cstem *w, int revents); \
\
struct cppstem : ev_ ## cstem, callback<cppstem> \
{ \
@ -143,7 +143,15 @@ namespace ev {
\
public:
EV_DECLARE_WATCHER (io, io)
#define EV_END_WATCHER(cppstem,cstem) \
}; \
\
static void cb_ ## cppstem (struct ev_ ## cstem *w, int revents) \
{ \
(*static_cast<cppstem *>(w))(revents); \
}
EV_BEGIN_WATCHER (io, io)
void set (int fd, int events)
{
int active = is_active ();
@ -165,9 +173,9 @@ namespace ev {
set (fd, events);
start ();
}
};
EV_END_WATCHER (io, io)
EV_DECLARE_WATCHER (timer, timer)
EV_BEGIN_WATCHER (timer, timer)
void set (ev_tstamp after, ev_tstamp repeat = 0.)
{
int active = is_active ();
@ -186,10 +194,10 @@ namespace ev {
{
ev_timer_again (EV_A_ static_cast<ev_timer *>(this));
}
};
EV_END_WATCHER (timer, timer)
#if EV_PERIODICS
EV_DECLARE_WATCHER (periodic, periodic)
EV_BEGIN_WATCHER (periodic, periodic)
void set (ev_tstamp at, ev_tstamp interval = 0.)
{
int active = is_active ();
@ -208,19 +216,19 @@ namespace ev {
{
ev_periodic_again (EV_A_ static_cast<ev_periodic *>(this));
}
};
EV_END_WATCHER (periodic, periodic)
#endif
EV_DECLARE_WATCHER (idle, idle)
};
EV_BEGIN_WATCHER (idle, idle)
EV_END_WATCHER (idle, idle)
EV_DECLARE_WATCHER (prepare, prepare)
};
EV_BEGIN_WATCHER (prepare, prepare)
EV_END_WATCHER (prepare, prepare)
EV_DECLARE_WATCHER (check, check)
};
EV_BEGIN_WATCHER (check, check)
EV_END_WATCHER (check, check)
EV_DECLARE_WATCHER (sig, signal)
EV_BEGIN_WATCHER (sig, signal)
void set (int signum)
{
int active = is_active ();
@ -234,9 +242,9 @@ namespace ev {
set (signum);
start ();
}
};
EV_END_WATCHER (sig, signal)
EV_DECLARE_WATCHER (child, child)
EV_BEGIN_WATCHER (child, child)
void set (int pid)
{
int active = is_active ();
@ -250,10 +258,10 @@ namespace ev {
set (pid);
start ();
}
};
EV_END_WATCHER (child, child)
#undef EV_CONSTRUCT
#undef EV_DECLARE_WATCHER
#undef EV_BEGIN_WATCHER
}
#endif