waitcallback.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003  -------------------
00004  cvs         : $Id: waitcallback.h 827 2005-08-09 15:04:05Z aquamaniac $
00005  begin       : Sat Jan 17 2004
00006  copyright   : (C) 2004 by Martin Preuss
00007  email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *                                                                         *
00011  *   This library is free software; you can redistribute it and/or         *
00012  *   modify it under the terms of the GNU Lesser General Public            *
00013  *   License as published by the Free Software Foundation; either          *
00014  *   version 2.1 of the License, or (at your option) any later version.    *
00015  *                                                                         *
00016  *   This library is distributed in the hope that it will be useful,       *
00017  *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
00018  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU     *
00019  *   Lesser General Public License for more details.                       *
00020  *                                                                         *
00021  *   You should have received a copy of the GNU Lesser General Public      *
00022  *   License along with this library; if not, write to the Free Software   *
00023  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,                 *
00024  *   MA  02111-1307  USA                                                   *
00025  *                                                                         *
00026  ***************************************************************************/
00027 
00028 
00029 #ifndef GWEN_WAIT_CALLBACK_H
00030 #define GWEN_WAIT_CALLBACK_H
00031 
00032 #include <gwenhywfar/gwenhywfarapi.h>
00033 #include <gwenhywfar/inherit.h>
00034 #include <gwenhywfar/misc.h>
00035 #include <gwenhywfar/logger.h>
00036 
00037 #ifdef __cplusplus
00038 extern "C" {
00039 #endif
00040 typedef struct GWEN_WAITCALLBACK GWEN_WAITCALLBACK;
00041 GWEN_LIST_FUNCTION_LIB_DEFS(GWEN_WAITCALLBACK, GWEN_WaitCallback, GWENHYWFAR_API)
00042 GWEN_INHERIT_FUNCTION_LIB_DEFS(GWEN_WAITCALLBACK, GWENHYWFAR_API)
00043 /* No trailing semicolon here because this is a macro call */
00044 #ifdef __cplusplus
00045 }
00046 #endif
00047 
00048 
00049 #include <gwenhywfar/types.h>
00050 
00051 
00052 #ifdef __cplusplus
00053 extern "C" {
00054 #endif
00055 
00075 
00076 
00077 #include <time.h>
00078 
00084 #define GWEN_WAITCALLBACK_PROGRESS_NONE \
00085   ((GWEN_TYPE_UINT64)(-1))
00086 
00090 #define GWEN_WAITCALLBACK_PROGRESS_ONE \
00091   ((GWEN_TYPE_UINT64)(-2))
00092 
00093 
00100 #define GWEN_WAITCALLBACK_LEVEL_REUSED 9999
00101 
00107 #define GWEN_WAITCALLBACK_FLAGS_NO_REUSE    0x00000001
00108 
00113 #define GWEN_WAITCALLBACK_FLAGS_IMMEDIATELY 0x00000002
00114 
00115 
00121 #define GWEN_WAITCALLBACK_ID_SIMPLE_PROGRESS \
00122   "GWEN_WAITCALLBACK_ID_SIMPLE_PROGRESS"
00123 
00124 
00129 #define GWEN_WAITCALLBACK_ID_FAST \
00130   "GWEN_WAITCALLBACK_ID_FAST"
00131 
00132 
00133 
00137 typedef enum {
00139   GWEN_WaitCallbackResult_Continue=0,
00141   GWEN_WaitCallbackResult_Abort
00142 } GWEN_WAITCALLBACK_RESULT;
00143 
00144 
00149 
00161 typedef
00162   GWEN_WAITCALLBACK_RESULT
00163   (*GWEN_WAITCALLBACK_CHECKABORTFN)(GWEN_WAITCALLBACK *ctx,
00164                                     unsigned int level);
00165 
00166 
00174 typedef
00175   GWEN_WAITCALLBACK*
00176   (*GWEN_WAITCALLBACK_INSTANTIATEFN)(GWEN_WAITCALLBACK *ctx);
00177 
00178 
00193 typedef
00194   void
00195   (*GWEN_WAITCALLBACK_LOGFN)(GWEN_WAITCALLBACK *ctx,
00196                              unsigned int level,
00197                              GWEN_LOGGER_LEVEL loglevel,
00198                              const char *s);
00206 
00212 GWENHYWFAR_API
00213   GWEN_WAITCALLBACK_RESULT GWEN_WaitCallback();
00214 
00215 GWENHYWFAR_API
00216 void GWEN_WaitCallback_free(GWEN_WAITCALLBACK *ctx);
00217 
00224 GWENHYWFAR_API
00225   GWEN_WAITCALLBACK_RESULT GWEN_WaitCallbackProgress(GWEN_TYPE_UINT64 pos);
00226 
00227 
00232 GWENHYWFAR_API
00233   void GWEN_WaitCallback_Enter_u(const char *id,
00234                                  const char *file,
00235                                  int line);
00236 
00241 GWENHYWFAR_API
00242   void GWEN_WaitCallback_EnterWithText_u(const char *id,
00243                                          const char *txt,
00244                                          const char *units,
00245                                          GWEN_TYPE_UINT32 flags,
00246                                          const char *file,
00247                                          int line);
00248 
00258 #define GWEN_WaitCallback_Enter(id) \
00259   GWEN_WaitCallback_Enter_u(id, __FILE__, __LINE__)
00260 
00261 
00268 #define GWEN_WaitCallback_EnterWithText(id, txt, units, flags) \
00269   GWEN_WaitCallback_EnterWithText_u(id, txt, units, flags, __FILE__, __LINE__)
00270 
00271 
00276 GWENHYWFAR_API
00277   void GWEN_WaitCallback_Leave();
00278 
00283 GWENHYWFAR_API
00284   void GWEN_WaitCallback_Log(GWEN_LOGGER_LEVEL logLevel,
00285                              const char *s);
00293 
00301 GWENHYWFAR_API
00302   void GWEN_WaitCallback_SetProgressTotal(GWEN_TYPE_UINT64 total);
00303 
00309 GWENHYWFAR_API
00310   void GWEN_WaitCallback_SetProgressPos(GWEN_TYPE_UINT64 pos);
00311 
00319 GWENHYWFAR_API
00320   int GWEN_WaitCallback_GetDistance(const GWEN_WAITCALLBACK *ctx);
00321 
00326 GWENHYWFAR_API
00327 int GWEN_WaitCallback_GetNestingLevel(const GWEN_WAITCALLBACK *ctx);
00328 
00329 
00334 GWENHYWFAR_API
00335 GWEN_TYPE_UINT32 GWEN_WaitCallback_GetFlags(const GWEN_WAITCALLBACK *ctx);
00336 
00340 GWENHYWFAR_API
00341   int GWEN_WaitCallback_Register(GWEN_WAITCALLBACK *ctx);
00342 
00343 GWENHYWFAR_API
00344   int GWEN_WaitCallback_Unregister(GWEN_WAITCALLBACK *ctx);
00345 
00346 
00347 #if (defined(GWEN_EXTEND_WAITCALLBACK) || defined(DOXYGEN))
00348 
00353 
00354 GWENHYWFAR_API
00355   const char *GWEN_WaitCallback_GetId(const GWEN_WAITCALLBACK *ctx);
00356 
00361 GWENHYWFAR_API
00362   GWEN_WAITCALLBACK *GWEN_WaitCallback_new(const char *id);
00363 
00370 GWENHYWFAR_API
00371   GWEN_TYPE_UINT64
00372   GWEN_WaitCallback_GetProgressPos(const GWEN_WAITCALLBACK *ctx);
00373 
00380 GWENHYWFAR_API
00381   GWEN_TYPE_UINT64
00382   GWEN_WaitCallback_GetProgressTotal(const GWEN_WAITCALLBACK *ctx);
00383 
00387 GWENHYWFAR_API
00388   const char *GWEN_WaitCallback_GetText(const GWEN_WAITCALLBACK *ctx);
00389 
00393 GWENHYWFAR_API
00394   const char *GWEN_WaitCallback_GetUnits(const GWEN_WAITCALLBACK *ctx);
00395 
00399 GWENHYWFAR_API
00400   void
00401   GWEN_WaitCallback_SetCheckAbortFn(GWEN_WAITCALLBACK *ctx,
00402                                     GWEN_WAITCALLBACK_CHECKABORTFN fn);
00403 
00407 GWENHYWFAR_API
00408   void
00409   GWEN_WaitCallback_SetInstantiateFn(GWEN_WAITCALLBACK *ctx,
00410                                      GWEN_WAITCALLBACK_INSTANTIATEFN fn);
00411 
00415 GWENHYWFAR_API
00416   void
00417   GWEN_WaitCallback_SetLogFn(GWEN_WAITCALLBACK *ctx,
00418                              GWEN_WAITCALLBACK_LOGFN fn);
00419 
00424 GWENHYWFAR_API
00425   time_t GWEN_WaitCallback_LastCalled(const GWEN_WAITCALLBACK *ctx);
00426 
00427 
00432 GWENHYWFAR_API
00433   time_t GWEN_WaitCallback_LastEntered(const GWEN_WAITCALLBACK *ctx);
00434 
00435 
00441 GWENHYWFAR_API
00442   void GWEN_WaitCallback_SetDistance(GWEN_WAITCALLBACK *ctx,
00443                                      int d);
00446 #endif
00447 
00448 
00452 #ifdef __cplusplus
00453 }
00454 #endif
00455 
00456 
00457 #endif
00458 

Generated on Thu Nov 9 22:06:49 2006 for gwenhywfar by  doxygen 1.5.1