]> git.llucax.com Git - software/libev.git/blobdiff - ev++.h
*** empty log message ***
[software/libev.git] / ev++.h
diff --git a/ev++.h b/ev++.h
index 82b65b9453f656e687e736306e90fe842e7d76e7..f33592653913717b78e1c7362c95bd8d1eb9f9ab 100644 (file)
--- a/ev++.h
+++ b/ev++.h
@@ -1,7 +1,7 @@
 #ifndef EVPP_H__
 #define EVPP_H__
 
-/* work in progress, don't use unless you know what you are doing */
+#include "ev.h"
 
 namespace ev {
 
@@ -44,8 +44,6 @@ namespace ev {
     }
   };
 
-  #include "ev.h"
-
   enum {
     UNDEF    = EV_UNDEF,
     NONE     = EV_NONE,
@@ -54,10 +52,13 @@ namespace ev {
     TIMEOUT  = EV_TIMEOUT,
     PERIODIC = EV_PERIODIC,
     SIGNAL   = EV_SIGNAL,
+    CHILD    = EV_CHILD,
+    STAT     = EV_STAT,
     IDLE     = EV_IDLE,
     CHECK    = EV_CHECK,
     PREPARE  = EV_PREPARE,
-    CHILD    = EV_CHILD,
+    FORK     = EV_FORK,
+    EMBED    = EV_EMBED,
     ERROR    = EV_ERROR,
   };
 
@@ -195,7 +196,7 @@ namespace ev {
     }
   EV_END_WATCHER (timer, timer)
 
-  #if EV_PERIODICS
+  #if EV_PERIODIC_ENABLE
   EV_BEGIN_WATCHER (periodic, periodic)
     void set (ev_tstamp at, ev_tstamp interval = 0.)
     {
@@ -218,15 +219,6 @@ namespace ev {
   EV_END_WATCHER (periodic, periodic)
   #endif
 
-  EV_BEGIN_WATCHER (idle, idle)
-  EV_END_WATCHER (idle, idle)
-
-  EV_BEGIN_WATCHER (prepare, prepare)
-  EV_END_WATCHER (prepare, prepare)
-
-  EV_BEGIN_WATCHER (check, check)
-  EV_END_WATCHER (check, check)
-
   EV_BEGIN_WATCHER (sig, signal)
     void set (int signum)
     {
@@ -259,8 +251,73 @@ namespace ev {
     }
   EV_END_WATCHER (child, child)
 
+  #if EV_STAT_ENABLE
+  EV_BEGIN_WATCHER (stat, stat)
+    void set (const char *path, ev_tstamp interval = 0.)
+    {
+      int active = is_active ();
+      if (active) stop ();
+      ev_stat_set (static_cast<ev_stat *>(this), path, interval);
+      if (active) start ();
+    }
+
+    void start (const char *path, ev_tstamp interval = 0.)
+    {
+      set (path, interval);
+      start ();
+    }
+
+    void update ()
+    {
+      ev_stat_stat (EV_A_ static_cast<ev_stat *>(this));
+    }
+  EV_END_WATCHER (stat, stat)
+  #endif
+
+  EV_BEGIN_WATCHER (idle, idle)
+    void set () { }
+  EV_END_WATCHER (idle, idle)
+
+  EV_BEGIN_WATCHER (prepare, prepare)
+    void set () { }
+  EV_END_WATCHER (prepare, prepare)
+
+  EV_BEGIN_WATCHER (check, check)
+    void set () { }
+  EV_END_WATCHER (check, check)
+
+  #if EV_EMBED_ENABLE
+  EV_BEGIN_WATCHER (embed, embed)
+    void set (struct ev_loop *loop)
+    {
+      int active = is_active ();
+      if (active) stop ();
+      ev_embed_set (static_cast<ev_embed *>(this), loop);
+      if (active) start ();
+    }
+
+    void start (struct ev_loop *embedded_loop)
+    {
+      set (embedded_loop);
+      start ();
+    }
+
+    void sweep ()
+    {
+      ev_embed_sweep (EV_A_ static_cast<ev_embed *>(this));
+    }
+  EV_END_WATCHER (embed, embed)
+  #endif
+
+  #if EV_FORK_ENABLE
+  EV_BEGIN_WATCHER (fork, fork)
+    void set () { }
+  EV_END_WATCHER (fork, fork)
+  #endif
+
   #undef EV_CONSTRUCT
   #undef EV_BEGIN_WATCHER
+  #undef EV_END_WATCHER
 }
 
 #endif