1 /* 2 * This file is part of gtkD. 3 * 4 * gtkD is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU Lesser General Public License 6 * as published by the Free Software Foundation; either version 3 7 * of the License, or (at your option) any later version, with 8 * some exceptions, please read the COPYING file. 9 * 10 * gtkD is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with gtkD; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110, USA 18 */ 19 20 // generated automatically - do not change 21 // find conversion definition on APILookup.txt 22 // implement new conversion functionalities on the wrap.utils pakage 23 24 25 module glib.Timer; 26 27 private import glib.ConstructionException; 28 private import gtkc.glib; 29 public import gtkc.glibtypes; 30 31 32 /** 33 * Opaque datatype that records a start time. 34 */ 35 public class Timer 36 { 37 /** the main Gtk struct */ 38 protected GTimer* gTimer; 39 40 /** Get the main Gtk struct */ 41 public GTimer* getTimerStruct() 42 { 43 return gTimer; 44 } 45 46 /** the main Gtk struct as a void* */ 47 protected void* getStruct() 48 { 49 return cast(void*)gTimer; 50 } 51 52 /** 53 * Sets our main struct and passes it to the parent class. 54 */ 55 public this (GTimer* gTimer) 56 { 57 this.gTimer = gTimer; 58 } 59 60 61 /** 62 * Resumes a timer that has previously been stopped with 63 * g_timer_stop(). g_timer_stop() must be called before using this 64 * function. 65 * 66 * Since: 2.4 67 */ 68 public void continu() 69 { 70 g_timer_continue(gTimer); 71 } 72 73 /** 74 * Destroys a timer, freeing associated resources. 75 */ 76 public void destroy() 77 { 78 g_timer_destroy(gTimer); 79 } 80 81 /** 82 * If @timer has been started but not stopped, obtains the time since 83 * the timer was started. If @timer has been stopped, obtains the 84 * elapsed time between the time it was started and the time it was 85 * stopped. The return value is the number of seconds elapsed, 86 * including any fractional part. The @microseconds out parameter is 87 * essentially useless. 88 * 89 * Params: 90 * microseconds = return location for the fractional part of seconds 91 * elapsed, in microseconds (that is, the total number 92 * of microseconds elapsed, modulo 1000000), or %NULL 93 * 94 * Return: seconds elapsed as a floating point value, including any 95 * fractional part. 96 */ 97 public double elapsed(gulong* microseconds) 98 { 99 return g_timer_elapsed(gTimer, microseconds); 100 } 101 102 /** 103 * This function is useless; it's fine to call g_timer_start() on an 104 * already-started timer to reset the start time, so g_timer_reset() 105 * serves no purpose. 106 */ 107 public void reset() 108 { 109 g_timer_reset(gTimer); 110 } 111 112 /** 113 * Marks a start time, so that future calls to g_timer_elapsed() will 114 * report the time since g_timer_start() was called. g_timer_new() 115 * automatically marks the start time, so no need to call 116 * g_timer_start() immediately after creating the timer. 117 */ 118 public void start() 119 { 120 g_timer_start(gTimer); 121 } 122 123 /** 124 * Marks an end time, so calls to g_timer_elapsed() will return the 125 * difference between this end time and the start time. 126 */ 127 public void stop() 128 { 129 g_timer_stop(gTimer); 130 } 131 132 /** 133 * Creates a new timer, and starts timing (i.e. g_timer_start() is 134 * implicitly called for you). 135 * 136 * Return: a new #GTimer. 137 * 138 * Throws: ConstructionException GTK+ fails to create the object. 139 */ 140 public this() 141 { 142 auto p = g_timer_new(); 143 144 if(p is null) 145 { 146 throw new ConstructionException("null returned by new"); 147 } 148 149 this(cast(GTimer*) p); 150 } 151 }