ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/ev++.h
(Generate patch)

Comparing libev/ev++.h (file contents):
Revision 1.56 by root, Thu Oct 28 04:55:19 2010 UTC vs.
Revision 1.63 by root, Fri Dec 1 06:37:30 2017 UTC

4 * Copyright (c) 2007,2008,2010 Marc Alexander Lehmann <libev@schmorp.de> 4 * Copyright (c) 2007,2008,2010 Marc Alexander Lehmann <libev@schmorp.de>
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without modifica- 7 * Redistribution and use in source and binary forms, with or without modifica-
8 * tion, are permitted provided that the following conditions are met: 8 * tion, are permitted provided that the following conditions are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright notice, 10 * 1. Redistributions of source code must retain the above copyright notice,
11 * this list of conditions and the following disclaimer. 11 * this list of conditions and the following disclaimer.
12 * 12 *
13 * 2. Redistributions in binary form must reproduce the above copyright 13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the 14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution. 15 * documentation and/or other materials provided with the distribution.
16 * 16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER- 18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MER-
19 * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 19 * CHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
20 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE- 20 * EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPE-
21 * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 21 * CIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
173 return this->EV_AX == EV_A; 173 return this->EV_AX == EV_A;
174 } 174 }
175 175
176 bool operator != (const EV_P) const throw () 176 bool operator != (const EV_P) const throw ()
177 { 177 {
178 return (*this == EV_A); 178 return ! (*this == EV_A);
179 } 179 }
180 180
181 operator struct ev_loop * () const throw () 181 operator struct ev_loop * () const throw ()
182 { 182 {
183 return EV_AX; 183 return EV_AX;
284 } 284 }
285 285
286 template<class K, void (K::*method)(int)> 286 template<class K, void (K::*method)(int)>
287 static void method_thunk (int revents, void *arg) 287 static void method_thunk (int revents, void *arg)
288 { 288 {
289 static_cast<K *>(arg)->*method 289 (static_cast<K *>(arg)->*method)
290 (revents); 290 (revents);
291 } 291 }
292 292
293 // no-argument method callback 293 // no-argument method callback
294 template<class K, void (K::*method)()> 294 template<class K, void (K::*method)()>
298 } 298 }
299 299
300 template<class K, void (K::*method)()> 300 template<class K, void (K::*method)()>
301 static void method_noargs_thunk (int revents, void *arg) 301 static void method_noargs_thunk (int revents, void *arg)
302 { 302 {
303 static_cast<K *>(arg)->*method 303 (static_cast<K *>(arg)->*method)
304 (); 304 ();
305 } 305 }
306 306
307 // simpler function callback 307 // simpler function callback
308 template<void (*cb)(int)> 308 template<void (*cb)(int)>
511 return ev_is_pending (static_cast<const ev_watcher *>(this)); 511 return ev_is_pending (static_cast<const ev_watcher *>(this));
512 } 512 }
513 513
514 void feed_event (int revents) throw () 514 void feed_event (int revents) throw ()
515 { 515 {
516 ev_feed_event (EV_A_ static_cast<const ev_watcher *>(this), revents); 516 ev_feed_event (EV_A_ static_cast<ev_watcher *>(this), revents);
517 } 517 }
518 }; 518 };
519 519
520 inline tstamp now () throw () 520 inline tstamp now (EV_P) throw ()
521 { 521 {
522 return ev_time (); 522 return ev_now (EV_A);
523 } 523 }
524 524
525 inline void delay (tstamp interval) throw () 525 inline void delay (tstamp interval) throw ()
526 { 526 {
527 ev_sleep (interval); 527 ev_sleep (interval);
550 inline unsigned int embeddable_backends () throw () 550 inline unsigned int embeddable_backends () throw ()
551 { 551 {
552 return ev_embeddable_backends (); 552 return ev_embeddable_backends ();
553 } 553 }
554 554
555 inline void set_allocator (void *(*cb)(void *ptr, long size)) throw () 555 inline void set_allocator (void *(*cb)(void *ptr, long size) throw ()) throw ()
556 { 556 {
557 ev_set_allocator (cb); 557 ev_set_allocator (cb);
558 } 558 }
559 559
560 inline void set_syserr_cb (void (*cb)(const char *msg)) throw () 560 inline void set_syserr_cb (void (*cb)(const char *msg) throw ()) throw ()
561 { 561 {
562 ev_set_syserr_cb (cb); 562 ev_set_syserr_cb (cb);
563 } 563 }
564 564
565 #if EV_MULTIPLICITY 565 #if EV_MULTIPLICITY
573 () throw () \ 573 () throw () \
574 { \ 574 { \
575 } 575 }
576 #endif 576 #endif
577 577
578 /* using a template here would require quite a bit more lines, 578 /* using a template here would require quite a few more lines,
579 * so a macro solution was chosen */ 579 * so a macro solution was chosen */
580 #define EV_BEGIN_WATCHER(cppstem,cstem) \ 580 #define EV_BEGIN_WATCHER(cppstem,cstem) \
581 \ 581 \
582 struct cppstem : base<ev_ ## cstem, cppstem> \ 582 struct cppstem : base<ev_ ## cstem, cppstem> \
583 { \ 583 { \
762 EV_END_WATCHER (check, check) 762 EV_END_WATCHER (check, check)
763 #endif 763 #endif
764 764
765 #if EV_EMBED_ENABLE 765 #if EV_EMBED_ENABLE
766 EV_BEGIN_WATCHER (embed, embed) 766 EV_BEGIN_WATCHER (embed, embed)
767 void set (struct ev_loop *embedded_loop) throw () 767 void set_embed (struct ev_loop *embedded_loop) throw ()
768 { 768 {
769 int active = is_active (); 769 int active = is_active ();
770 if (active) stop (); 770 if (active) stop ();
771 ev_embed_set (static_cast<ev_embed *>(this), embedded_loop); 771 ev_embed_set (static_cast<ev_embed *>(this), embedded_loop);
772 if (active) start (); 772 if (active) start ();

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines