]> git.llucax.com Git - software/libev.git/blobdiff - ev++.h
update c++ if
[software/libev.git] / ev++.h
diff --git a/ev++.h b/ev++.h
index 82b65b9453f656e687e736306e90fe842e7d76e7..9d0df26c9e1d74ea722d95daa9503cf912662ed5 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,
@@ -195,7 +193,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 +216,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 +248,67 @@ 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
+
   #undef EV_CONSTRUCT
   #undef EV_BEGIN_WATCHER
+  #undef EV_END_WATCHER
 }
 
 #endif