VR-Forces 4.0.4 Class Documentation
include/vrfutil/callbackList.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2006 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: callbackList.h,v $ $Revision: 1.4 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #ifndef callbackList_h
00015 #define callbackList_h
00016 
00017 #include "vrfutil/vrfutilDefines.h"
00018 #include <list>
00019 #include "vrfutil/vrfutilDefines.h"
00020 
00030 template <typename T_CallbackArg>
00031 class DtCallbackList
00032 {
00033 public:
00035    typedef void (*DtCallbackFunctionType)(T_CallbackArg, void*);
00036 
00037    DtCallbackList();
00038    DtCallbackList(const DtCallbackList& orig);
00039    ~DtCallbackList();
00040    DtCallbackList& operator=(const DtCallbackList& orig);
00041 
00045    void addCallback(DtCallbackFunctionType fcn, void* usrData);
00048    void removeCallback(DtCallbackFunctionType fcn, void* usrData);
00049 
00052    void invokeCallbacks(T_CallbackArg arg);
00053 
00055    void removeAll();
00056 
00057 protected:
00058    typedef std::pair<DtCallbackFunctionType, void*> DtCallbackInfoType;
00059    typedef std::list<DtCallbackInfoType> DtCallbackListType;
00060 
00063    bool contains(const DtCallbackListType& callbackList,
00064       DtCallbackFunctionType fcn, void* usrData) const;
00065 
00066 protected:
00067    DtCallbackListType myCallbackList;
00070    bool myInvokingCallbacks;
00074    DtCallbackListType myCallbacksToRemove;
00075 };
00076 
00082 class DT_DLL_vrfutil DtNoArgumentCallbackList
00083 {
00084 public:
00086    typedef void (*DtCallbackFunctionType)(void*);
00087 
00088    DtNoArgumentCallbackList();
00089    DtNoArgumentCallbackList(const DtNoArgumentCallbackList& orig);
00090    ~DtNoArgumentCallbackList();
00091    DtNoArgumentCallbackList& operator=(const DtNoArgumentCallbackList& orig);
00092 
00096    void addCallback(DtCallbackFunctionType fcn, void* usrData);
00099    void removeCallback(DtCallbackFunctionType fcn, void* usrData);
00100 
00103    void invokeCallbacks();
00104 
00106    void removeAll();
00107 
00108 protected:
00109    typedef std::pair<DtCallbackFunctionType, void*> DtCallbackInfoType;
00110    typedef std::list<DtCallbackInfoType> DtCallbackListType;
00111 
00114    bool contains(const DtCallbackListType& callbackList,
00115       DtCallbackFunctionType fcn, void* usrData) const;
00116 
00117 protected:
00118    DtCallbackListType myCallbackList;
00121    bool myInvokingCallbacks;
00125    DtCallbackListType myCallbacksToRemove;
00126 };
00127 
00128 #define callbackList_inl_
00129 #include "vrfutil/callbackList.inl"
00130 #undef  callbackList_inl_
00131 
00132 #endif
00133 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)